vercel-labs/agent-browser — a trending Rust project
Browser automation CLI for AI agents
vercel-labs/agent-browser — Rust · 45,608 stars · 3,136 forks · +132 today
Browser automation CLI for AI agents
agent-browser
#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.
Install
#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.
Quick start
#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 close
The 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.
How it works
#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.
For AI agents
#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 more
Install the discovery skill into an agent harness from skills.sh:
npx skills add vercel-labs/agent-browser
The 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.
Commands
#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, flow, 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.
Platforms
#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.
Development
#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 install
Run the Rust checks from cli/:
cargo fmt -- --check
cargo clippy
cargo test
cargo test e2e -- --ignored --test-threads=1 # launches real headless Chrome
AGENTS.md lists the files to update with each change, the docs checks, and the release process.
Documentation
#- 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
License
#Apache-2.0
Content above is the README of vercel-labs/agent-browser, reproduced from GitHub’s trending list. All rights remain with the original authors.
Newsletter
New posts in your inbox. Confirm by email, unsubscribe any time.
More in Rust Programming
View allmartin-olivier/airgorah — a trending Rust project
A WiFi security auditing software
via GitHub · 1 min
tokio-rs/topcoat — a trending Rust project
A batteries-included framework for building web apps
via GitHub · 3 min
astral-sh/ruff — a trending Rust project
An extremely fast Python linter and code formatter, written in Rust.
via GitHub · 2 min
Comments
Posting as a guest