Integrations
Any client that speaks the Chrome DevTools Protocol can drive a sandbox browser. Only clients verified end to end on MIOSA are listed here; more will be added as they are proven.
Compatibility
Each client below was run against a live sandbox browser: connect, navigate, click, type, screenshot, and confirm a live viewer sees the same page.
| Client | Language | Version | Status |
|---|---|---|---|
| Playwright | JavaScript | 1.64.0 | Tested |
| Playwright | Python | 1.63.0 | Tested |
| Puppeteer | JavaScript | 25.13.0 | Tested |
| Raw CDP | Node (no library) | Node 24 | Tested |
| Stagehand | JavaScript | 3.7.3 | Tested |
| browser-use | Python | 0.13.11 | Tested |
| Computer use (screenshot + actions) | Any HTTP client | - | Tested |
Connect
Every CDP client connects to the same endpoint on api.miosa.ai:
wss://api.miosa.ai/api/v1/sandboxes/{id}/browser/cdp POST /browser starts the browser and returns cdp_url and stream_auth.
Authenticate the socket one of two ways:
Token in the URL. Append the
stream_authtoken as?token=:wss://api.miosa.ai/api/v1/sandboxes/{id}/browser/cdp?token=<stream_auth>Authorization header.
Authorization: Bearer <msk_* API key>(the key needs thesandboxes:execscope), for clients that can set headers on the WebSocket.
Both go through api.miosa.ai; nothing is exposed on the sandbox’s own host.
The endpoint is control only: a view-only share token is refused here.
POST /browser also returns cdp_ws_url and cdp_http_url, which carry the token in the path for clients that cannot set headers or append a query string. cdp_http_url answers /json/version, /json/list, /json/new, and /json/protocol, and rewrites every advertised webSocketDebuggerUrl to itself, so clients that follow discovery stay authenticated.
Client examples
Stagehand 4.x
Stagehand 4.x is not supported: it requires pipe-only CDP. Use Stagehand 3.x.
See also
- Drive it over CDP - the endpoint, auth, and close codes in full.
- Live viewer - watch and take control of the same browser.