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.
$sudo 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, and VMs are reachable from the host by default. Started a new service on a running VM? Forward a TCP or UDP port to it and it's live straight away. Forwards follow the VM through stops, starts and restores, and work alongside Docker.
$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
compute / cloud hypervisor
Nested virtualization
Need a VM that runs VMs of its own, for Kata, KubeVirt, a hypervisor lab or vmm itself? --nested runs it under Cloud Hypervisor with VT-x/AMD-V exposed, so the guest gets /dev/kvm. It boots the same images, joins the same bridge and works with SSH, mounts and port forwards, right alongside your Firecracker VMs.
$sudo vmm create lab --nested --cpus 2 --memory 2048
kernels / build profiles
Custom and research kernels
Pre-built kernels for general use, nested VMs (KVM), 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
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
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, a file browser for copying files in and out of VMs, a port forwards page 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 (and Cloud Hypervisor, if you use it) 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