compute / firecracker
Firecracker microVMs in seconds
Each VM is a single Firecracker process with its own kernel, ext4 rootfs, TAP device and IP. Set vCPUs, memory and disk per VM, or set defaults once in config.json. VMs can start automatically at boot through a systemd unit, and vmm console shows the serial output for debugging boots and kernel panics.
$sudo vmm create myvm --cpus 2 --memory 1024 --disk 4096
access / ssh
SSH that just works
vmm generates and manages its own Ed25519 key and injects it into every VM, so --ssh-key is optional. Your own keys are added alongside it.
$vmm ssh myvm
images / docker
Root filesystems from Docker images
Turn any Docker image into a bootable rootfs, or pull ready-made Ubuntu 24.04, Kubernetes, security and dev images from GitHub releases.
$sudo vmm image import ubuntu:22.04 --name base
state / memory + disk
Full VM snapshots
Capture a running VM's memory, device state and disks, then roll it back in place later. Useful before risky upgrades, or for replaying an exploit from a known state.
$sudo vmm snapshot create myvm clean
net / bridge + nat
Networking handled for you
A Linux bridge, TAP devices, IP allocation and NAT are set up automatically. VMs are reachable from the host by default. Idempotent iptables rules forward ports and custom DNS servers can be set per VM.
$sudo vmm port-forward add myvm 8080:80
orchestration / kubeadm
Kubernetes clusters in one command
Build multi-node clusters from microVMs with kubeadm, using Cilium (with kube-proxy replacement) or Calico. Pick the Kubernetes version by choosing a rootfs image, add worker nodes, and optionally add an admin workstation with kubectl already configured. The cluster context is merged into your kubeconfig, so you can use kubectl from the host straight away.
$sudo vmm cluster create lab --workers 2 --cni cilium --admin-workstation
orchestration / microshift
Single-node OpenShift
Run an OpenShift-derived cluster with upstream MicroShift on OKD payload images. No Red Hat subscription is needed.
$sudo vmm cluster create ocp --type openshift
fs / block devices
Host directory mounts
Share host directories with a VM as ext4 block devices at /mnt/<tag>, read-only or read-write, and sync them back when you're done.
$sudo vmm create myvm --mount ~/code:code:ro
kernels / build profiles
Custom and research kernels
Pre-built kernels for general use, Kubernetes (BTF, eBPF, tracing), and security research across the 5.10–6.18 LTS series, including KASAN builds. You can also build your own with a profile.
$sudo vmm kernel pull kasan-kernel
ui / vmm-web
Web console & JSON API
An optional browser console for VMs, clusters and images, with live state updates, an in-browser SSH terminal and a Bearer-token REST API.
$VMM_WEB_PASSWORD=… sudo -E vmm-web
lifecycle / vmm upgrade
Upgrades without downtime
One command moves the host to the latest release. vmm upgrade checks the download against the release checksums, swaps vmm and vmm-web in place and upgrades Firecracker when a release needs it. It then restarts only the web console. Running VMs keep running, the previous binaries are kept for --rollback, and the web console tells you when a new version is out.
$ vmm upgrade --check
installed: 0.14.0
latest: 0.15.0
$ sudo vmm upgrade
[ok] vmm 0.15.0
[ok] vmm-web 0.15.0
[ok] vmm-web.service restarted