Skip to content

Repository files navigation

BeatBrowser — Fast JEV browser control for your signed-in Chrome

BeatBrowser

Let any MCP agent control your own Chrome — with full login state.

MCP server + Chrome extension. Normal tools for exploration. Optional Fast JEV for bounded speed. Same profile, cookies, and sessions. No clean browser. No remote desktop.

Website · Quick start · Compare · Live proof · Fast JEV guide


Why BeatBrowser

Browser control today usually splits two ways: products that reach your real login state but stay locked to one vendor, or open stacks that open a clean browser with none of your sessions.

BeatBrowser takes both:

  • Your daily Chrome — extension on the profile you already use
  • Any MCP agent — Claude Code, Cursor, OpenCode, Codex CLI, custom clients
  • Two modes, one browser — Normal (23 tools) and optional Fast JEV (typed decisions via BeatAPI JEV)

Fast JEV is an execution mode, not a second browser.

How it works

flowchart LR
  A[Your MCP agent] --> B[BeatBrowser MCP]
  B --> C[Local bridge]
  C --> D[Chrome extension]
  D --> E[Signed-in Chrome]

  subgraph Fast[Fast JEV optional]
    T[browser_task] --> J[BeatAPI JEV]
    J --> V[Validate · act · verify]
    V --> D
  end
Loading

Normal traffic stays local (MCP ↔ 127.0.0.1 ↔ extension). Fast JEV only sends bounded, redacted task/page state when you enable it and consent per task — never cookies, raw HTML, or screenshots. See PRIVACY.md.

Two modes, one browser

Normal Fast JEV
Interface 23 MCP tools browser_task / beat-browser run
Decides Your outer agent BeatAPI JEV over a finite action space
Browser Your signed-in Chrome Same Chrome
API key Not required Required for live JEV
Best for Explore, debug, odd pages Repeatable flows with clear success checks
On doubt Keep using any tool Stop; return to Normal or a human

Learn a site once in Normal, save notes, then run the path in Fast JEV.

How it compares

Same shape as the common browser-control matrix: checkmark plus a short note when it helps. ✅ yes · ⚠️ partial / setup-dependent · ❌ no. Directional against public docs — not a sponsorship claim or speed ranking.

BeatBrowser jev-ultrafast Claude in Chrome ChatGPT / Codex Playwright MCP chrome-devtools-mcp Browser Use
Daily Chrome + real login ✅ Extension on the profile you already use ⚠️ Harness / CDP; profile varies ⚠️ Extension / attach mode ⚠️ Remote debugging / DevTools attach ⚠️ Harness or remote Chromium
Any MCP agent ✅ MCP is the primary interface ❌ Python harness, not MCP-first ❌ Anthropic clients only ❌ OpenAI product surface ⚠️ Library; MCP not the default
No debug port / launch flags ✅ Load unpacked extension ❌ CDP / harness launch ⚠️ Extension mode can avoid it ❌ Needs DevTools / remote debugging ❌ Chromium or remote debugging
Explicit Normal explore tools ✅ 23 MCP browser tools ⚠️ JEV-centric loop ⚠️ Inside Claude only ⚠️ Inside ChatGPT / Codex ✅ Playwright APIs over MCP ✅ Low-level CDP / DevTools ✅ Agent tools in Python runtime
Optional Fast JEV typed loop ✅ Finite ops + targets; local validate / act / verify ✅ Core product loop ⚠️ Custom loops possible; not BeatAPI Fast JEV
Dual mode, one signed-in browser ✅ Normal and Fast JEV share cookies / sessions ❌ JEV-focused ❌ Single product loop ❌ Single product loop ❌ Playwright session model ❌ DevTools session model ⚠️ One runtime; no Normal+Fast split
Compounding site learnings ✅ Bundled notes + local ~/.beat-browser/learnings ⚠️ Project-specific ❌ Product memory only ⚠️ Product memory ⚠️ Exists; often off by default
Human handoff (captcha / pay / judgment) ✅ Handoff tool + stop-on-uncertain Fast path ⚠️ Depends on harness wiring ✅ Pauses for you ⚠️ Sensitive-action confirms ⚠️ Stronger in hosted / cloud setups

In short: Claude in Chrome and ChatGPT/Codex win inside their own products. Playwright MCP and chrome-devtools-mcp win for scripts, CI, and protocol work. jev-ultrafast is the typed-decision reference in the Browser Use stack. BeatBrowser is for when your agent needs your signed-in Chrome — with Normal tools and optional Fast JEV on the same profile.

Live proof

Same signed-in X account, three approved replies per mode, all confirmed via permanent status URLs.

Mode Verified Total Mean / reply
Normal 3/3 170.4 s 56.8 s
Fast JEV 3/3 36.2 s 12.1 s

Fast path was ~4.7× faster on this workload (10 JEV calls, ~68k input tokens, about $0.003 at BeatAPI JEV list pricing of $0.042 / 1M input tokens).

Narrow smoke test (n=3 per mode), not a general benchmark. Full evidence: TEST_RESULTS.md.

Quick start

Node.js 20+, Chrome, and an MCP-capable agent.

git clone https://github.com/BeatAPI/beat-browser.git
cd beat-browser
npm ci
node src/cli.js install
node src/cli.js doctor --json

Load the unpacked extension from node src/cli.js extension. Agent-led install: AGENT_INSTALL.md.

In a source checkout, use node src/cli.js where examples show beat-browser.

Normal mode

beat-browser mcp

23 tools: tabs, snapshots, clicks, typing, forms, network, screenshots, human handoff, learnings.

Fast JEV mode

Dry-run first (no browser or model call):

beat-browser run --dry-run \
  --url https://example.com \
  --goal 'Check that the Example Domain page is ready'

Live run (needs BEATAPI_API_KEY and explicit enable):

export BEATAPI_API_KEY='your-key-from-a-secret-manager'

beat-browser run --enable-fast-agent \
  --url https://example.com \
  --goal 'Check that the Example Domain heading is visible' \
  --max-steps 10 \
  --max-model-calls 20 \
  --timeout-ms 60000

Via MCP:

beat-browser mcp --enable-fast-agent

browser_task requires cloudConsent: true per task. Read the Fast JEV guide and PRIVACY.md first. JEV product page: beatapi.io/jev-api.

Why Fast JEV moves faster

signed-in Chrome
      │
      ▼
live DOM → legal operations + targets
      │
      ▼
one BeatAPI JEV request
      │
      ▼
local validate → act → verify

JEV never returns selectors, coordinates, shell, or JavaScript. The extension keeps the real DOM node, rechecks before acting, and stops on stale identity, domain drift, challenges, or uncertain side effects.

Learn once, reuse the path

  • Bundled: docs/learnings/
  • Local: ~/.beat-browser/learnings/ (not overwritten by upgrades)

Call learnings({ domain: "x.com" }) before a known site. If the page disagrees, trust the page, then save the corrected path. Learnings are hints — never credentials, cookies, or private drafts.

Limits

Fast JEV supports visible, enabled controls in the top-frame light DOM: click, exact text, native select, scroll, wait, done/blocked. Challenges, iframes, shadow DOM, canvas, uploads, and many custom widgets are out of scope; uncertain actions return control and are never auto-replayed.

Development

npm test
npm run check:syntax
npm run check:security
npm run build:extension
npm run benchmark:offline -- --iterations 3

License

MIT — see LICENSE.

About

Let any MCP agent control your signed-in Chrome. Normal tools + optional Fast JEV — same profile and sessions.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages