Amplifier · browser bundle

Eyes and Hands

Giving AI agents a real browser

Agents can read the web, but they can't use it

An agent's only tool is a fetch. web_fetch gives you HTML source — not a browser that renders, runs JavaScript, and sees.

So what happens when the page has no source worth reading?

web_fetch gives you HTML source agent-browser gives you a real browser with rendering, JavaScript, and screenshots
Full browser: real Chrome/Chromium not just HTTP requests
Interactive: click, fill, navigate like a user a fetch can do none of this

Modern apps render nothing to fetch

JavaScript-only SPAs, React apps, and auth walls hand a fetch empty or meaningless HTML. The real software lives exactly where fetch-and-parse breaks.

The agent needs to render the page, not just download it.

JavaScript handles dynamic pages, SPAs, React apps
Auth walls a raw fetch is stopped cold at the login screen
No hands fetch can't click, type, or see a rendered page

The browser bundle gives the agent a real Chrome

The Amplifier browser bundle (v0.3.0) wraps Vercel Labs' agent-browser — real Chrome/Chromium with rendering, JavaScript, screenshots, and user-like actions.

Reading becomes using. But a real DOM is expensive — how does it stay affordable?

Eyes rendered pages, screenshots (--full), PDF
Hands click, dblclick, fill, type, press, hover, check, select, upload
Read get text / value / html / attr / title / url

~10,000 tokens of DOM collapse into ~700

Instead of a full DOM tree, agent-browser emits a compact, deterministic element list. The agent acts on refs like @e1, @e2 — a 93% token cut versus Playwright MCP.

Cheap references make being-a-user affordable. Next: getting past the login.

~10,000
tokens per page — Playwright MCP DOM tree
~700
tokens per page — agent-browser snapshot
93%
token reduction vs Playwright MCP

Log in once, reuse — or run isolated states

By default browser state is ephemeral. Persistent profiles keep cookies, localStorage, and logins across sessions; session isolation runs multiple independent browser states.

The agent gets in where a raw fetch is stopped cold. Now: what does it see?

Persistent Profiles — --profile persists cookies / localStorage / logins across sessions
Session Isolation — --session multiple isolated browser states
Default state is ephemeral use --profile to make logins stick

Screenshots become structured UI, not just pixels

A companion computer-vision tool, amplifier-ux-analyzer (ramparte/amplifier-ux-analyzer), reads those screenshots: color palettes, layout regions, UI elements, and text via OCR.

The agent's eyes now yield validation. Which brings us to the point.

Color palettes
Layout regions
UI elements and controls
Text content with OCR

Being a user beats parsing HTML — at 1/14 the tokens

The agent stops parsing raw source and starts clicking, typing, and seeing rendered pages — for ~700 tokens a page instead of ~10,000, a 93% cut versus Playwright MCP.

Validation by being a user, at a fraction of the cost.

~700
tokens per page, being a user
93%
token cut vs Playwright MCP
100,000 → 7,000
tokens across a 10-step automation
The pattern to keep

Give an agent a real browser and cheap references, and it validates the software people actually use — not the HTML they don't.

Eyes and hands, plus token discipline, beats fetch-and-parse. The browser bundle is v0.3.0 at HEAD, documented across 8 markdown files totaling 2,724 lines, over 12 commits.

Sources

Research Methodology

Feature status: Active — v0.3.0 at HEAD

Repository: ramparte/amplifier-bundle-browser (default branch main) — wraps Vercel Labs agent-browser (Apache-2.0).

Data as of: HEAD commit 6b3abb9 (2026-02-02).

Research performed:

Primary contributor: Sam Schillace — author of all 11 substantive feat/fix/docs commits; the PR #1 merge commit (6b3abb9) is authored by ramparte, committed by GitHub. Initial commit co-authored by Amplifier.

Gaps: Token figures (~10,000 / ~700 / 93%) are the repo's own documented values, not independently benchmarked runs. The amplifier-ux-analyzer local checkout has a valid remote but an unpopulated HEAD, so its claims come from the browser bundle's own ux-analyzer-integration.md, not the external repo's source. Line-number citations are accurate to within ~2 lines.

More Amplifier Stories