Cloud Browser
Provision managed Chromium instances with stable CDP endpoints for agents, automation, and MCP clients.
Cloud Browser
Cloud Browser provisions a managed Chromium instance for your account and exposes it through a normal Chrome DevTools Protocol endpoint.
The endpoint is designed for tools that already know how to speak CDP, including Playwright, browser automation agents, and MCP clients such as chrome-devtools-mcp.
What it gives you
- A user-owned Chromium Fly Machine.
- A public CDP proxy endpoint under
https://cdp.apothic.ai. - Proxy-managed upstream authorization and Fly Machine routing.
- Snapshot-and-suspend startup behavior for faster warm resumes.
- Optional auto-destroy for short-lived API-created sessions.
Dashboard flow
Open /dashboard/browsers and provision a Cloud Browser instance.
The dashboard defaults to persistent instances because dashboard users commonly copy the WebSocket URL into an MCP or CDP client config. Leave Auto-destroy off when you want that endpoint to remain stable until you delete the browser.
Enable Auto-destroy only for throwaway instances. Auto-destroy gives the browser a default lifetime and makes the CDP endpoint expire at that time.
Connection details
Cloud Browser returns three URLs when an instance is created:
| Field | Purpose |
| --- | --- |
| endpointUrl | Root CDP URL. Use with chromium.connectOverCDP(...). |
| versionUrl | CDP /json/version endpoint. Useful for clients that discover the browser WebSocket. |
| webSocketUrl | Browser-level WebSocket URL for DevTools/MCP clients. |
The raw CDP token is not returned again after creation, so copy the returned URLs when you provision the instance.
Playwright example
import { chromium } from "playwright-core";
const browser = await chromium.connectOverCDP(process.env.APOTHIC_CLOUD_BROWSER_ENDPOINT!);
const page = await browser.newPage();
await page.goto("https://apothic.ai");
console.log(await page.title());
await browser.close();
Codex MCP example
For a persistent browser, create it from the dashboard with Auto-destroy unchecked, then configure chrome-devtools-mcp with the returned webSocketUrl:
[mcp_servers.apothic-browser]
enabled = true
command = "npx"
args = [
"-y",
"chrome-devtools-mcp@latest",
"--wsEndpoint",
"wss://cdp.apothic.ai/sessions/<session-id>/cdp/<token>/devtools/browser"
]
startup_timeout_sec = 60
Restart the client after changing MCP configuration.
Lifecycle
New browser instances warm up, wait for the runtime callback, then suspend. Fly resumes the Machine when the CDP proxy routes traffic to it.
Persistent instances do not have an expiration timestamp. They remain available until you delete them.
Auto-destroy instances receive an expiration timestamp. After expiry, the CDP endpoint is no longer valid and the next lifecycle reconciliation deletes the Fly Machine and marks the session expired.
Regions
Choose a Fly region near the workload or the sites being automated. The dashboard includes common Fly regions such as iad, ord, dfw, lax, sjc, ewr, yyz, ams, fra, lhr, and nrt.
Next steps
- Use the dashboard at
/dashboard/browsersfor persistent MCP endpoints. - Use the Cloud Browser API Reference for programmatic provisioning.
