Mochi.js is a new open-source browser automation library built natively for the Bun runtime, designed to bypass detection mechanisms with relational consistency, native Chromium fetching, and behavioral synthesis.
Hi HN,<p>I’m sharing mochi.js (<a href="https://github.com/0xchasercat/mochi" rel="nofollow">https://github.com/0xchasercat/mochi</a>), a Bun-native, raw-CDP browser automation framework. It's designed to make programmatic browser use more effective by focusing on consistency and measured parity with regular traffic, purely from the JS layer, against stock Chromium.<p>The most common forms of browser automation focus heavily on client-side line by line probes, which are mostly cosmetic. This makes people feel better but it doesn't have much relevance to actual WAF or anti-automation defences.<p>Mochi.js focuses on what actually matters, allowing you to get past captchas, WAF's and most defence mechanisms. In fact, in some cases it actually outperforms chromium forks simply by virtue of not having to lie.<p>The foundation is built on a probe manifest based on analyzing several WAF's and trying to cover most of the ground that matters, and from there building upwards while ensuring every decision is backed by data. Solves turnstile/interstitial automatically, single digit fpjs suspect score, very good client-side results, though browserscan and a few others are known limitations that are fundamentally conflicting with what WAF's probe for.<p>I'll be here if anyone wants to discuss the details, check out the docs and github. It's completely free and open source, MIT, strictly no relationship to any proprietary products whatsoever. No affiliation to patched chromium forks, or SaaS.<p>But I also want to talk about why I built this, because the current paradigm of "bot detection" is fundamentally broken.<p>Traditionally they would probably try to label my repository a malicious tool, or at best, a grey hat one.<p>Let's take Turnstile for example, If you attach a debugger to see what data they are extracting from your hardware, their script intentionally self-destructs.
When they try to extract your data—acting as a guest on your silicon, using your electricity, without asking, the industry calls it "Security."<p>But if you write a script to control exactly what data your own hardware emits, refusing to provide the data they have no right to ask for, you are suddenly labeled a "Malicious Actor" engaged in "Bot Evasion."<p>I find it absurd we let ourselves put up with this, and the stance of the bot-evasion community only makes them feel more able to take a higher moral ground.<p>I have built a library that respects my hardware's reality. If that breaks your security model, that's because your security model relies on trespassing and secrecy. I stopped apologizing. Who's next?<p>Mochi is the exact opposite of WAF opacity. It is a glass box. It is MIT-licensed. The entire DAG, fingerprint manifest schema, harvesting process, is documented. We even commit our live benchmarks to the public record (mochi on a Linux datacenter IP scored a suspect_score: 8 and bot: not_detected against FingerprintJS Pro v4).<p>We don't even lie unnecessarily. We default to host-OS matching. If you run mochi on a Linux server, it uses privacy-sensible fingerprints for Linux, not Windows, because Linux is a real-user signal. It proves that WAFs aren't actually blocking what most people think they are, which begs the question of what they are really doing in that obfuscated payload.<p>The legitimacy argument is exactly how they captured the narrative. And nobody challenged it because the people on the other side were too busy acting like they were doing something wrong.<p>Is this a conspiracy theory? For sure, but only because they allow it to be. Try make a conspiracy theory about the sticky riceball.
# mochi.js
Source: [https://mochijs.com/](https://mochijs.com/)
Bun\-native · MIT · stock Chromium
## Sticky on the outside\. Untouchable on the inside\.
**mochi\.js**is a Bun\-native, raw\-CDP browser automation framework\. Pass a seed and a profile; get a relationally\-coherent fingerprint that survives a`getParameter\(0x9245\)`probe\. JIT\-friendly inject payload, Chromium\-native fetch \(real Chrome JA4 by definition\), behavioral synth on top of Bezier\+Fitts\. Leaves no crumbs\.
bun ≥ 1\.1macOS · Linux · WindowsMIT

five pillars
## Built for the strictest probes\.
Where Playwright and Puppeteer leave fingerprints, mochi\.js leaves nothing measurable\. Each pillar covers one class of detection\.
🧬
### Relational consistency engine
Every fingerprint surface — canvas, WebGL, audio, fonts, MediaDevices, WebGPU — derives from a single \(profile, seed\) pair through a 48\-rule DAG\. No Frankenstein fingerprints; a Mac UA never lands next to Linux WebGL\.
🌐
### Chromium\-native fetch
session\.fetch\(\) routes through Chromium itself via CDP — Network\.loadNetworkResource for simple GETs, page\.evaluate\('fetch'\) for non\-GET\. JA4/JA3/H2 are real Chrome by definition\. No parallel HTTP layer to keep in lockstep, no FFI to install\.
🎯
### Behavioral synthesis
humanClick / humanType / humanScroll synthesize from biomechanical models — Bezier paths with overshoot\+correction, Fitts\-law movement times, lognormal digraph delays\. Profile\-parameterized: hand, tremor, wpm, scrollStyle\.
📐
### Probe\-Manifest harness
Captured baselines from real devices live in the repo\. Every PR diffs the live session's Probe Manifest against the baseline; Zero\-Diff is a CI gate\. Intentional divergences live next to a written rationale\.
🍡
### One coherent stack
Replaces the usual hand\-stitched pipeline \(Patchright \+ fingerprint\-injector \+ Turnstile clicker \+ curl\-impersonate\) with one library that owns it end\-to\-end\. Bun\-only\. No Node, no Python sidecars, no proprietary bits\.
three\-line stealth
## Same Playwright muscle memory\. None of the crumbs\.
```
import { mochi } from "@mochi.js/core";
// boot a stealth browser in three lines
const session = await mochi.launch({
profile: "linux-chrome-stable",
seed: "user-12345",
});
const page = await session.newPage();
await page.goto("https://target.example/checkout");
console.log("UA:", session.profile.userAgent);
await session.close();
```
Nub is a fast all-in-one toolkit for Node.js that provides a Bun-like developer experience, including running TypeScript files, managing dependencies, and Node versions, all in one CLI tool written in Rust.
Intuned is a YC-backed tool that uses an AI agent to build, deploy, and maintain Playwright-based browser automations, handling scraping, RPA, and crawlers with built-in anti-detection and authentication.
Firefox is compiled to run in WebAssembly, using WebGL-based rendering and an experimental JS-to-WASM JIT, with web content proxied through a Puter-hosted Wisp server.
barebrowse is a tool that generates pruned ARIA snapshots from web pages, reducing token consumption for local AI models by stripping boilerplate and ads, and reusing existing browser cookies.