v0.1 · works headless or headed

Give any AI agent
a real browser.

One tiny CLI speaks raw Chrome DevTools Protocol — so OpenCode, Codex, Claude Code, Aider or any agent with a shell can open tabs, click, type, screenshot and inspect network. No extension. No lock-in.

agent shell — live verbs
WORKS WITH OpenCodeCodex CLIClaude CodeAiderCursorWindsurfanything with a shell

Why agents like it

Built for the way LLMs work

Every verb returns compact, reasoned text — never screenshots-only, never giant JSON dumps. Refs stay stable per page so multi-step flows survive across separate process calls.

🔌

Zero extensions, zero daemons

Speaks raw CDP over WebSocket to a Chrome you already have. No native-host installs, no single-master locks, no browser downloads.

🧠

Refs, not coordinates

cab tree annotates every interactive element as ref_N. Agents click refs — resilient to layout shifts and pixel guessing.

👁️

See AND read

Screenshots for eyes-on checks, plus read/tree/find textual views — because models reason over text first.

⏱️

Watchdog by default

Every command is hard-bounded (CAB_TIMEOUT). A stuck page can never hang your agent's turn.

🕵️

Network & console taps

net and console capture what the page actually did — debug failed logins and silent API errors in one verb.

🎭

Profiles & headless

Persistent login profiles per project, headed for debugging, --headless for CI. Parallel agents via separate ports.

How it works

Three steps, any agent

Launch once

cab launch starts (or attaches to) Chrome with a debug port and remembers the session in a file.

Paste the skill

Drop the matching skill file into your agent's skills/commands folder — it already knows every verb and when to use each.

Let it drive

The agent calls verbs one at a time, reads compact output, clicks refs, verifies with screenshots. Done.

Setup

Plug into your agent

Same binary everywhere. Only the skill-file location differs.

# 1. install
npm i -g chrome-agent-bridge

# 2. copy the skill into opencode
cp skills/opencode/SKILL.md ~/.config/opencode/skills/chrome-agent-bridge/

# 3. done — the agent now has browser verbs.
#    try telling it:
"open example.com in chrome and read me the heading"
# 1. install
npm i -g chrome-agent-bridge

# 2. add the snippet to AGENTS.md (or ~/.codex/AGENTS.md)
cat skills/codex/AGENTS-snippet.md >> ~/.codex/AGENTS.md

# codex runs shell commands natively — every cab verb
# is immediately usable. verify:
cab tree   # after cab launch
# claude code users: this complements the official extension —
# use it when you need headless/CI or multi-session parallelism.
npm i -g chrome-agent-bridge
cp skills/claude/SKILL.md ~/.claude/skills/chrome-agent-bridge/

# then just ask claude to browse; it picks the skill up.
# aider, scripts, CI jobs, cron... anything that can run shell:

npm i -g chrome-agent-bridge
cab launch --headless
cab goto https://your-app.dev && cab see

# full verb reference:
cab help

Honest comparison

Where it wins — and where it doesn't

chrome-agent-bridgeExtension bridgesPlaywright MCP
Works from Codex / OpenCode / anythingYesClaude onlyMCP host needed
No extension installYesRequiredYes
Your real logged-in profileYes (profiles)YesFresh context
Runs in CI / headlessYesNoYes
Parallel agents on one machinePorts + profilesSingle masterPer-host config
Bundle size~1 MB (one dep)Extension+host~50 MB browsers
Human-visible browsing sessionYes (headed)YesIsolated