Browser Control connects an AI agent to Chrome through an MCP server, a Chrome extension, and a native messaging host. It provides observed page actions, tab ownership, screenshots, and isolated Chrome for Testing leases.
The npm package requires Node.js 24 or later on macOS or Linux. Isolated browser leases and private 1Password transfer require macOS and a separately installed cua-driver.
-
Install the extension from the Chrome Web Store.
-
Install the native host:
npx -y @op1/browser-control install
-
Open the extension popup and click Reload host.
-
Print the configuration for your MCP client:
npx -y @op1/browser-control config claude
Replace
claudewithopencode,codex, orcursorfor another client. Add the printed configuration to that client. -
Check the installation:
npx -y @op1/browser-control doctor
The server command is npx -y @op1/browser-control mcp. Installation stores stable copies under ~/.local/state/browser-control. Set BROWSER_CONTROL_STATE_DIR to use another directory. To install the three bundled skills, pass --skills-dir <your-client-skills-directory> to install; no skills directory is chosen automatically.
See installation and troubleshooting for flags, optional tools, and the isolated smoke check. The generated native-host wrapper uses the Node executable that ran install. Rerun install after removing or replacing that Node installation.
Load the browser-control skill in your agent. Start with status and tabs, then claim a tab or open one. Use act_steps to batch actions selected from observed controls. Release tabs before releasing a browser lease.
The popup's Pause host disconnects the host and ends its agent sessions until Resume host is selected. The pause setting survives browser restarts. If the host exits, the extension retries within about 30 seconds.
The bundled native host scripts also support the standalone release-zip installation. Use one installer per Chrome profile because both installers write the same native-messaging manifest.
| Component | Value |
|---|---|
| npm package and CLI | @op1/browser-control, browser-control |
| Chrome Web Store extension | dcnjjnecbhipdbngkhjppkckpkellmld |
| Isolated-profile extension | mpodnojmjjafgogldgieimgbmfhhknbe |
| Native messaging host | com.opzero.chrome |
| Host and page protocols | Version 2 |
The isolated copy has a public key that fixes its extension ID across paths and upgrades. The Web Store build has no injected key. A manually loaded unpacked build without a key gets an ID derived from its absolute path.
pnpm install
pnpm run checkcheck builds the extension, native host, MCP server, and skill, then runs type checks, tests, project checks, and Python parity mapping checks. To include disposable headless-browser tests, set BROWSER_CONTROL_SYNTHETIC_CHROME to a Chrome for Testing executable.
Repository guides: development and release.