Skip to content
v0.7 — Multi-backend VM support

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 | shCopy
<2ssnapshot boot
~50MBrootfs images
0SSH required
terminal

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

Your HostmacOS / Linux / WSL2

mvmctl detects /dev/kvm, Apple Virtualization, and Docker — then selects the best backend automatically.

auto-select
Firecrackerdefault

Production-grade microVMs. Snapshots, pause/resume, vsock, TAP networking.

snapshotsvsockTAPpause
Linux + KVM — nativemacOS — via Lima VM
Apple Virtualization

Native macOS 26+ on Apple Silicon. Sub-second startup, no Lima needed.

vsockfast boot
macOS 26+ — Apple Silicon only
microvm.nix

NixOS-native VM runner with QEMU. Vsock and TAP networking support.

vsockTAP
Linux — native or via Lima
Dockerfallback

Universal fallback. Runs anywhere Docker does. Pause/resume via container lifecycle.

pauseunix socket
Everywhere — macOS, Linux, WSL2

Guest Drive Model

vda rootfsvdb config (ro)vdc secrets (ro)vdd data (rw)
172.16.0.2TAP + vsock:52172.16.0.1NATinternet

Get Running in Minutes

bash
1# Bootstrap everything
2mvmctl dev
3
4# Build a microVM image from a Nix flake
5mvmctl build --flake .
6
7# Boot a headless Firecracker VM
8mvmctl run --flake . --cpus 2 --memory 1024
9
10# Check health via vsock
11mvmctl vm ping

Get started

Ready to ship your first microVM?

From zero to a running Firecracker VM in minutes. mvm handles bootstrapping, Nix builds, and lifecycle management.