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.
Why agents like it
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.
Speaks raw CDP over WebSocket to a Chrome you already have. No native-host installs, no single-master locks, no browser downloads.
cab tree annotates every interactive element as ref_N. Agents click refs — resilient to layout shifts and pixel guessing.
Screenshots for eyes-on checks, plus read/tree/find textual views — because models reason over text first.
Every command is hard-bounded (CAB_TIMEOUT). A stuck page can never hang your agent's turn.
net and console capture what the page actually did — debug failed logins and silent API errors in one verb.
Persistent login profiles per project, headed for debugging, --headless for CI. Parallel agents via separate ports.
How it works
cab launch starts (or attaches to) Chrome with a debug port and remembers the session in a file.
Drop the matching skill file into your agent's skills/commands folder — it already knows every verb and when to use each.
The agent calls verbs one at a time, reads compact output, clicks refs, verifies with screenshots. Done.
Setup
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
| chrome-agent-bridge | Extension bridges | Playwright MCP | |
|---|---|---|---|
| Works from Codex / OpenCode / anything | Yes | Claude only | MCP host needed |
| No extension install | Yes | Required | Yes |
| Your real logged-in profile | Yes (profiles) | Yes | Fresh context |
| Runs in CI / headless | Yes | No | Yes |
| Parallel agents on one machine | Ports + profiles | Single master | Per-host config |
| Bundle size | ~1 MB (one dep) | Extension+host | ~50 MB browsers |
| Human-visible browsing session | Yes (headed) | Yes | Isolated |