cd /news/ai-agents/594-kb-to-orbit-a-browser-for-ai-age… Β· home β€Ί topics β€Ί ai-agents β€Ί article
[ARTICLE Β· art-143218] src=dev.to β†— pub= topic=ai-agents verified=true sentiment=↑ positive

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.

by read3 min views4 publishedOct 1, 2026

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.

cargo build --release
./target/release/navette serve --port 8765

./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

If you run agents locally, I'd genuinely love your feedback β€” especially the failure cases.

── more in #ai-agents 4 stories Β· sorted by recency
── more on @navette 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/594-kb-to-orbit-a-br…] indexed:0 read:3min 2026-10-01 Β· β€”