browser-gateway
Operating

Client & Provider Compatibility

Which clients and provider categories are known to work end-to-end through the gateway.

Which clients and provider categories are known to work end-to-end through the gateway. The gateway is protocol-agnostic at the byte level, so anything speaking CDP or the Playwright wire protocol over WebSocket should work, this page lists what is exercised in the release suite.

Clients

ClientSupportNotes
Puppeteer (puppeteer-core)Fullpuppeteer.connect({ browserWSEndpoint }) works against every provider category below.
Playwright (playwright-core)FullUse chromium.connect(wsEndpoint) for Playwright-server providers, chromium.connectOverCDP(wsEndpoint) for CDP endpoints. Version pinning still applies for Playwright-server.
StagehandFullUses Playwright under the hood, so anything true of Playwright is true here.
browser-useFullUses Playwright.
chromedp (Go)FullUses raw CDP. Point at ws://gateway:9500/v1/connect like any other CDP endpoint.
MCP clients (Claude Code, Cursor, Windsurf)Full via the built-in MCP serverAlso works via Playwright MCP pointed at the gateway.

Providers

Provider categorySupportNotes
Self-hosted runtime (browserserve)FullThe only category safe for multi-profile write-back on a single slot. Auto-detected, capacity is host-derived.
Self-hosted Chrome (--remote-debugging-port)FullPoint at http://host:9222, the gateway auto-discovers the CDP path.
Self-hosted Playwright serverFullClient and server Playwright versions must match exactly.
Any WebSocket CDP endpointFull for stateless traffic and read-only profile useFor write-back profile use, pin one profile per slot with profile:. See Profiles → Provider isolation.

Any provider that speaks CDP over WebSocket should work. The gateway probes each provider on registration and surfaces detected capabilities in the dashboard under Providers.

Feature Support By Provider Category

FeatureSelf-hosted runtimeExternal CDP
Byte-level relay + routingYesYes
Failover / cooldown / weighted routingYesYes
Profile inject (cookies + localStorage)Yes, any profileYes, only the pinned profile
Profile inject (IndexedDB + service workers)YesNo, CDP has no wire format for these
Profile capture-on-navigate (multi-origin)YesYes
multiProfile: true (many profiles per slot)YesRejected at add-time
Session replay (?session_record=true)YesYes when the provider supports Page.startScreencast
Live playground (WS /v1/live)YesYes
Read-only profile sessions (?readOnly=1)YesYes
Automatic residue detectionN/A (fresh session by construction)Yes, HTTP 409 on cross-profile residue

Known Limitations

  • Session reconnection works with Puppeteer and raw CDP clients. Playwright destroys contexts on disconnect, so it does not survive a reconnect. See Session Reconnection.
  • REST endpoints (/v1/screenshot, /v1/content, /v1/scrape) run against the gateway's internal browser pool, not routed providers, so they don't participate in failover.
  • Non-Chromium engines (Firefox, WebKit) are not supported. CDP is Chromium-specific.

On this page