Agents In Browser is a local-first system (Chrome extension + local proxy + ACP agent) that lets AI coding agents interact with your browser safely from a side panel.
Most AI browser extensions are strong at page-only assistance, but become limited when tasks need both browser context and local execution. Agents In Browser is built to bridge that gap:
- unify browser actions and local agent execution in one loop
- let agents continue from webpage context to local code/files/terminal workflows
- keep control in your local runtime instead of a fixed hosted plugin pipeline
The most important difference is bridging local agents.
- Browser + local environment integration: one task can span webpage actions and local dev operations.
- Flexible LLM token sources: since this system bridges local agents (Claude Code/Codex/Gemini/custom ACP agents), you can choose your preferred model/token source strategy instead of being locked to one plugin backend.
- Agent/runtime flexibility: you can switch agent commands and runtime settings locally.
- Control and privacy: sensitive context can remain in your local environment and workflow.
| Kit | Role | Status |
|---|---|---|
| Skill-SE-Kit | Skill learning and evolution — agents learn from browser interactions and accumulate reusable experience | Built-in |
| UDD Kit | Self-healing and diagnostics — detects errors, checks upstream fixes, and repairs in isolated worktrees | Built-in |
| UpdateKit | Version checking and safe update execution — quickCheck on every proxy startup with policy, rollback, and audit | Built-in |
| browser-control-skill | Enhanced browser control — CDP Proxy, multi-channel routing, parallel dispatch, site memory | Optional install |
packages/chrome-extension: Chrome Side Panel extension (UI + background + content scripts)packages/proxy-server: local proxy service (WebSocket + MCP bridge/direct control)packages/shared: shared protocol/types/constants
- Node.js
>= 20 - npm
- Chrome browser
- At least one ACP-capable agent command, for example:
claude-code-acpcodex-acpgemini --experimental-acpopencode --acp
-
Install dependencies:
npm install
-
Build extension:
npm run build:extension
-
Start proxy:
npm run dev:proxy
-
Load extension in Chrome:
- Open
chrome://extensions - Enable Developer Mode
- Click "Load unpacked"
- Select
packages/chrome-extension/dist
- Open
-
Open Side Panel and connect:
- Go to
Settings -> Connection - Default WS URL:
ws://localhost:9876 - Token is auto-fetched when possible; otherwise paste it manually
- Go to
- WebSocket:
ws://127.0.0.1:9876 - MCP endpoint:
http://127.0.0.1:9877/mcp
- Token file:
~/.agents-in-browser/auth-token - Auto-fetch endpoint:
http://127.0.0.1:9876/token
If auto-fetch fails, copy the token from proxy logs or from the local token file.
# build all workspaces
npm run build
# build each package
npm run build:shared
npm run build:proxy
npm run build:extension
# development
npm run dev:proxy
npm run dev:extension
# tests
npm testInstall browser-control-skill for advanced browser capabilities:
- CDP Proxy for cross-platform automation
- Multi-channel web access (WebSearch → WebFetch → Jina → CDP)
- Parallel sub-agent dispatch
- Site experience memory
- Interactive element indexing
- Three-layer safety system
git clone https://github.com/d-wwei/browser-control-skill ~/.agents-in-browser/skills/browser-control-skill
cd ~/.agents-in-browser/skills/browser-control-skill && npm installRestart the proxy server after installation. The skill supports self-updating via UpdateKit:
cd ~/.agents-in-browser/skills/browser-control-skill && npx update-kit applyYou can also point to a custom location via environment variable:
BROWSER_CONTROL_SKILL_DIR=/path/to/skill npm run dev:proxyWS_PORT(default9876)MCP_PORT(default9877)SKIP_AUTH=true(development only)
Example:
WS_PORT=9001 MCP_PORT=9002 npm run dev:proxy- Extension cannot connect:
- Ensure proxy is running
- Check WS URL and token
- Ensure port
9876is free
- MCP tools unavailable:
- Ensure
http://127.0.0.1:9877/mcpis reachable - Ensure extension is connected to proxy
- Ensure
For agents that support it (claude-code-acp, opencode), you can enable --dangerously-skip-permissions mode to let the agent execute all tool calls without manual approval.
Two ways to enable:
- Per-agent default: In
Settings → Agents, create/edit a custom agent and toggle "Enable --dangerously-skip-permissions by default". - Runtime toggle: Click the shield icon (🛡) on the TopBar to toggle the mode on/off. The agent process will restart with the new flag.
When dangerous mode is active, a red warning banner appears below the TopBar. Use with caution — the agent will auto-execute all operations without confirmation.
- Run
npm run dev:proxy - Load/open extension side panel
- Select an agent
- Ask the agent to read or act on the current page
- Approve tool calls when prompted
