MicroVMs
A stripped-down virtual machine that boots as fast as a container, with its own kernel.
5 technologies on this page ↓How it works
A microVM uses the same hardware virtualization as a normal VM, so each one gets its own kernel and a hard boundary from its neighbors. The monitor that runs it emulates only a few devices (a network card, a disk, a serial console) and no BIOS or USB, so there is far less to boot and far less to attack. Firecracker, the best-known one, starts a microVM in about 125 ms with under 5 MiB of overhead, so one host can run thousands. Many platforms also snapshot a booted VM and restore copies of it, which is faster than booting.
A row of locked hotel rooms instead of bunks in a shared dorm. Containers are the dorm: quick to fill, but everyone shares one building. MicroVMs give each guest their own room with its own lock, and housekeeping can still turn a room around in seconds.
Reach for it when
- Running code you didn’t write: AI agent sandboxes, online code playgrounds, customer plugins
- Building a multi-tenant platform where one customer must never reach another
- Giving each CI job or user session a fresh machine that is thrown away afterwards
Think twice when
- Your own trusted services, where plain containers are simpler and have better tooling
- Workloads that need GPUs or unusual devices; Firecracker emulates very few, and GPU passthrough isn’t in a release yet
- Hosts without KVM access, e.g. most cloud VMs unless they’re bare metal or allow nested virtualization
A real example
AWS Lambda isolates its function execution environments with Firecracker microVMs, so code from thousands of customers shares the same physical servers without sharing a kernel. When a burst arrives, new microVMs start in a fraction of a second, which is a large part of a cold start.
Technologies
Specific products, and what each does differently.
FirecrackerOpen sourceThe open-source microVM monitor AWS built for Lambda: a full VM boundary that boots in under 125 ms.
Kata ContainersOpen sourceA container runtime that starts each pod inside its own lightweight VM, so Kubernetes and Docker keep working but every pod gets its own kernel. Firecracker | Open source | Amazon Web Services | Apache 2.0 | 2026-10-05 |
Kata Containers | Open source | OpenInfra Foundation (part of the Linux Foundation since July 2025) | Apache 2.0 | 2026-10-06 |
| Open source | smol machines | Apache 2.0 (the hosted smol cloud is a paid service) | 2026-10-06 |
Also used for microvms
Products of other kinds that are often used this way, grouped by what they are.
| Platform as a service (PaaS) | Commercial product | Fly.io, Inc. | Proprietary | 2026-10-12 | |
Cloud Hypervisor | Hypervisors | Open source | Cloud Hypervisor project (Linux Foundation), started at Intel | Apache 2.0 and BSD-3-Clause | 2026-10-11 |
What each provider calls it
- AWS
- Firecracker (under Lambda), Lambda MicroVMs
- Google Cloud
- Cloud Run second-generation execution environment; GKE Sandbox microVMs (Kata Containers)
- Azure
- Container Instances, Container Apps dynamic sessions (Hyper-V isolation); AKS Pod Sandboxing (Kata Containers)
- Open source & others
- Firecracker, Cloud Hypervisor, Kata Containers, QEMU microvm, Fly.io Machines, E2B, smolvm
See it in a real stack
Architectures that use microvms
In code · bash
# Firecracker is configured over a REST API on a Unix socket
fc() { curl -s --unix-socket /tmp/firecracker.socket -X PUT "http://localhost/$1" -d "$2"; }
fc boot-source '{"kernel_image_path": "vmlinux", "boot_args": "console=ttyS0 reboot=k panic=1"}'
fc drives/rootfs '{"drive_id": "rootfs", "path_on_host": "rootfs.ext4", "is_root_device": true, "is_read_only": false}'
fc machine-config '{"vcpu_count": 2, "mem_size_mib": 1024}'
fc actions '{"action_type": "InstanceStart"}'Worth exploring
RuntimeClass that start each pod as its own VM (marked experimental, with its known blockers listed), or a whole k3s cluster, through k3d, inside one VM. Useful for the concrete details, such as per-pod overhead, the /dev/kmsg device the kubelet needs and why Docker’s storage must sit on ext4, but written to sell smolvm.Often confused with
Where it came from2017–2026
By the mid-2010s, anyone running other people’s code had two imperfect options. A virtual machine gave each tenant its own kernel and a hardware boundary, but general-purpose monitors like QEMU emulate a whole PC (BIOS, PCI bus, dozens of devices), which makes them large and slow to boot. Containers started in about a second but shared the host’s kernel, so isolation rested on one kernel shared with every neighbour. Serverless platforms, which start and stop thousands of short-lived sandboxes for strangers, needed the safety of the first with the speed of the second.
Two answers arrived within a year. In late 2017 Kata Containers merged Intel’s Clear Containers and Hyper’s runV to run each container inside its own lightweight VM. In November 2018 AWS open-sourced Firecracker, the monitor behind Lambda, and called its guests microVMs: a few virtio devices, no BIOS or PCI, under 125 ms to boot and under 5 MiB of overhead. The idea spread quickly. Cloud Hypervisor began in 2019 as a Rust monitor for general cloud workloads, and QEMU 4.2 added a microvm machine type “inspired by Firecracker” that December.
MicroVMs now sit under many serverless and sandbox platforms, and some restore them from snapshots instead of booting them at all.
Why it’s built this way
- Keep hardware virtualization, drop the PC
- The CPU’s virtualization features give the hard boundary; almost everything else a normal VM emulates is legacy hardware a cloud workload never touches. Removing it cuts boot time, memory and attack surface together.
- Paravirtual devices only
- Instead of imitating real network cards and disks, microVMs offer virtio devices that cooperate with the guest kernel, which is simpler and faster to emulate.
- Monitors written in Rust
- The monitor is the wall between tenants, so memory-safety bugs matter. Firecracker, crosvm and Cloud Hypervisor are all Rust and share components through the rust-vmm project.
- Restore from a snapshot instead of booting
- The VM boots fast, but starting a runtime and app inside it can take seconds. Snapshotting the VM after initialisation and restoring copies skips both; AWS says SnapStart can cut cold starts “from several seconds (or higher) to as low as sub-second”.
Timeline
- 2017
Kata Containers launches, merging Clear Containers and runV
- 2018
AWS open-sources Firecracker, already running Lambda
- 2019
Cloud Hypervisor starts; QEMU 4.2 adds a Firecracker-style
microvmmachine type - 2022
Lambda SnapStart restores functions from Firecracker snapshots
- 2026
AWS launches Lambda MicroVMs, stateful sandboxes built on Firecracker
- AWS News Blog: Firecracker, lightweight virtualization for serverless computing (2018)
- QEMU docs: the microvm machine type
- Cloud Hypervisor on GitHub
- AWS Compute Blog: Under the hood of Lambda SnapStart
- OpenStack Foundation: Kata Containers project launches (Dec 2017) · archived copy, original
- Firecracker FAQ: origins in crosvm and rust-vmm
- QEMU: version 4.2.0 released with the microvm machine (Dec 2019)
- AWS News Blog: AWS Lambda introduces MicroVMs (Jun 2026)
Sources19
- Firecracker website: boot time, overhead and density
- Firecracker FAQ: emulated devices
- Firecracker docs: Getting started (KVM requirement, API socket)
- Firecracker docs: Snapshot support
- Firecracker issue #5679: VFIO device passthrough support (open)
- Lambda docs: Tenant isolation (execution environments use Firecracker)
- AWS News Blog: AWS Lambda introduces MicroVMs (Jun 2026)
- AWS Containers Blog: Under the hood, the Fargate data plane (note: Firecracker references no longer accurate)
- Cloud Run docs: Execution environments (second generation is a microVM)
- Azure docs: Container Instances overview (hypervisor-level security)
- Azure docs: Container Apps dynamic sessions (Hyper-V isolation)
- Cloud Hypervisor on GitHub
- Kata Containers: Learn
- QEMU docs: the microvm machine type
- Fly.io docs: Architecture (apps run in Firecracker microVMs)
- E2B infra on GitHub (Firecracker microVM runtime)
- GKE docs: About GKE Sandbox (gVisor and Kata Containers microVMs)
- AKS docs: Pod Sandboxing (Kata Containers)
- smol-machines/smolvm on GitHub
