- Multiplexing: Many isolated AI agent sandboxes share one Kubernetes Worker Pod, each occupying a fixed-capacity Slot.
- Scheduling: A Slot Scheduler places each Sandbox onto a matching Slot (Slots can have different resource profiles).
- Fork: A running Sandbox can be snapshotted and forked into child Sandboxes (including nested forks); each child is scheduled into its own Slot.
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