explain

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

AreaStatus
Daemon + unix/TCP API + optional authDone
Ephemeral / persistent lifecycleDone
Guest agent (exec, shell PTY, cp, fs, stats, secrets)Done
Create wait modes (auto/ssh/agent/userdata)Done
Golden grain-ubuntu pull/bake/importDone
Multi-distro: ubuntu-cloud, alpine-cloudDone
Port forwards (create + live)Done
Mounts 9p; virtiofs on LinuxDone
Pause/resume; suspend/restoreDone
Resource caps, profiles, presetsDone
Egress proxy (default-deny + secret inject)Done
Go / TypeScript / Python SDKs + OpenAPIDone
MCP server (grain up --mcp / grain mcp) for agent hostsDone
Install script, recipes, create benchDone
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 backendExperimental (Linux)

Platforms: macOS and Linux hosts with hardware virtualization. Native Windows is not a host (use the remote API/SDKs against a supported host). WSL is Linux from grain’s point of view; virt must be available to that environment.

Quick verification

bash
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):

bash
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.