AgentChrome
Give your AI agent browser superpowers.
AgentChrome is a native CLI tool that lets AI coding agents — especially Claude Code — control Chrome through the DevTools Protocol. Every command outputs structured JSON, uses accessibility-tree UIDs for element targeting, and returns typed exit codes for programmatic error handling. No Node.js, no Python, no MCP server — just a fast Rust binary your agent calls from the shell.
Give Claude Code Browser Powers in 2 Minutes
1. Install AgentChrome (see Installation for more options)
2. Drop the CLAUDE.md template into your project
3. Ask Claude Code to use the browser
"Check if the login form at localhost:3000 works correctly"
Behind the scenes, Claude Code will run commands like:
See the full Claude Code Integration Guide for workflows, efficiency tips, and error handling patterns.
Why AgentChrome?
Built for AI Agents
- JSON output by default — every command returns structured, parseable output
- Accessibility tree snapshots with UIDs —
page snapshotassigns stable UIDs (e.g.,s1,s5) to interactive elements for reliable targeting - Structured exit codes — 0 (success), 1 (general error), 2 (connection error), 3 (target error), 4 (timeout), 5 (protocol error) for programmatic error handling
- Self-documenting CLI —
agentchrome capabilitiesoutputs a machine-readable JSON manifest of every command, flag, and argument --include-snapshoton interactions — get the updated accessibility tree in the same response as a click or form fill, cutting round-trips in half
- Tab management — list, create, close, and activate browser tabs
- URL navigation — navigate to URLs, go back/forward, reload with wait strategies
- Page inspection — accessibility trees, text extraction, element search
- Screenshots — full-page, viewport, element, or region captures
- JavaScript execution — run scripts in page context, return results as JSON
- User interactions — click, hover, drag, type, press keys, scroll
- Form filling — fill inputs, select options, upload files, batch fill with
fill-many - Network monitoring — list, inspect, and follow requests in real time
- Console capture — read and follow console messages with type filtering
- Device emulation — mobile devices, network/CPU throttling, geolocation, color scheme
- Performance tracing — record traces, analyze insights, measure Core Web Vitals
- Dialog handling — accept, dismiss, or respond to alert/confirm/prompt dialogs
How It Works
graph LR
subgraph AgentChrome
A[CLI Layer<br/>clap] --> B[Command<br/>Dispatch] --> C[CDP Client<br/>WebSocket]
end
C -->|JSON-RPC| D[Chrome Browser<br/>DevTools Protocol]
AgentChrome communicates with Chrome using the Chrome DevTools Protocol (CDP) over WebSocket. Run agentchrome connect --launch --headless to start a session — subsequent commands reuse the connection automatically. Native Rust binary, <50ms startup, <10MB on disk.
Comparison
How AgentChrome stacks up for giving AI agents browser access:
| AgentChrome | Puppeteer / Playwright | Chrome DevTools MCP | |
|---|---|---|---|
| AI agent integration | CLI — works with any agent that runs shell commands | Requires JavaScript wrapper | MCP protocol (specific client required) |
| Runtime | No Node.js — native Rust binary | Node.js | Node.js |
| Install | Single binary, cargo install |
npm install |
npx |
| Interface | CLI / shell scripts | JavaScript API | MCP protocol |
| Startup time | < 50ms | ~500ms+ | Varies |
| Binary size | < 10 MB | ~100 MB+ (with deps) | Varies |
| Shell pipelines | First-class (` | jq, |
grep`) |
Installation
Cargo install
Pre-built binaries
Download the latest release for your platform from GitHub Releases.
# macOS (Apple Silicon)
| &&
# macOS (Intel)
| &&
# Linux (x86_64)
| &&
# Linux (ARM64)
| &&
# Binary is at target/release/agentchrome
Supported platforms
| Platform | Target | Archive |
|---|---|---|
| macOS (Apple Silicon) | aarch64-apple-darwin |
.tar.gz |
| macOS (Intel) | x86_64-apple-darwin |
.tar.gz |
| Linux (x86_64) | x86_64-unknown-linux-gnu |
.tar.gz |
| Linux (ARM64) | aarch64-unknown-linux-gnu |
.tar.gz |
| Windows (x86_64) | x86_64-pc-windows-msvc |
.zip |
CLI Quick Start
For shell scripting and manual use:
1. Install AgentChrome (see Installation above)
2. Start Chrome with remote debugging enabled:
# macOS
# Linux
# Or launch headless Chrome directly via AgentChrome:
3. Connect to Chrome:
4. Navigate to a URL:
5. Inspect the page:
Command Reference
| Command | Description |
|---|---|
connect |
Connect to or launch a Chrome instance |
tabs |
Tab management (list, create, close, activate) |
navigate |
URL navigation and history |
page |
Page inspection (screenshot, text, accessibility tree, find) |
dom |
DOM inspection and manipulation |
js |
JavaScript execution in page context |
console |
Console message reading and monitoring |
network |
Network request monitoring and interception |
interact |
Mouse, keyboard, and scroll interactions |
form |
Form input and submission |
emulate |
Device and network emulation |
perf |
Performance tracing and metrics |
dialog |
Browser dialog handling (alert, confirm, prompt, beforeunload) |
config |
Configuration file management (show, init, path) |
completions |
Generate shell completion scripts |
man |
Display man pages for AgentChrome commands |
Run agentchrome <command> --help for detailed usage, agentchrome examples <command> for practical examples, or agentchrome capabilities for the full machine-readable command manifest.
Usage Examples
# Get the accessibility tree with element UIDs
# Extract visible text content
# Find elements by text or role
# Snapshot to discover form field UIDs
# Fill multiple fields at once (returns updated snapshot)
# Or fill fields individually
# Click the submit button
# Viewport screenshot
# Full-page screenshot
# Run a JavaScript expression and get the result
# Run JavaScript from a file
Related Projects
- Chrome DevTools MCP — MCP server for browser automation via the Model Context Protocol. If you need MCP-based browser control rather than a CLI tool, check it out.
Contributing
All contributions must follow the NMG-SDLC workflow without deviation. NMG-SDLC is a BDD spec-driven development toolkit that enforces a structured delivery lifecycle: issue creation, specification writing, implementation, verification, and PR creation. Contributions that bypass the SDLC process will not be accepted.
Prerequisites
- Rust 1.85.0 or later (pinned via
rust-toolchain.toml) - Chrome or Chromium (for integration testing)
- Claude Code with the NMG-SDLC plugin installed
Build and test
# Build
# Run tests
# Lint
# Generate man pages
Code style
This project uses strict Clippy configuration (all = "deny", pedantic = "warn") and rustfmt with the 2024 edition. All warnings must be resolved before merging.
License
Licensed under either of MIT License or Apache License, Version 2.0 at your option.