Browser automation CLI designed for AI agents. Compact text output minimizes context usage. 100% native Rust.
npm install -g agent-browser # all platforms
brew install agent-browser # macOS
agent-browser install # Download Chrome (first time)
npx agent-browser open example.com
Features# #
Agent-first: Compact text output uses fewer tokens than JSON, designed for AI context efficiency** Ref-based**: Snapshot returns accessibility tree with refs for deterministic element selection** Complete**: 50+ commands for navigation, forms, screenshots, network, storage, files, tabs, frames, and debugging** Observable**:Video recording,streaming,debugging,profiler, anddiffingtools are built inModern apps:Network control,React & Web Vitals,init scripts,Next.js + Vercel, andeve Extensionworkflows have first-class docsStateful:Sessions, profiles, auth state, cookies, storage, proxy, and security controls support long-running agents** Cross-platform**: macOS, Linux, Windows with native binaries
Works with# #
Claude Code, Cursor, GitHub Copilot, OpenAI Codex, Google Gemini, opencode, and any agent that can run shell commands.
Example# #
agent-browser open example.com
agent-browser snapshot -i
agent-browser click @e2
agent-browser screenshot page.png
agent-browser close
Why refs?# #
The snapshot
command returns a compact accessibility tree where each element has a unique ref like @e1
, @e2
. This provides:
Context-efficient: Text output uses ~200-400 tokens vs ~3000-5000 for full DOM** Deterministic**: Ref points to exact element from snapshot** Fast**: No DOM re-query needed** AI-friendly**: LLMs parse text output naturally
Architecture# #
Client-daemon architecture for optimal performance:
Rust CLI: Parses commands, communicates with daemon** Native Daemon**: Pure Rust daemon using direct CDP, manages Chrome via Chrome DevTools Protocol
The daemon starts automatically and persists between commands. By default, it saves configured restore state, closes its headless browser, and exits after one hour without commands or dashboard input. Without --restore
or another restore key, shutdown discards transient browser state and open tabs. Headed browsers, Safari and iOS WebDriver sessions, and user-attached browsers are exempt from the default timeout; provider-owned cloud browsers are not. Use --idle-timeout <time>
or AGENT_BROWSER_IDLE_TIMEOUT_MS
to tune the timeout, and use 0
to disable it.
Platforms# #
Native Rust binaries for macOS (ARM64, x64), Linux (ARM64, x64), and Windows (x64).