System diagram
Component breakdown
Control plane (Helm-deployed)
Orchestration (bare metal)
SDKs
Request flow
End-to-end flow forSandbox.create() followed by sandbox.commands.run():
Monorepo structure
Key design decisions
sandbox for isolation (not Docker)
sandbox for isolation (not Docker)
Docker containers share the host kernel. A container escape exploit gives an attacker access to the host. sandbox microVMs have a hardware isolation boundary — each VM has its own kernel, memory space, and I/O devices. A compromised sandbox cannot escape to the host or to other sandboxes.
Per-sandbox network namespaces
Per-sandbox network namespaces
Each sandbox gets its own Linux network namespace with a dedicated veth pair and TAP device. Sandboxes cannot see each other’s network traffic, cannot reach each other’s IPs, and cannot intercept host-level network interfaces.
Per-sandbox security proxy (host-side, outside the guest)
Per-sandbox security proxy (host-side, outside the guest)
The security proxy runs host-side in each sandbox’s own network namespace, not inside the guest VM. Because it sits outside the guest on the only egress path, the workload can’t see, bypass, or tamper with it — all outbound traffic is forced through it. The per-sandbox CA certificate is generated fresh for each sandbox and injected into the VM trust store at boot.
OverlayFS for rootfs isolation
OverlayFS for rootfs isolation
The base rootfs image is read-only and shared across all sandboxes. Each sandbox gets a writable overlay layer (ext4 image) on top. This makes sandbox creation fast (no full copy) and guarantees filesystem isolation. Destroying a sandbox deletes only the overlay layer.
Fail-fast on proxy errors
Fail-fast on proxy errors
If the security proxy fails to start or configure iptables, the sandbox creation fails with an error. There is no “log and continue” path — a sandbox without a functioning security proxy is considered unsafe and never reaches the
running state.