Product surface

What grain implements for local Linux microVM sandboxes.

grain’s local microVM product surface as of the v0.2 line.

Complete for local sandboxes

Area Status
Daemon + unix/TCP API + optional auth Done
Ephemeral / persistent lifecycle Done
Guest agent (exec, shell PTY, cp, fs, stats, secrets) Done
Create wait modes (auto/ssh/agent/userdata) Done
Golden grain-ubuntu pull/bake/import Done
Multi-distro: ubuntu-cloud, alpine-cloud Done
Port forwards (create + live) Done
Mounts 9p; virtiofs on Linux Done
Pause/resume; suspend/restore Done
Resource caps, profiles, presets Done
Egress proxy (default-deny + secret inject) Done
Go / TypeScript / Python SDKs + OpenAPI Done
Install script, recipes, create bench Done
Menu bar tray (grain tray) Done (macOS / Linux)
Guest arch selection (--arch, incl. x86_64 on Apple Silicon via QEMU) Done
Virtio GPU (--gpu / gpu: virtio) Done
Shared overlay network between VMs (network: overlay) Done
Firecracker backend Experimental (Linux)

Platforms: macOS and Linux hosts only. Windows / WSL are not supported (use the remote API/SDKs against a supported host).

Quick verification

just test && just smoke-api
just build && just agent-linux
./bin/grain doctor
# live (optional):
# ./bin/grain up && ./bin/grain image pull grain-ubuntu && ./scripts/bench-create.sh

Create latency

Measure on your hardware (numbers vary by image, wait mode, and host):

grain up
grain image pull grain-ubuntu
./scripts/bench-create.sh -n 5 --wait agent

Use the reported p50/p95 when talking about boot speed — do not invent sub-300ms claims without a local run.