Reference

Lineage & Upstream

chrome-use started from vercel-labs/agent-browser (Apache-2.0) and is now a standalone project. This page covers who the upstream is, what path each took after the fork, and how to think about the relationship: it's not a variant of upstream — it's a different product, built to drive your already-logged-in real Chrome.

Upstream: vercel-labs/agent-browser

chrome-use's first line of code came from Vercel Labs' agent-browser: a Rust browser-automation CLI for AI agents. The daemon model, the snapshot-plus-@ref interaction paradigm, and the overall Rust CLI skeleton are inherited from it. There'd be no chrome-use without that upstream, and the credit belongs here.

The lineage is still visible in the repo:

ℹ️ From the README
“Originally based on vercel-labs/agent-browser (Apache-2.0); now a standalone project — the stealth/extension-relay architecture, anti-detection, humanize, multi-agent isolation, and CLI have diverged substantially.”

What changed after the fork

The core divergence is the connection method. Upstream's classic path launches a browser instance for the agent; chrome-use's default path takes over the real Chrome where you're already logged into everything, and the whole chain was rebuilt for that:

Extension-relay architecture. The CLI talks to a per-session background daemon over a Unix domain socket; the daemon connects to the ab-connect browser extension over Chrome native messaging; the extension drives target tabs with CDP via chrome.debugger. No --remote-debugging-port anywhere, so it never trips the "Allow remote debugging?" dialog Chrome 136+ pops on every connection. Install is one curl … | sh plus a one-time extension install. The full pipeline is on How It Works.

Anti-detection. On the extension path to real Chrome, nothing is JS-injected — it is your real browser, and CreepJS reads 0% bot. The --launch path opens a separate stealth Chromium disguised with native CDP- and flag-level overrides, not leak-prone JS patches. See Stealth & Anti-detection and Real Chrome.

Also brought in: --humanize behavioral evasion, multi-agent isolation via per-session colored tab groups, session handoff ownership and human takeover, single-pass scripting, and a whole command surface built around real Chrome.

Why choose chrome-use

Upstream spins up a clean new browser for the agent; chrome-use lets the agent use the real Chrome you're already using, already logged into everything. In most real tasks that one difference removes the three most painful things: re-logging in, getting banned by anti-bot, and a debug-permission prompt on every connect. Point by point:

agent-browser (upstream)chrome-use
which browsera new instance launched for the agentthe real Chrome you use, already logged in
loginsre-login per site, or inject cookies yourselfreused as-is; SSO / 2FA already done
anti-botautomation signals by default; easy to flag and banit's a real browser: CreepJS 0% bot; --humanize beats behavioral checks too
connection--remote-debugging-port: Chrome 136+ prompts "Allow remote debugging?" on every connectextension + native messaging, zero prompts
multi-agenta separate browser instance eachcolored tab-group isolation inside one real Chrome
complex flowsone command at a timesingle-pass scripting: many steps in one tool call, survives hard navigations
platformsa single binary — macOS / Linux / Windows

In one line: reuse real logins, dodge anti-bot and debug prompts, run several agents concurrently in one Chrome — that's what chrome-use is for. Item-by-item measurements (tokens, performance, vs ego-lite) are on how chrome-use compares.

ℹ️ When upstream is enough
If all you need is an isolated, brand-new browser instance for the agent and you don't care about logins or anti-bot, upstream agent-browser is the clean choice. The command surface, connection method, and default behavior have evolved apart; this site documents chrome-use only and can't be applied back to agent-browser.

Pinning a version

The default install pulls the latest GitHub Release. For production or CI, pin a specific tag with AGENT_BROWSER_VERSION (the variable name is itself part of the lineage):

bash
# latest
$ curl -fsSL https://raw.githubusercontent.com/leeguooooo/chrome-use/main/install.sh | sh

# pin a version
$ AGENT_BROWSER_VERSION=v1.5.70 \
    curl -fsSL https://raw.githubusercontent.com/leeguooooo/chrome-use/main/install.sh | sh
💡 Old tags
v0.27.0-fork.12-style tags with a -fork.N suffix in old docs or scripts belong to the early fork series; the same variable pins them too. New projects should just use v1.x.y.

License

Upstream agent-browser is Apache-2.0, and chrome-use ships under Apache-2.0 as well; the full text is in LICENSE at the repo root.

Apache-2.0 permits free use, modification, and distribution (commercial included), on the condition that you keep the copyright and license notices. chrome-use credits upstream in the README. If you redistribute based on chrome-use, keep the LICENSE and carry forward the attribution chain to vercel-labs/agent-browser.