Skip to Content
OpenClaw

OpenClaw Integration

Foxbridge enables OpenClaw  to control Camoufox instead of Chrome. Point OpenClaw’s cdpUrl at foxbridge and all browser tools work transparently.

Configuration

In your openclaw.json, set the cdpUrl to foxbridge’s endpoint and disable the built-in browser launch:

{ "browser": { "cdpUrl": "ws://127.0.0.1:9222", "enabled": true, "headless": true } }

With this config, OpenClaw connects to foxbridge as if it were Chrome. Foxbridge translates every CDP call to Juggler and routes it to Camoufox.

Standalone Mode

Run foxbridge separately and point OpenClaw at it:

# Terminal 1: Start foxbridge with Camoufox foxbridge --binary /path/to/camoufox --port 9222 --headless # Terminal 2: Run OpenClaw openclaw run --config openclaw.json --message "Navigate to example.com and take a screenshot"

VulpineOS Embedded Mode

When running inside VulpineOS, foxbridge is launched automatically alongside the Camoufox kernel. The startup sequence:

  1. VulpineOS starts Camoufox with Juggler pipe transport
  2. VulpineOS starts foxbridge pointing at the same Camoufox binary
  3. Foxbridge’s CDP URL is written into openclaw.json as browser.cdpUrl
  4. OpenClaw agents connect to ws://127.0.0.1:9222 automatically

If foxbridge is not found, VulpineOS logs a warning and OpenClaw falls back to its built-in Chrome.

Per-Agent Browser Contexts

Each OpenClaw agent gets an isolated browser context via Target.createBrowserContext. This provides:

  • Separate cookie jar — no cookie leakage between agents
  • Independent localStorage — each agent has its own storage
  • Per-context fingerprint — VulpineOS applies unique fingerprints per context
  • Optional per-context proxy — different exit IPs per agent

VulpineOS’s context pool pre-warms 10 contexts and recycles them after 50 uses:

{ "browser": { "cdpUrl": "ws://127.0.0.1:9222", "enabled": true, "headless": true, "contextIsolation": true } }

Browser Tools That Work

All standard OpenClaw browser tools function through foxbridge:

ToolStatusNotes
NavigateWorkingpage.goto() with all waitUntil options
ScreenshotWorkingFull page, element, clip region
ClickWorkingMouse button, coordinates, modifiers
TypeWorkingKeyboard input, special keys
EvaluateWorkingpage.evaluate(), $eval, $$eval
PDFWorkingpage.pdf() with IO streaming
Request interceptionWorkingContinue, abort, fulfill
Cookie managementWorkingSet, get, delete per context
Dialog handlingWorkingAlert, confirm, prompt
File uploadWorkinginput.uploadFile()

VulpineOS MCP Bridge

VulpineOS also provides an MCP (Model Context Protocol) server as an alternative to direct CDP. The MCP tools use foxbridge internally but offer higher-level operations:

MCP ToolDescription
vulpine_navigateNavigate to URL
vulpine_snapshotToken-optimized DOM snapshot (50% fewer tokens)
vulpine_clickClick element by selector
vulpine_typeType text into element
vulpine_screenshotCapture screenshot
vulpine_scrollScroll page
vulpine_new_contextCreate isolated browser context
vulpine_close_contextDestroy browser context
vulpine_get_ax_treeFull accessibility tree

The vulpine_snapshot tool uses VulpineOS Phase 3’s optimized DOM export, reducing token usage by over 50% compared to a standard accessibility tree.


See also

Last updated on