import { pageMetadata } from '@/lib/page-metadata'; export const metadata = pageMetadata('cdp-mode'); # CDP Mode Connect to an existing browser via Chrome DevTools Protocol: Default behavior in this fork: when `--cdp` is omitted, agent-browser targets the managed automation browser on `localhost:9333`. If `:9333` is unavailable, it auto-starts Chrome with the persistent profile `~/.agent-browser/chrome-bot-profile` and retries the CDP connection. If you want to pre-start that managed browser explicitly, run: ```bash agent-browser start abs start ``` Project policy: - `--profile` / `AGENT_BROWSER_PROFILE` are forbidden - `--channel` / `AGENT_BROWSER_CHANNEL` are forbidden ```bash # Start Chrome with: google-chrome --remote-debugging-port=9222 # Connect once, then run commands without --cdp agent-browser connect 9222 agent-browser snapshot agent-browser tab agent-browser close # Or pass --cdp on each command agent-browser --cdp 9222 snapshot ``` ## Remote WebSocket URLs Connect to remote browser services via WebSocket URL: ```bash # Connect to remote browser service agent-browser --cdp "wss://browser-service.com/cdp?token=..." snapshot # Works with any CDP-compatible service agent-browser --cdp "ws://localhost:9222/devtools/browser/abc123" open example.com ``` The `--cdp` flag accepts either: - A port number (e.g., `9222`) for local connections via `http://localhost:{port}` - A full WebSocket URL (e.g., `wss://...` or `ws://...`) for remote browser services ## Auto-Connect Use `--auto-connect` to automatically discover and connect to a running Chrome instance without specifying a port: ```bash # Auto-discover running Chrome with remote debugging agent-browser --auto-connect open example.com agent-browser --auto-connect snapshot # Or via environment variable AGENT_BROWSER_AUTO_CONNECT=1 agent-browser snapshot ``` Auto-connect discovers Chrome by: 1. Reading Chrome's `DevToolsActivePort` file from the default user data directory 2. Falling back to probing common debugging ports (9222, 9229, 9333) This is useful when: - Chrome 144+ has remote debugging enabled via `chrome://inspect/#remote-debugging` (which uses a dynamic port) - You want a zero-configuration connection to your existing browser - You don't want to track which port Chrome is using Use this mode only when you intentionally want to attach to an existing manual browser session. Recent Chrome builds may display a permission prompt before allowing remote debugging access to that session. ## Color scheme Playwright overrides the browser's color scheme to `light` by default when connecting via CDP. Use `--color-scheme` to set a persistent preference: ```bash agent-browser --cdp 9222 --color-scheme dark open https://example.com agent-browser --cdp 9222 snapshot # stays in dark mode ``` Or set it globally via config or environment variable: ```bash AGENT_BROWSER_COLOR_SCHEME=dark agent-browser --cdp 9222 open https://example.com ``` ## Stealth behavior `--stealth` is enabled by default across connection modes, but capabilities depend on how you connect:
Connection type Stealth capabilities
Local launch Chromium launch args + context init scripts
CDP / auto-connect Context init scripts
Cloud providers Context init scripts (Kernel may also apply provider-managed stealth)
Use `--debug` to print the active connection type and applied stealth capabilities. ## Use cases This enables control of: - Electron apps - Chrome/Chromium with remote debugging - WebView2 applications - Remote browser services (via WebSocket URL) - Any browser exposing a CDP endpoint ## Global options
Option Description
-p <provider> Cloud browser provider (browserbase, browseruse,{' '} kernel)
--headers <json> HTTP headers scoped to origin
--executable-path Custom browser executable
--args <args> Browser launch args (comma-separated)
--user-agent <ua> Custom User-Agent string
--proxy <url> Proxy server URL
--proxy-bypass <hosts> Hosts to bypass proxy
--json JSON output for scripts
--full, -f Full page screenshot
--name, -n Locator name filter
--exact Exact text match
--headed Show browser window
{'--cdp '} CDP connection (port or WebSocket URL)
--auto-connect Auto-discover and connect to running Chrome
--color-scheme <scheme> Persistent color scheme (dark, light, no-preference)
--debug Debug output
## Cloud providers Use cloud browser infrastructure when local browsers aren't available: ```bash # Browserbase export BROWSERBASE_API_KEY="your-api-key" export BROWSERBASE_PROJECT_ID="your-project-id" agent-browser -p browserbase open https://example.com # Browser Use export BROWSER_USE_API_KEY="your-api-key" agent-browser -p browseruse open https://example.com # Kernel export KERNEL_API_KEY="your-api-key" agent-browser -p kernel open https://example.com # Or via environment variable export AGENT_BROWSER_PROVIDER=browserbase agent-browser open https://example.com ``` The `-p` flag takes precedence over `AGENT_BROWSER_PROVIDER`.