594 KB to orbit: a browser for AI agents with no Chromium attached A developer built navette, a 594 KB Rust binary that drives the WebKit engine already shipped with the host OS instead of bundling headless Chromium, and exposes it to AI agents over MCP with nine tools including navigate, read, screenshot, click and type. Benchmarks on an M1 with 8 GB of RAM show a resident daemon cold start of 24–37 ms, navigate-to-readable-content in 8–11 ms, actions in 1–2 ms, 79 MB peak RAM and a 100-page crawl in 0.9–2.8 s, versus 216 MB install size and 536 MB peak RAM for Playwright plus Chromium. The project is open source on GitHub with a reproducible benchmark harness. Houston, we deleted Chromium: your agent's browser is 594 KB and ships with your OS. Full WebKit, MCP-native, resident at 24 ms. Houston, we deleted Chromium. Every AI agent that touches the web today drags the same luggage: headless Chromium . Playwright downloads ~400 MB of browser on every machine your agent touches. Cloud browser APIs Browserbase, Steel, Hyperbrowser rent you Chrome by the subscription — and your pages leave your machine. And all of this to do what an agent actually needs: open a page, read it, take a screenshot, click a button, fill a form. Meanwhile, your computer already ships a full browser engine . macOS has WebKit. Windows has WebView2 — which is Chromium, preinstalled. Linux has WebKitGTK. So I built navette French for shuttle : a single Rust binary that drives the WebView your OS already ships, and speaks MCP — the protocol agents already speak. 594 KB installed. No Chromium. No download. One binary, three modes: navette serve --port 8765 HTTP API on loopback navette mcp MCP stdio server for agent hosts navette install-daemon resident: warm from login Nine MCP tools: navigate , read , screenshot , click , type , evaluate , wait , sessions , session close . The screenshot comes back as MCP image content — your agent literally sees the page. Under the hood: a WKWebView per session living in a ghost window real pixels, parked off-screen so it renders but nobody sees it . Navigation completion is event-driven — I implemented WKNavigationDelegate in Rust with raw objc2 message sends, and the content extraction runs inside the didFinish callback, so a warm navigate + full markdown read costs 8 ms . Same machine M1, 8 GB , same corpus 100 local pages + 20 real URLs , reproducible with one command python3 navbench.py : | Metric | navette | Playwright + Chromium | Lightpanda | |---|---|---|---| | Install size | 0.6 MB | 216 MB | 80 MB | | Cold start resident daemon | 24–37 ms | n/a | ~320 ms boot / launch | | Cold start fresh process | 531–984 ms | 934–1539 ms | ~320 ms | | Navigate → readable content | 8–11 ms | 12–33 ms | 3–16 ms | | Act type + click | 1–2 ms | 33 ms | 18–204 ms | | Peak RAM process tree | 79 MB | 536 MB | 41 MB | | Crawl 100 pages | 0.9–2.8 s | 1.8–4.0 s | 0.9–2.6 s | | Real-web success 20 URLs | 95–100% | — | 85% | Two honest disclosures, because benchmark posts die without them: The claim I'll defend: nobody else combines 0.6 MB + 1 ms actions + a 0.9 s hundred-page crawl + full WebKit rendering + a resident 24 ms mode. I pointed the resident daemon at a login form and a research loop and let an agent drive through MCP only: "You logged into a secure area " , screenshot the authenticated page. Full walkthrough with the verbatim tool calls and screenshots is in demo/JOURNEY.md https://github.com/slabbdev/navette/blob/main/demo/JOURNEY.md . js cargo build --release ./target/release/navette serve --port 8765 or let your agent host own the lifecycle: ./target/release/navette mcp Register it in any MCP client ZCode example : { "mcp": { "servers": { "navette": { "command": "/path/to/navette", "args": "mcp" } } } } Then just talk to your agent: "open this dashboard, check if the deploy banner is there, screenshot it for me." Headless Chromium is the Postgres of web automation. navette is trying to be the embedded SQLite — the browser agents bring with them , for the fastest-growing half of the agent world: agents that run locally , on machines that already have an engine. Apple shipped a Safari MCP server for coding agents this year. The thesis is being validated from above. navette is it from below: tiny, open, cross-platform-bound. Repo, benchmarks and the reproducible harness: https://github.com/slabbdev/navette https://github.com/slabbdev/navette If you run agents locally, I'd genuinely love your feedback — especially the failure cases.