Browser automation for AI agents: open pages, read them as an accessibility tree, and act on elements from the shell.
agent-browser is a native Rust CLI that gives an AI agent a browser it can drive one command at a time. snapshot returns the page as compact text with a ref such as @e1 for each element. The agent acts on a ref, reads the page again to check the result, and repeats. The browser stays open between commands, so each step is one short shell call.
npm install -g agent-browser
agent-browser install # download Chrome for Testing (first time only)- Homebrew:
brew install agent-browser, thenagent-browser install. - Linux:
agent-browser install --with-depsalso installs the browser's system libraries. - No install:
npx agent-browser open example.com.
Project installs, building from source, upgrade, and doctor are covered in Installation.
agent-browser open example.com
agent-browser snapshot -i # interactive elements, each with a ref
agent-browser click @e1 # act on a ref from that snapshot
agent-browser get url # check the result
agent-browser closeThe snapshot for example.com:
- link "Learn more" [ref=e1]
- Refs describe the page at the time of the snapshot. After navigation or a DOM change, take a new snapshot before using refs again.
- CSS selectors, text, XPath, and semantic locators also work, for example
agent-browser find role button click --name "Submit". See Selectors. - A click fails, instead of reporting success, when the target is hidden, disabled, outside the viewport, or covered by another element such as a consent banner. Dismiss the covering element, take a new snapshot, and retry.
The full walkthrough is in the quick start.
The CLI sends each command to a background daemon that starts on the first command and controls the browser over the Chrome DevTools Protocol. Each --session gets its own daemon and browser. By default, the daemon closes a headless browser and exits after one hour without commands, saving state first when session persistence is configured.
Chrome for Testing is the default browser. You can also attach to a running Chrome with --cdp or --auto-connect (CDP mode), select the Lightpanda or Obscura engine with --engine, drive Mobile Safari in the iOS Simulator, or use a cloud browser provider such as Browserbase, Browserless, Browser Use, Kernel, or AgentCore.
The CLI ships skills that match its version:
agent-browser skills get core # the core loop, refs, waiting, and common workflows
agent-browser skills get core --ref commands # one reference, such as the full command list
agent-browser skills get core --full # adds the full command reference and templates
agent-browser skills list # specialized skills: electron, slack, dogfood, and moreInstall the discovery skill into an agent harness from skills.sh:
npx skills add vercel-labs/agent-browserThe installed skill is a thin stub that tells the agent to load agent-browser skills get core, so its instructions always match the installed CLI. Or add this to your AGENTS.md:
Use `agent-browser` for browser automation. Before the first use, run
`agent-browser skills get core` and follow it.For MCP clients, agent-browser mcp starts an MCP server over stdio. See MCP server.
Run agent-browser --help for the full list, or agent-browser <command> --help for one command.
| Group | Commands | Docs |
|---|---|---|
| Navigate and read | open, back, forward, reload, read, snapshot, get, is |
Core, Snapshots |
| Interact | click, dblclick, fill, type, press, keyboard, hover, focus, select, check, uncheck, scroll, drag, upload, mouse, find |
Core, Find elements |
| Wait | wait |
Wait |
| Capture | screenshot, pdf, record, download, diff |
Recording, Diffing, Files |
| Page and network state | cookies, storage, network, set, clipboard, eval, pushstate |
Network, Settings |
| Tabs, frames, and dialogs | tab, frame, dialog |
Tabs and frames |
| Debug and performance | console, errors, highlight, inspect, trace, profiler, vitals, react, a11y |
Debugging, Profiler, React |
| Sessions and auth | session, state, auth, profiles, confirm, deny |
Sessions, Security |
| Agents and integrations | skills, mcp, webmcp, chat, batch, plugin |
Skills, WebMCP, Plugins |
| Observe | stream, dashboard |
Streaming, Dashboard |
| Setup | install, upgrade, doctor, connect, close |
Installation |
Flags, environment variables, and agent-browser.json are documented in Configuration.
Native binaries ship for macOS (ARM64, x64), Linux (ARM64, x64, glibc and musl), and Windows (x64). The npm package picks the right binary for the host.
Building from source requires Node.js 24 or later, pnpm 11 or later, and Rust:
pnpm install
pnpm build:source # builds the dashboard and the native CLI
pnpm link --global
agent-browser installRun the Rust checks from cli/:
cargo fmt -- --check
cargo clippy
cargo test
cargo test e2e -- --ignored --test-threads=1 # launches real headless ChromeAGENTS.md lists the files to update with each change, the docs checks, and the release process.
- agent-browser.dev: introduction, guides, and reference
- Commands and Configuration
- Security: the auth vault, domain allowlists, action policies, and content boundaries
- Next.js and Vercel and eve: running agent-browser in Vercel Sandbox and eve agents
- Changelog
Apache-2.0