EDGE
Public API service
REST + WS entry. Routes session create / control / status.
AuthN / AuthZ
API keys, JWT, per-org RBAC. Gate every call before lane 2.
Bandwidth limiter
Per-session + per-plan throttling at the edge proxy.
V0 · ARCHITECTURE
Remote-browser runs on Kubernetes. Each session is a pod; each pod gets its own CDP socket, its own egress, and its own lifecycle. Below -- what the cluster contains, and what it must promise.
Grouped by lane · top-to-bottom = request path
REST + WS entry. Routes session create / control / status.
API keys, JWT, per-org RBAC. Gate every call before lane 2.
Per-session + per-plan throttling at the edge proxy.
Reconciles desired vs actual pods. CRD-driven.
Watches CDP heartbeat. Kills cold pods on schedule.
Subscribes to CDP, writes thin event stream to S3.
One Chromium per pod. 2K-ready. Isolated by NetworkPolicy.
External CDP-over-WSS. Drop-in for browser-use clients.
Live MJPEG/WebRTC stream. Capped per plan.
Human keyboard / mouse injection over the viewer channel.
Resolves residential / DC providers at pod boot.
Deny-all default. Egress only via proxy lane.
Browser-minutes, bandwidth, recording bytes -- per org.
Pushes metered events to Stripe. Plan-aware caps.
Each one binds at least two components.
Existing browser-use clients connect with no SDK change. WSS endpoint, signed token, idempotent reconnect.
2560×1440 default. GPU-less Chromium with sw rasterizer; viewer streams downscale per plan.
Caller declares region, sticky / rotating, provider. Resolved once, baked into the pod's egress route.
N concurrent viewer connections per session, M per org. Refused with 429 + plan-upgrade hint.
Capture protocol events, not video. Reconstruct viewport on replay. ~1-5MB / minute typical.
No CDP traffic for T, then graceful close. Per-plan T. Caller can extend with a ping.
Session pods cannot reach the cluster's API server, metadata service, or other tenants. The only egress route is the proxy lane. NetworkPolicy ships per-namespace, audited on apply.
CDP endpoint is drop-in compatible with browser-use. SDK in five lines.