Browser (clawd-managed)
Clawdbot can run a dedicated Chrome/Chromium profile that the agent controls. It is isolated from your personal browser and is managed through a small local control server.What you get
- A separate browser profile named clawd (orange accent by default).
- Deterministic tab control (list/open/focus/close).
- Agent actions (click/type/drag/select), snapshots, screenshots, PDFs.
- Optional multi-profile support (
clawd,work,remote, …).
Quick start
Configuration
Browser settings live in~/.clawdbot/clawdbot.json.
controlUrldefaults tohttp://127.0.0.1:18791.- If you override the Gateway port (
gateway.portorCLAWDBOT_GATEWAY_PORT), the default browser ports shift to stay in the same “family” (control = gateway + 2). cdpUrldefaults tocontrolUrl + 1when unset.attachOnly: truemeans “never launch Chrome; only attach if it is already running.”
Local vs remote control
- Local control (default):
controlUrlis loopback (127.0.0.1/localhost). The Gateway starts the control server and can launch Chrome. - Remote control:
controlUrlis non-loopback. The Gateway does not start a local server; it assumes you are pointing at an existing server elsewhere. - Remote CDP: set
browser.profiles.<name>.cdpUrl(orbrowser.cdpUrl) to attach to a remote Chrome. In this case, Clawdbot will not launch a local browser.
Profiles (multi-browser)
Clawdbot supports multiple named profiles. Each profile has its own:- user data directory
- CDP port (local) or CDP URL (remote)
- accent color
- The
clawdprofile is auto-created if missing. - Local CDP ports allocate from 18800–18899 by default.
- Deleting a profile moves its local data directory to Trash.
?profile=<name>; the CLI uses --browser-profile.
Isolation guarantees
- Dedicated user data dir: never touches your personal Chrome profile.
- Dedicated ports: avoids
9222to prevent collisions with dev workflows. - Deterministic tab control: target tabs by
targetId, not “last tab”.
Browser selection
When launching locally, Clawdbot picks the first available:- Chrome Canary
- Chromium
- Chrome
browser.executablePath.
Platforms:
- macOS: checks
/Applicationsand~/Applications. - Linux: looks for
google-chrome,chromium, etc. - Windows: checks common install locations.
Control API (optional)
If you want to integrate directly, the browser control server exposes a small HTTP API:- Status/start/stop:
GET /,POST /start,POST /stop - Tabs:
GET /tabs,POST /tabs/open,POST /tabs/focus,DELETE /tabs/:targetId - Snapshot/screenshot:
GET /snapshot,POST /screenshot - Actions:
POST /navigate,POST /act - Hooks:
POST /hooks/file-chooser,POST /hooks/dialog - Debugging:
GET /console,POST /pdf
?profile=<name>.
Playwright requirement
Some features (navigate/act/ai snapshot, element screenshots, PDF) require Playwright. In embedded gateway builds, Playwright may be unavailable; those endpoints return a clear 501 error. ARIA snapshots and basic screenshots still work.CLI quick reference
All commands accept--browser-profile <name> to target a specific profile.
Basics:
clawdbot browser statusclawdbot browser startclawdbot browser stopclawdbot browser tabsclawdbot browser open https://example.comclawdbot browser focus abcd1234clawdbot browser close abcd1234
clawdbot browser screenshotclawdbot browser screenshot --full-pageclawdbot browser screenshot --ref 12clawdbot browser snapshotclawdbot browser snapshot --format aria --limit 200clawdbot browser console --level errorclawdbot browser pdf
clawdbot browser navigate https://example.comclawdbot browser resize 1280 720clawdbot browser click 12 --doubleclawdbot browser type 23 "hello" --submitclawdbot browser press Enterclawdbot browser hover 44clawdbot browser drag 10 11clawdbot browser select 9 OptionA OptionBclawdbot browser upload /tmp/file.pdfclawdbot browser fill --fields '[{"ref":"1","type":"text","value":"Ada"}]'clawdbot browser dialog --acceptclawdbot browser wait --text "Done"clawdbot browser evaluate --fn '(el) => el.textContent' --ref 7
uploadanddialogare arming calls; run them before the click/press that triggers the chooser/dialog.uploadcan also set file inputs directly via--input-refor--element.snapshotdefaults toaiwhen available; use--format ariafor the accessibility tree.click/typerequire areffromsnapshot(CSS selectors are intentionally not supported for actions).
Security & privacy
- The clawd browser profile may contain logged-in sessions; treat it as sensitive.
- Keep control URLs loopback-only unless you intentionally expose the server.
- Remote CDP endpoints are powerful; tunnel and protect them.