PluginBench
Skill
Fail
Audit score 45

Agent Browser

am-will/codex-skills

Fast Rust-based headless browser automation for AI agents to navigate, click, type, and extract data from web pages.

What is Agent Browser?

Agent Browser is a CLI tool that enables AI agents to automate web interactions through structured commands. It provides a Rust-based implementation with Node.js fallback, supporting navigation, form filling, element interaction, and page snapshots with deterministic element references.

  • Navigate pages, go back/forward, reload, and wait for elements or network states
  • Click, type, fill forms, drag, upload files, and interact with checkboxes and dropdowns
  • Extract text, HTML, attributes, titles, URLs, and take screenshots or PDFs
  • Find elements by role, text, label, placeholder, alt text, testid, or CSS selector
  • Run multiple isolated browser sessions simultaneously
  • Use OAuth and logged-in sessions via Chrome profile connection or session persistence

How to install Agent Browser

npx skills add https://github.com/am-will/codex-skills --skill agent browser
Prerequisites
  • Node.js and npm installed
  • For Rust version: Rust toolchain (optional; Node.js fallback available)
  • For Chrome profile method: Google Chrome installed with remote debugging enabled
Claude Code
Cursor
Windsurf
Cline

How to use Agent Browser

  1. 1.Install globally: npm install -g agent-browser && agent-browser install
  2. 2.Open a URL: agent-browser open <url>
  3. 3.Take a snapshot to see page structure and element refs: agent-browser snapshot -i --json
  4. 4.Interact with elements using refs from snapshot: agent-browser click @e2 or agent-browser fill @e3 "text"
  5. 5.Extract data: agent-browser get text <selector> or agent-browser screenshot
  6. 6.For authenticated sessions: use --session flag or connect to Chrome profile via --cdp 9222

Use cases

Good for
  • Automating web form submission and data entry workflows
  • Extracting structured data from dynamic web pages
  • Testing web UI interactions programmatically
  • Logging into sites with OAuth and maintaining authenticated sessions
  • Taking screenshots and PDFs of web pages for documentation
Who it's for
  • AI agents and coding assistants automating web tasks
  • QA engineers testing web UIs programmatically
  • Data extraction and web scraping workflows
  • Developers building browser automation into agents

Agent Browser FAQ

How do I use my existing Chrome login sessions?

Launch Chrome with remote debugging (google-chrome --remote-debugging-port=9222), then connect agent-browser with --cdp 9222. Alternatively, use --session flag for first-time manual login, and cookies persist for future runs.

What are refs and how do I use them?

Refs (like @e2) are deterministic element identifiers from snapshots. Run snapshot to see available refs, then use them in commands like click @e2 or fill @e3 "value".

How do I run multiple browser instances?

Use the --session flag to create isolated browser instances: agent-browser --session agent1 open site-a.com and agent-browser --session agent2 open site-b.com.

What output format works best for AI agents?

Use --json flag for machine-readable output: agent-browser snapshot --json. The optimal workflow is navigate → snapshot -i --json → act with @refs → verify.

How do I wait for pages to load?

Use agent-browser wait with selectors, milliseconds, text, URL patterns, or network states: agent-browser wait <selector>, agent-browser wait 2000, or agent-browser wait --load networkidle.

Full instructions (SKILL.md)

Source of truth, from am-will/codex-skills.


name: Agent Browser description: A fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands. read_when:

  • Automating web interactions
  • Extracting structured data from pages
  • Filling forms programmatically
  • Testing web UIs metadata: {"clawdbot":{"emoji":"🌐","requires":{"bins":["node","npm"]}}}

Agent Browser

A fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.

Installation

npm recommended

npm install -g agent-browser
agent-browser install
agent-browser install --with-deps

From Source

git clone https://github.com/vercel-labs/agent-browser
cd agent-browser
pnpm install
pnpm build
agent-browser install

Quick Start

agent-browser open example.com
agent-browser snapshot
agent-browser click @e2
agent-browser fill @e3 "test@example.com"
agent-browser get text @e1
agent-browser screenshot page.png
agent-browser close

Using Real Chrome Profile (for OAuth/Logged-in Sessions)

For sites requiring Google/Discord/etc login (like star-swap.com):

Method 1: Launch Chrome with custom profile, connect via CDP

# Terminal 1: Launch Chrome with your real profile and remote debugging
google-chrome --remote-debugging-port=9222 --user-data-dir=/home/willr/.config/google-chrome/Default &

# Terminal 2: Connect agent-browser to that Chrome instance
agent-browser --cdp 9222 open "https://star-swap.com"
agent-browser --cdp 9222 snapshot -i
agent-browser --cdp 9222 click e2

# This reuses your existing Google session - no re-login needed!
# Works for: Google OAuth, Discord OAuth, any site you're logged into in Chrome

Method 2: Session persistence (first-time manual login)

# First time: headed mode, login manually
agent-browser --headed --session starswap open "https://star-swap.com"
# Complete Google OAuth manually in the browser window
# Close when done

# Future runs: cookies persist!
agent-browser --session starswap open "https://star-swap.com"
# Already logged in automatically

am.will.ryan Chrome profile: /home/willr/.config/google-chrome/Default

Core Commands

Navigation

agent-browser open <url>
agent-browser back
agent-browser forward
agent-browser reload

Interaction

agent-browser click <sel>
agent-browser dblclick <sel>
agent-browser focus <sel>
agent-browser type <sel> <text>
agent-browser fill <sel> <text>
agent-browser clear <sel>
agent-browser press <key>
agent-browser keydown <key>
agent-browser keyup <key>
agent-browser hover <sel>
agent-browser select <sel> <val>
agent-browser check <sel>
agent-browser uncheck <sel>
agent-browser drag <src> <tgt>
agent-browser upload <sel> <files>

Extraction and Info

agent-browser snapshot
agent-browser get text <sel>
agent-browser get html <sel>
agent-browser get value <sel>
agent-browser get attr <sel> <attr>
agent-browser get title
agent-browser get url
agent-browser get count <sel>
agent-browser get box <sel>
agent-browser screenshot [path]
agent-browser pdf <path>

Check State

agent-browser is visible <sel>
agent-browser is enabled <sel>
agent-browser is checked <sel>

Find Elements

  • agent-browser find role <role> <action> [value]
  • agent-browser find text <text> <action>
  • agent-browser find label <label> <action> [value]
  • agent-browser find placeholder <ph> <action> [value]
  • agent-browser find alt <text> <action>
  • agent-browser find title <text> <action>
  • agent-browser find testid <id> <action> [value]

Actions include click, fill, check, hover, and text.

Wait and Timing

agent-browser wait <selector>
agent-browser wait <ms>
agent-browser wait --text "Welcome"
agent-browser wait --url "**/dash"
agent-browser wait --load networkidle

Advanced Control

agent-browser scroll <dir> [px]
agent-browser scrollintoview <sel>
agent-browser eval <js>
agent-browser mouse move <x> <y>
agent-browser cookies
agent-browser storage local
agent-browser tab new [url]
agent-browser frame <sel>
agent-browser dialog accept [text]

Sessions

Run multiple isolated browser instances.

agent-browser --session agent1 open site-a.com
agent-browser --session agent2 open site-b.com

Snapshot Options

The snapshot command supports filtering to reduce output size.

  • agent-browser snapshot -i
  • agent-browser snapshot -c
  • agent-browser snapshot -d 3
  • agent-browser snapshot -s "#main"

Selectors and Refs

Refs provide deterministic element selection from snapshots. Use the @ref syntax.

agent-browser snapshot
agent-browser click @e2

Agent Mode

Use --json for machine readable output.

agent-browser snapshot --json

Optimal AI Workflow

  • Navigate with agent-browser open <url>
  • Observe with agent-browser snapshot -i --json
  • Act with @ref from the snapshot
  • Verify with agent-browser snapshot

Troubleshooting

  • If the command is not found on Linux ARM64, use the full path in the bin folder.
  • If an element is not found, use snapshot to find the correct ref.
  • If the page is not loaded, add a wait command after navigation.
  • Use --headed to see the browser window for debugging.

Options

  • --session <name> uses an isolated session.
  • --json provides JSON output.
  • --full takes a full page screenshot.
  • --headed shows the browser window.
  • --timeout sets the command timeout in milliseconds.

Notes

  • Refs are stable per page load but change on navigation.
  • Always snapshot after navigation to get new refs.
  • Use fill instead of type for input fields to ensure existing text is cleared.