Firecracker microVMs,
without the toil.
Build reproducible VM images with Nix. Boot them in under 2 seconds on macOS or Linux. No SSH. No containers. Just workloads.
curl -fsSL https://raw.githubusercontent.com/auser/mvm/main/install.sh | shCopyHow it works
Everything you need to run microVMs
Multi-Backend
Auto-detects your platform. Firecracker on Linux, Apple Virtualization on macOS 26+, Docker as universal fallback. One CLI, any runtime.
Nix-Based Builds
Reproducible microVM images from Nix flakes. Cached builds — rebuilds are near-instant. Artifact sizes reported on every build.
Service Builders
mkPythonService, mkNodeService, mkStaticSite — high-level helpers that return { package, service, healthCheck } for composition.
No SSH. Ever.
MicroVMs communicate via Firecracker vsock. The guest agent handles lifecycle, health checks, and startup grace periods.
Snapshots & Templates
Build reusable images with size tracking. Snapshot for sub-2s boot. Inspect sizes and status with template info.
Developer-First
Scaffold presets for Python, Node, HTTP, and Postgres. Actionable error hints. System diagnostics via doctor.
Architecture
One CLI, four backends
mvm auto-detects your platform and picks the fastest path to a running VM. You can also choose a backend explicitly.
mvmctl detects /dev/kvm, Apple Virtualization, and Docker — then selects the best backend automatically.
Production-grade microVMs. Snapshots, pause/resume, vsock, TAP networking.
Native macOS 26+ on Apple Silicon. Sub-second startup, no Lima needed.
NixOS-native VM runner with QEMU. Vsock and TAP networking support.
Universal fallback. Runs anywhere Docker does. Pause/resume via container lifecycle.
Guest Drive Model
Get Running in Minutes
1# Bootstrap everything2mvmctl dev3
4# Build a microVM image from a Nix flake5mvmctl build --flake .6
7# Boot a headless Firecracker VM8mvmctl run --flake . --cpus 2 --memory 10249
10# Check health via vsock11mvmctl vm ping