Limits, billing, and security

Availability

Browser use is available on every running sandbox, on any template. The browser starts lazily on the first POST /browser, so sandboxes that never use it pay nothing and boot as fast as before.

The sandbox image must include a Chromium-family browser and Node. Every MIOSA sandbox image ships them; a custom image that removed them returns 501 BROWSER_NOT_AVAILABLE.

No template publish is needed to use the browser: the daemon ships with the control plane and is written into the sandbox on start, on every launchable template.

Size

A real Chromium needs room. small (2 vCPU, 4 GB) or larger is recommended for a comfortable browser.

SizevCPURAMBrowser use
xs12 GBTight; a single light page at most
small24 GBRecommended minimum
medium48 GBComfortable
large816 GBHeavy pages and parallel tabs

Lifecycle

ActionEffect on the browser
POST /browserStarts the browser lazily (idempotent)
Pause sandboxBrowser state is preserved; the session survives resume
Resume sandboxThe same browser comes back, with its tabs and logins
DELETE /browserStops the browser and frees its memory; the sandbox keeps running
Destroy sandboxRemoves everything, including browser state

Pause and resume keep the browser; stopping the browser is what releases its memory.

The browser is also a process inside the sandbox, so if the sandbox is restarted the browser must be started again. GET /browser reports the current state (running, stopped, unavailable, or sandbox_not_running) without starting anything.

Billing

Browser use bills as plain sandbox usage. There is no separate browser line item: while the sandbox is running, you pay the sandbox rate you already pay for that size, and the browser runs inside it. Stopping the browser frees memory but does not by itself stop the sandbox.

Security

  • Nothing is exposed publicly. Both sockets - the live-view stream and the CDP endpoint - go through api.miosa.ai with normal API authentication, never through the sandbox’s own host.
  • The control plane connects to the browser daemon on the sandbox’s loopback only, and hands it a 60-second token each time. Callers never see that token.
  • An API key on a socket needs sandboxes:exec, because a browser can reach anything the sandbox can.
  • Share tokens are view-only. Their input is refused inside the sandbox’s browser process, not merely hidden in the UI.
  • Share links are revocable: revoke one link by its share_id, or revoke every share and CDP link at once. Revoking bumps the browser’s share epoch, so an outstanding link stops working immediately.
  • Live-view and CDP sockets share a per-tenant stream limit; exceeding it closes the socket with 4013.

Next

Was this page helpful?