Newshot

Show HN: Browserr – An MCP-first browser for AI agents (one Rust binary)

Original text(via HN AI)

Everything an agent needs.

Built agent-first: extraction over pixels, stable refs over coordinates, failures you can catch instead of hangs. Three commitments shape the whole engine: it blocks when unsure, it hands the page to a human when a human is needed, and it leaves evidence for everything it did.

CommandCovers
readStructured page reads. Prose via read_page(), or read_structure(): every element with its rect and selector; fields carry label, constraints, state and validity.
actSelector interaction. click_element() and set_value() — real pointer events, React/Vue-safe writes.
waitSPA-aware timing. Wait for selectors and readiness — no sleeps, no flaky scripts.
observeConsole capture. Page messages and network errors arrive as events.
filesDownloads. Fetched straight to disk, without page cookies.
surviveFast failure, not hangs. A dead engine surfaces instantly; ephemeral profiles give every run a clean slate.
blockAdblock built in. EasyList-based, refreshed weekly.
gpuRendering. CPU by default — starts anywhere; --gpu opts into hardware. Screenshots on demand, per tab.
compatSPA-ready. React 18 and Vue 3 render and react; IntersectionObserver, IndexedDB, Web Animations, WebGL and WebGL2 (via ANGLE, no GPU needed), clipboard, DecompressionStream; requestIdleCallback and crypto.subtle digests via built-in shims where Servo omits them.
secureToken-gated attach. Unauthenticated sockets get nothing — not even events.
interceptFail-closed interception. Requests held for an allow / deny / respond decision; unanswered means denied after 5 s.
authChallenges surfaced, not swallowed. Auth and file-picker events; missing credentials fail closed.
evidenceNet evidence. Every fetch/XHR recorded in a ring buffer, in every frame.
framesFrame tree. List frames and walk same-origin ones; cross-origin frames report their url only.
fillForm filling. A whole form in one round trip, with type-aware writes.
submitSubmit and read the outcome. Runs the page's validation, then reports url, alerts and invalid fields.
pointShared references. Stable refs and numbered screenshot boxes: the agent says "click 7" and the human knows which one that is.
proxyUpstream proxy routing. browser_start(proxy=...) routes all http/https traffic through a CONNECT tunnel (basic auth in the URL, per-engine rotation); document_status reports the main document's real HTTP status so a block serving a fake 404 is distinguishable from a dead page.
handoffHumans take over in a real native window. Start MCP with headed:true; direct mouse and keyboard input keep working while agent mutations are paused. CAPTCHA support still depends on Servo compatibility.
trustFail-closed by design. Persistent profiles, evidence shots, an append-only action log, a credential store and a confirm gate on payment submits.

The entire protocol, in full.

JSON over loopback. One client, no hidden state — the opposite of CDP's 1000+ endpoints. Events:

Three ways in.

Same engine underneath; pick the integration you already have.

SurfaceCovers
mcpModel Context Protocol server with 42 tools, stdlib only. Any MCP-capable agent — Claude, Kai, your own — drives Browserr with zero integration code.
pythondriver.py wraps the raw protocol: navigation, extraction, form filling, screenshots. No dependencies.
rawAnything that can write JSON lines to a socket. Bindings in any language are an afternoon.

Where it sits in 2026.

Chromium wrappers are the default; alternative engines are the bet. Browserr's edge is the local, trust-first, human-in-the-loop.

BrowserrLightpandaObscuraChromium headless
engineServoown (Zig)own (Rust)Blink
js engineSpiderMonkeyownownV8
mcp-nativeyes, 42 toolsnopartialvia wrappers
protocol size22 commandsCDP-compatibleown + CDP1000+ endpoints
footprintone ~120 MB binary~16× less than Chromium~30 MB~200 MB+
web compatServo 0.8 (text, docs, forms, SPAs)growinggrowingfull
human handoffnative window, pause, wait_for_userheadless onlyheadless onlyvia wrappers
trust layerevidence, action log, confirm gatenonono
network policyfail-closed, held to a decisionCDP opt-inCDP opt-inCDP opt-in

Get Browserr in seconds.

One package per platform: the engine binary, Python SDK, and the MCP server.

Windows x64

Download the zip, unpack anywhere, and point your agent at the MCP server. CPU rendering works out of the box; pass --gpu for hardware rendering.

Linux x64 / ARM64

Download the tarball, unpack anywhere, and point your agent at the MCP server. Works headless without a GPU; ARM64 covers the Raspberry Pi 4/5.

macOS (Apple Silicon)

Download the tarball, unpack anywhere, and point your agent at the MCP server. Works headless out of the box.

Start driving the web with your agents.

Free, open source, no account, no telemetry. Runs on every machine.

The text above was extracted automatically from the source page and may miss images, tables or code blocks. The original is authoritative.

Published by HN AI
This site only summarises and aggregates; copyright stays with the original author. Headlines and summaries follow the source — where they differ, the original wins.
Read the original ↗