v0.1 · Apache 2.0 · self-hostable

Hardware-isolated sandboxes
for AI agents.

One Cloud Hypervisor microVM per sandbox. Stock kernel, KVM-backed, no containers. 14 ms warm-start, 4 ms exec roundtrip. Drop-in for the E2B and Daytona SDKs.

Warm start P50
14 ms
Cold spawn P50
98 ms
exec roundtrip
4 ms
Fork (snapshot + clone)
66 ms
Scaleway PAR2 EM-B130E · 6c EPYC 4245P (SMT off) · 60 GB RAM · reproducible via verify/perf-quick.sh

Why DaytoNah

▸ Real isolation
One Cloud Hypervisor microVM per sandbox. KVM is the boundary — kernel CVE blast radius stops at the VM. Not gVisor. Not Firecracker-in-a-container. Not a chroot.
▸ vsock-only guest
The in-VM agent listens on AF_VSOCK only. A compromised sandbox can't reach its neighbour's /exec — no TCP, no shared L2.
▸ No kernel mods
Stock distro kernel. No DKMS, no out-of-tree drivers, no signed-module dance. You can boot the host with Secure Boot on.
▸ Cross-host by default
Pause in PAR1, resume in PAR2. Archive offloads to S3-compatible storage; the scheduler re-picks a host on resume. Continuous backup with a 4 ms pause window.
▸ API parity
Drop-in for E2B and Daytona SDKs. We accept E2B's templateID body shape, expose /pause, /resume, /files/watch, etc.
▸ Agent-native
MCP server, llms.txt, OpenAPI 3.1, agent skill (npx skills add). Drops into Claude Code, Cursor, Windsurf in one line.

Performance

Path What's happening P50 P95
Warm allocationPool claim — Postgres row flip, no spawn14 ms24 ms
Cold spawnReflink rootfs · TAP · CH boot · vsock RPC up98 ms313 ms
First exec (warm)create → exec returning exit 022 ms39 ms
/exec roundtripFramed-JSON RPC over vsock4 ms5 ms
Resume pausedMemory + disk restore104 ms104 ms
ForkSnapshot + clone in one call66 ms
Sequential throughput100× create+delete, pool refills26.3 /s

Architecture

┌───────────────────────────── CP box ───────────────────────────────┐
│  Caddy :443  ──TLS──▶  Bun control plane :3000                     │
│                        ├─ scheduler · warm pool · reconciler       │
│                        ├─ billing · audit · webhooks               │
│                        └─ Postgres                                 │
└──────────────────────┬─────────────────────────────────────────────┘
                       │ HTTPS · mTLS · bearer · nft IP-allowlist
┌──────────────────────▼───────────────────────── sandbox host(s) ───┐
│  edge-proxy :80   <port>-<sbx>.<host>.nip.io → guest port (HMAC)   │
│                                                                    │
│  host-agent (Go, root)                                             │
│   ├─ spawns cloud-hypervisor per sandbox                           │
│   ├─ TAP/IP allocator on dnah-br0 (10.42.0.0/16)                   │
│   ├─ archive/backup to S3-compatible storage                       │
│   └─ vsock-rpc proxy :18048 (TLS + mTLS + bearer)                  │
│                                                                    │
│  cloud-hypervisor → AF_VSOCK :18047 → invm-agent (PID 1)         │
│                                       exec · PTY · files · snap   │
└────────────────────────────────────────────────────────────────────┘