Docs · Start here

Architecture.

How Remoco works and what the terms mean. A Remoco is a managed cloud workstation; pods group related workstations for a team or workload; clusters are the regional infrastructure boundary; a fleet is everything you run across clusters.

Taxonomy

Borrowed loosely from Kubernetes, scaled up a level — a "remoco" is a whole VM, not a container.

1

remoco · one workstation

One persistent VM. Boots in seconds from a golden image, keeps a /home/user disk across suspend/resume, runs your agent and your dev servers in tmux. Each remoco has a stable identity (<shortname>) that shows up in URLs: <branch>.<service>.<shortname>.remoco.dev.

2

pod · a group of remocos

A team's remocos, or a workload's fleet of agents. Pods share config (class, image, network policy, access control) and are the scheduling unit for "give my 10 engineers a remoco" or "spin up 20 CI runners for this workload." Internally, a pod maps one-to-one with a Cloud Workstations WorkstationConfig.

3

cluster · regional infrastructure

A regional boundary (us-central1, europe-west1, etc.) that holds pods. One cluster per region per org. Networking, VPC peering, and the tunnel that terminates *.remoco.dev traffic all live here. Maps one-to-one to a Cloud Workstations WorkstationCluster.

4

fleet · everything you run

Your organization's full view across clusters. The /fleet endpoint and the HUD in the hero return this. Pricing and billing roll up at fleet scope.

Where the pieces live

Remoco runs in your infrastructure (GCP today, AWS + self-host later). DOSS Labs operates the control plane and sells the unit economics; you get root on every remoco.

LayerWhatWhere it runs
Your agentClaude Code, Codex, Cursor, DOSSBOT, or custom harnessYour mac / CI / own service
Control planeHTTP API (api.remoco.dev) + Postgres + billingDOSS-operated, Cloud Run
TunnelCloudflared named tunnel per cluster + CF Access policiesCloud-side (Cloudflare)
ClusterGCP WorkstationCluster (regional)Your GCP project (or DOSS's)
PodGCP WorkstationConfig (image, class, idle-timeout)Inside the cluster
remocoGCP Workstation (the VM, persistent disk, dev servers)Inside the pod

Request path

What happens when your browser hits main.web.wiley.remoco.dev:

  1. DNS resolves to Cloudflare's anycast edge (CNAME to the named tunnel).
  2. Cloudflare Access checks the request against the policy for that hostname (public, team, or specific user). 403s unauthenticated traffic for private URLs.
  3. Cloudflared tunnel ingests the request and hands it to the remoco's local remoco-proxy daemon on :8081.
  4. remoco-proxy dispatches by Host header to the right dev server port (e.g. :3333 for Next.js, :3000 for Vite), and injects the debugger overlay script + favicon.
  5. Response streams back through the tunnel to the browser.

Persistence & identity

Failure domains

What dies with what, worst case:


← Overview Getting started →