agent-browser

App Featured

Browser automation CLI for AI agents

Checked · Sources

Downloads
9,253
Dependents
Not applicable
Stars
47,653
Forks
3,259
Contributors
118
Commits
818
Latest release
0.19.0 ·

About

From the project README ·

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, then agent-browser install.
  • Linux: agent-browser install --with-deps also 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]
Read the full README
  • 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.

GroupCommandsDocs
Navigate and readopen, back, forward, reload, read, snapshot, get, isCore, Snapshots
Interactclick, dblclick, fill, type, press, keyboard, hover, focus, select, check, uncheck, scroll, drag, upload, mouse, findCore, Find elements
WaitwaitWait
Capturescreenshot, pdf, record, download, diffRecording, Diffing, Files
Page and network statecookies, storage, network, set, clipboard, eval, pushstateNetwork, Settings
Tabs, frames, and dialogstab, frame, dialogTabs and frames
Debug and performanceconsole, errors, highlight, inspect, trace, profiler, vitals, react, a11yDebugging, Profiler, React
Sessions and authsession, state, auth, profiles, confirm, denySessions, Security
Agents and integrationsskills, mcp, webmcp, flow, chat, batch, pluginSkills, WebMCP, Plugins
Observestream, dashboardStreaming, Dashboard
Setupinstall, upgrade, doctor, connect, closeInstallation

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

License

Apache-2.0

Runs on
GPU support unknown
What shows it
  • no dependency or feature matches a backend row
Native code
None found
  • No native code found
Python bindings
No Python binding crate found
License
Apache-2.0

Compare with similar projects

Order: strongest tier first, then most downloads, then name, with unmeasured values last. A library counts downloads over 30 days. An app counts binary downloads per release. An app with none counts its crate downloads over 30 days. ML Rust runs this catalogue, so its closest project always gets a row.

agent-browser beside the projects that share a topic with it
ProjectDownloadsDependentsStarsLatest releaseRuns on (GPU)Native codeLicense
agent-browser This page App Featured

Browser automation CLI for AI agents

9,253 binary downloads per release Not applicable 47,653 0.19.0 GPU support unknown No native code found Apache-2.0
baml Featured

The programming language for agents

2,113 downloads over 30 days 7 9,494 0.226.3 GPU support unknown Binds native code: baml-sys, baml_cffi Apache-2.0
autoagents Listed

Agent Framework for Building Autonomous Agents

8,627 downloads over 30 days 4 779 0.4.0 CUDA, WebGPU, Metal, ROCm, Vulkan Binds native code: llama-cpp-sys-2, ort-sys, alsa-sys (feature audio-capture), intel-mkl-src (feature full), rquickjs-sys (feature codeact) Apache-2.0 OR MIT
adk-rust Listed

Rust Agent Development Kit - Build AI agents in Rust with modular components for models, tools, memory, and more.

5,419 downloads over 30 days 25 743 2.3.0 CUDA, Metal Binds native code: alsa-sys (feature desktop-audio), audiopus_sys (feature openai-webrtc), cxx (feature livekit), espeak-rs-sys (feature kokoro), libsqlite3-sys (feature sqlite) and 4 more Apache-2.0
mofa Listed

MoFA - Modular Framework for Agents. Modular, Compositional and Programmable.

613 downloads over 30 days 0 296 0.1.1 GPU support unknown Binds native code: ort-sys (feature kokoro), pnet_sys (feature dora) Apache-2.0
cortex-mem Listed

🧠 The production-ready cognitive foundation for autonomous systems such as Embodied-AI and OpenClaw. For memory management, from extraction and search to automated optimization, with SKILL, CLI, API, MCP, and insights dashboard out-of-the-box.

126 downloads over 30 days 6 318 2.7.0 GPU support unknown No native code found MIT
axp App Listed

An open protocol that gives AI agents a secure, sandboxed place to run code and use tools — with lean context usage. AXP works alongside MCP

Not measured Not applicable 3 Not measured Not measured Not measured Apache-2.0
Why FeaturedIt passes every Featured gate.

What it meets

  • Its use signals read: binary downloads 27761, Homebrew 46375, Repology families 4, Docker growth unknown. Featured needs 2 of these to reach their limits.
  • It also passes the repository route, which counts as one use signal: 47,653 stars, 3,259 forks and 118 contributors. It needs 4,539 stars, 434 forks and 79 contributors together.
  • The last activity is on 8 Nov 2026, 1 day ago. The rules expect an update within 365 days. Dormancy rule

Exact rules: Featured app. The check on applied thresholds version 9.

Every rule outcome, as the check records it
  • expected-interval: app: E = 365 days
  • dormancy: last activity 2026-11-08, 1 days ago, E = 365: active
  • featured: featured: binary downloads 27761, Homebrew 46375, Repology families 4, Docker growth unknown, repository route stars 47653 (needs 4539), forks 3259 (needs 434), contributors 118 (needs 79)

Measurements and sources

Each signal row shows the raw value, its source and the fetch date. The Sources list gathers every distinct source on this page. Movement needs more history.

Sources8 sources
Adoption9,253 binary downloads per release4 not measured
Adoption measurements
SignalValueSourceFetchedCounts
Active dependentsNot measuredYes
New dependents (365 days)Not measuredYes
Peak active dependentsNot measuredYes
Active dependents as a share of the peakNot measuredYes
Binary downloads per release9253GitHub releasesYes
MaintenanceLatest human commit: 1 day ago4 not measured
Maintenance measurements
SignalValueSourceFetchedCounts
Latest human commit2026-11-08GitHub repositoryYes
Latest release2026-11-03GitHub releasesYes
First release2026-03-14crates.io database dumpYes
Latest version0.19.0crates.io database dumpNo
Days the oldest outside issue waits for a reply21GitHub repositoryYes
Maintainer replies over 365 days3GitHub repositoryYes
Repository archivedfalseGitHub repositoryYes
Repository gonefalseGitHub repositoryYes
Release commit or manifest in the repotruecrates.io packageNo
Published docsNot measuredYes
Latest release fails cargo checkNot measuredYes
Build check dateNot measuredYes
Build check toolchainNot measuredYes
SecurityNot measured
Security measurements
SignalValueSourceFetchedCounts
Unpatched vulnerabilities past the grace windowNot measuredYes
RustSec unmaintained advisoryNot measuredYes
Deprecation noticeNot measuredYes
Deprecated requirementNot measuredYes
Distribution1 releases, 1,643 downloads over 30 days4 not measured
Distribution measurements
SignalValueSourceFetchedCounts
Releases1crates.io database dumpNo
Downloads over 30 days1643crates.io database dumpNo
Binary downloads over the last 3 releases27761GitHub releasesYes
Homebrew installs on request over 365 days46375Homebrew formulaYes
Repology repository families4Repology projectYes
Docker pull growth over 90 daysNot measuredYes
Docker pulls at the growth baselineNot measuredYes
Every version a prereleasefalsecrates.io database dumpYes
Every version 0.0.xfalsecrates.io database dumpYes
Every version yankedNot measuredYes
Crate deleted from crates.ioNot measuredYes
Repository47,653 stars, 3,259 forks, 118 contributors, 818 commits. Stars alone never qualify a project.
Repository measurements
SignalValueSourceFetchedCounts
GitHub stars47653GitHub repositoryYes — one part of the repository route
GitHub forks3259GitHub repositoryYes — one part of the repository route
Contributors with a GitHub account118GitHub contributorsYes — one part of the repository route
Commits on the default branch818GitHub repositoryNo
Repository's main crate left out of the entrynonecrates.io database dumpYes
Facts that never count
Facts that never count measurements
SignalValueSourceFetchedCounts
LicenseApache-2.0crates.io database dumpNo
Runs on, from listed crates and their direct dependenciesGPU support unknowncrates.io database dumpNo
What shows each backendno dependency or feature matches a backend rowcrates.io database dumpNo
Native code, from listed crates and their dependenciesNo native code foundcrates.io database dumpNo
Python bindings, from direct dependencies of listed cratesNo Python binding crate foundcrates.io database dumpNo
Crates that depend on a listed crate directlyNot measuredNo

Corrections and review history

Report a correction

No correction applies to this entry.

Judgments

A judgment enters only through an approved issue and a merged pull request.

No judgment applies to this entry.