SandboxFleet runs multiple isolated AI agent sandboxes as slots inside shared
Kubernetes Worker Pods. Sandboxes are scheduled into fixed-capacity Slots;
occupied Slots run through containerd (for example with a gVisor runsc
handler).
Design docs: docs/design.md, docs/architecture.md.
Install on your machine:
dockerkindkubectlgo(1.26+)
From the repository root:
# 1. Create a kind cluster, build images, and install SandboxFleet
./hack/deploy-kind.sh
# 2. Run end-to-end tests against that cluster (does not redeploy)
./hack/verify-e2e.shWhat this checks: create a Pool, create a Sandbox, run a command via Exec, then delete the Sandbox.
Optional cleanup:
./hack/cleanup-kind.shdeploy-kind.shwrites kubeconfig tobin/KUBECONFIGand runtime selection tobin/runtime.env(used byverify-e2e.sh).WORKER_RUNTIMEselects which Worker image to build and load (gvisordefault,runc, orkata). It only picks image +runtimeHandler(+ optional samplehostDevices). Nested virt is handled byhack/ensure-kind-cluster.shviaENSURE_NESTED_VIRT=auto|1|0(independent of runtime name). Kata pools declarespec.runtime.cri.hostDevices: ["/dev/kvm"].APPLY_SAMPLES=1(default) also applies demo Pool/Sandbox manifests; e2e uses its own namespace and does not depend on those samples.APPLY_SAMPLES=0 ./hack/deploy-kind.shinstalls only the control plane.- Re-run tests later without rebuilding:
./hack/verify-e2e.sh - Build Worker images alone:
./hack/build-worker-images.sh runc|gvisor|kata|all