mrkeyoor.com_
Fri 25 Sept 21:50 UTC
Automationevaluationupdated 26 Aug 2026

agent-browser review

agent-browser is a command-line browser controller designed for coding agents and automation scripts. It turns pages into accessibility-tree references, then lets an agent click, type, inspect, record, and compare browser state through a native Rust daemon or an MCP server.

+280stars / 7d
Verdict

Our source install consumed 1,091 packages and 894 MB, while the workspace offered no build or test target, so agent-browser's excellent command design was not independently exercised in our sandbox. It is a strong fit for coding agents that need concise, inspectable Chrome actions and typed MCP tools. Use Playwright for durable test suites, and put allowed domains, fresh profiles, command timeouts, and process cleanup around agent-browser before it receives production sessions.

We ran it

Lab card: what happened when we ran agent-browserScreenshot of agent-browser (agent-browser.dev)
Install✓ · 82s1091 packages · 894 MB
Buildn/ano build script
Testsn/ano test script
Repo461 files~107,747 lines of source · 8.3 MB · 2 CI workflows

Answers from our run

Does agent-browser build from source?

Dependencies installed in 82 seconds (1091 packages), and the project has no separate build step. We cloned commit f9a6cc3 into a clean Debian container with 3 CPUs and no project-specific setup.

Does agent-browser have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Who should not use agent-browser?

Conventional end-to-end test suites that need code-level fixtures and assertions: Playwright is a clearer primary test framework.

What are the alternatives to agent-browser?

Playwright, Puppeteer, Browser Use. Our source install consumed 1,091 packages and 894 MB, while the workspace offered no build or test target, so agent-browser's excellent command design was not independently exercised in our sandbox.

Setup4/5Native installs are clear, though Chrome and Linux libraries come next
Docs5/5Detailed commands, safety flags, MCP profiles, and providers
Community5/541,328 stars with a same-day release and active issue traffic
Maturity3/5Wide command surface, but our checkout had no test target

Who it’s for

Coding-agent users who need browser actions expressed as short terminal commands.
Test and automation teams that want accessibility references plus CSS and semantic selectors.
MCP clients that need typed browser tools with domain restrictions.
Developers controlling local Chrome, remote CDP browsers, cloud providers, or iOS Safari from one command shape.

Who it’s NOT for

Conventional end-to-end test suites that need code-level fixtures and assertions: Playwright is a clearer primary test framework.
Firefox-specific testing: the README documents Chrome or Chromium through CDP and Safari through iOS WebDriver, not Firefox.
Locked-down machines that cannot download Chrome for Testing or install Linux browser libraries.
Agents that should never touch authenticated state, uploads, JavaScript evaluation, or local files: agent-browser exposes all of those capabilities when enabled.
Windows harnesses requiring a built-in per-command deadline: open issue #1713 reports v0.34.0 commands wedging behind a detached daemon until its process tree is killed.

Setup reality

Our pnpm install pulled 1,091 packages in 82 seconds and occupied 894 MB. The measured workspace exposed no build script or target and no test script or target, so both steps were skipped. We did not launch Chrome or execute a browser flow. The checkout contained 461 files and about 107,747 lines of source.

The normal global npm, Homebrew, or Cargo install supplies the native binary, followed by agent-browser install to obtain Chrome for Testing. Local browser control needs no service key. Browserless, Browserbase, Browser Use, Kernel, or AWS AgentCore modes need their own credentials.

Linux may need agent-browser install --with-deps. Source builds require Node 24+, pnpm 11+, and Rust. The daemon persists between commands and can hold cookies or saved state, so session names, idle timeouts, allowed domains, and cleanup policy matter on shared runners.

1,091 packages sit behind a small command surface

Our source install added 1,091 pnpm packages and occupied 894 MB, even though agent-browser presents itself as a compact native CLI. The weight comes from the development workspace, not from a claim that every user runs Node. Normal installations provide a Rust binary and daemon, while source contributors need the broader monorepo. The product's value is the command shape: open a page, take an accessibility snapshot, act on references such as @e2, and inspect the new state without writing a browser driver program.

That snapshot workflow suits coding agents. Accessibility references are shorter and less brittle in a conversation than copying full selectors or DOM fragments. The CLI also supports semantic locators, ordinary CSS selectors, tabs, frames, dialogs, uploads, cookies, network routes, screenshots, traces, and visual or text diffs. It can return JSON for programs and can batch several commands into one invocation. This is a browser-control layer, so the calling agent still decides what goal to pursue and when an action is safe.

What happened when we ran it

In our 3 CPU, 8 GB container, pnpm installation succeeded in 82 seconds. It added 1,091 packages and used 894 MB. The repository contained 461 files, about 107,747 lines of source, 2 CI workflow files, and monorepo workspaces. We found no Dockerfile and no tests directory at the measured level. Those results describe the source workspace only; they do not measure the size of a global native install or its Chrome download.

The workspace exposed no build script or target, so our harness skipped the build. It also exposed no test script or target, so tests were skipped. We did not launch a browser, take a snapshot, click an element, or exercise the Rust daemon. The lab block contains no audit result, so none should be inferred. The practical finding is that 1,091 dependencies installed cleanly, while the declared package surface gave our standard runner no way to verify compilation or behavior.

Chrome installation is the second setup step

The recommended npm install supplies the native binary, then agent-browser install downloads Chrome for Testing. Existing Chrome, Brave, Playwright, and Puppeteer installations may be detected. On Linux, install --with-deps asks the system package manager for required browser libraries and exits nonzero if it cannot install them all. Source contributors face a different route: Node 24 or newer, pnpm 11 or newer, Rust, a pnpm build, and a native Rust build.

Local Chrome control needs no cloud account. Remote providers change that: Browserless, Browserbase, Browser Use, Kernel, and AWS AgentCore each use provider-specific credentials and session settings. The CLI can also connect directly to a CDP port or WebSocket URL. This flexibility is useful in CI, yet it spreads responsibility across browser images, profile storage, network access, and provider retention. Pick one execution path first and document where cookies, screenshots, traces, and downloaded files survive.

The MCP server exposes typed browser actions

Running agent-browser mcp starts a stdio Model Context Protocol server. It defaults to the 2025-11-25 protocol and a smaller core tool profile, while optional profiles add network, storage, debug, emulation, performance, React, and mobile commands. Typed fields such as URL, selector, text, session, and allowed domains produce more legible approval prompts than a raw shell command. That makes the MCP path one of the project's best reasons for adoption.

The permission boundary still belongs to the client and operator. The full profile can evaluate JavaScript, load or save authenticated state, upload files, inspect requests, modify cookies, and enable local file access. Domain allowlists also trigger WebRTC containment and launch restrictions, according to the README. Use a fresh browser profile, a short list of domains, and disposable credentials. A model that can see an admin page and submit forms has the same practical authority as the signed-in user.

A detached daemon needs an outside deadline

The Rust daemon starts on demand and persists across commands, avoiding repeated browser startup. By default it can close an unattended headless session after 1 hour, while headed or user-attached browsers are preserved. That design helps interactive work and session reuse. It also means killing one CLI process may not kill the daemon or Chrome tree that owns the session, so a surrounding harness should track the process group and have a recovery path.

Open issue #1713 describes that failure on agent-browser 0.34.0 under Windows 11. A wedged page reportedly blocked snapshot, active-tab read, and open because the client-to-daemon round trip had no deadline. Killing the CLI child left the daemon and Chrome processes alive, so later commands reattached and hung. Version 0.35.0 was released on August 25, but the report remained open. Treat this as a scoped Windows report and add an external timeout regardless.

Fast releases and 666 open items call for pinning

GitHub showed 41,328 stars, a last push on August 25, 2026, and 666 open issues and pull requests combined. Release 0.35.0 shipped the same day with private proxy CA trust on Linux and a skill for protected Vercel deployments. That pace shows active work and a moving interface. The combined open count is not a bug count, but recent reports cover Windows launch behavior, command deadlines, Chrome detection, and container flags that can affect automation reliability.

agent-browser is easiest to recommend as an agent-facing adapter around Chrome. Its reference-based commands are readable, its MCP schema is useful, and its direct CDP daemon avoids requiring Node at runtime. The 82-second source install and missing declared targets leave a verification gap in our run, so pin v0.35.0, exercise your real browser path, and record cleanup behavior. For assertion-heavy tests, keep Playwright. For autonomous browsing, give agent-browser only the sessions and domains the agent truly needs.

Alternatives

ProjectWhat it isPick it when
Playwright gh↗A browser automation and test framework with assertions, fixtures, tracing, and multiple engines.pick this instead when you are writing a maintained test suite rather than giving an agent a CLI.
Puppeteer gh↗A JavaScript library for controlling Chrome and Firefox through browser protocols.pick this instead when browser control belongs inside a Node.js program and direct API access is preferable.
Browser Use gh↗A Python agent framework that pairs language models with browser actions and cloud sessions.pick this instead when you want the agent decision loop included, not only the browser-control layer.
Stagehand gh↗A browser automation framework mixing natural-language actions with deterministic code.pick this instead when AI-assisted browser steps need to live inside a TypeScript application.

What people are saying

  1. [github-trending] vercel-labs/agent-browser

Sources

  1. agent-browser README
  2. agent-browser v0.35.0 release
  3. agent-browser command deadline issue 1713

More automation reviews

Rose · alchemy · laya · prod-FARM-IOS-Core · ha_xiaomi_home · FreePEP · the whole board →