V0 · ARCHITECTURE

A browser cluster,
not a service.

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.

Components

Grouped by lane · top-to-bottom = request path

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.

CONTROL

Session controller

Reconciles desired vs actual pods. CRD-driven.

Idle timeout controller

Watches CDP heartbeat. Kills cold pods on schedule.

Recording controller

Subscribes to CDP, writes thin event stream to S3.

DATA PLANE

Browser session pods

One Chromium per pod. 2K-ready. Isolated by NetworkPolicy.

CDP gateway

External CDP-over-WSS. Drop-in for browser-use clients.

Web viewer gateway

Live MJPEG/WebRTC stream. Capped per plan.

Takeover control path

Human keyboard / mouse injection over the viewer channel.

PLATFORM

Proxy integration

Resolves residential / DC providers at pod boot.

NetworkPolicy templates

Deny-all default. Egress only via proxy lane.

Usage metering worker

Browser-minutes, bandwidth, recording bytes -- per org.

Billing integration

Pushes metered events to Stripe. Plan-aware caps.

Key requirements

Each one binds at least two components.

01

CDP, served externally · browser-use compatible

Existing browser-use clients connect with no SDK change. WSS endpoint, signed token, idempotent reconnect.

CDP gatewayPublic API
02

2K resolution sessions

2560×1440 default. GPU-less Chromium with sw rasterizer; viewer streams downscale per plan.

Session podsViewer gw
03

Proxy configured at session creation

Caller declares region, sticky / rotating, provider. Resolved once, baked into the pod's egress route.

Proxy layerSession ctrl
04

Plan-based live viewer caps

N concurrent viewer connections per session, M per org. Refused with 429 + plan-upgrade hint.

Viewer gwAuthZ
05

CDP-stream recording, minimal storage

Capture protocol events, not video. Reconstruct viewport on replay. ~1-5MB / minute typical.

Recording ctrlCDP gateway
06

Auto-terminate idle sessions

No CDP traffic for T, then graceful close. Per-plan T. Caller can extend with a ping.

Idle ctrlMetering
07

Restrict internal network access · deny-all default

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.

NetworkPolicyProxy layerSession pods

Ready to wire it up?

CDP endpoint is drop-in compatible with browser-use. SDK in five lines.