runsc) running on a Linux host you provision. Everything on this page is about standing that host up correctly. Local development and building use WSL2 and Docker Desktop, but the real sandbox needs this host. For the exact commands and the acceptance tests, follow the repo runbooks; this page is the map.
Host requirements
1
A Linux host with nested virtualization
gVisor needs it. Docker Engine and
runsc must be installed and runsc registered in /etc/docker/daemon.json (systrap platform). Set UTTER_SANDBOX_HOST=1.2
Quota-capable storage
overlay2 on xfs with pquota, so disk caps are actually enforced per container.
3
A host egress firewall
The data proxy is deny-by-default, but the host itself needs a firewall as the outer layer.
4
An internal package registry mirror
Verdaccio (
REGISTRY_MIRROR_URL) so builds install from a mirror with no network access to the public internet.5
A wildcard TLS domain
*.resources.<domain>, issued via DNS-01. See below.Wildcard TLS
Every deployed endpoint lives athttps://<slug>.resources.<DEPLOY_DOMAIN>, so the host needs a wildcard certificate for *.resources.<domain>.
Durability
Persistence is Postgres and Redis:- Postgres via
DATABASE_URL. Loadinfrastructure/db/schema.sqlonce. - Redis via
REDIS_URL.
NODE_ENV=production the services fail closed: boot throws unless durability is configured. This is intentional. A production deploy without persistence would silently lose settlement state, so it is not allowed to start.
The systemd deployer
The deployer runs on the host as a supervised systemd service (infrastructure/systemd/utter-deployer.service). It needs the host Docker daemon and runsc, which is why it is not a compose service. The trusted control-plane services run in compose; the deployer runs on the metal next to the daemon it drives.
Follow the runbooks
The exact commands, and the three live acceptance tests that prove the host is real, live in the repo. Do not rely on this page for the specifics.The three live acceptance tests are the gate: malicious-probe-blocked (a probe cannot reach the network or secrets), runsc-enforced caps (resource and disk caps hold under
runsc), and a live 402 to 200 deploy (a real endpoint takes a real payment). If any of the three fails, the host is not ready.The sandbox
What
runsc is isolating, and why plain Docker is not enough.Self-hosting the stack
The practical run shape once the host is provisioned.