Firecracker is a virtualization technology for running secure, multi-tenant container and function workloads in lightweight virtual machines called microVMs. A microVM combines the isolation of hardware virtualization with the speed and flexibility of containers, and Firecracker is built for services that follow a serverless operating model.
Its core is a minimal virtual machine monitor that uses Linux KVM to create and run microVMs. It leaves out unnecessary devices and guest-facing features to cut each microVM's memory footprint and attack surface, which also shortens startup and raises hardware utilization. It was developed at Amazon Web Services for AWS Lambda and AWS Fargate and has been integrated into container runtimes such as Kata Containers and Flintlock.
Each Firecracker process exposes a host-side API, specified in OpenAPI, for configuring and starting one microVM: vCPUs, memory, CPU templates, network interfaces, block devices, rate limiters, vsock, entropy and pmem devices, memory hotplug, and a guest metadata service. A jailer process applies cgroup and namespace isolation and drops privileges for production use, and thread-specific seccomp filters restrict system calls. It is tested on Intel, AMD, and Graviton bare-metal EC2 instances with Linux host and guest kernels.
Features
- MicroVM isolation: hardware-virtualized isolation per workload with container-like startup speed
- Minimal VMM: a KVM-based monitor that omits unneeded devices to reduce memory footprint and attack surface
- Host API: an OpenAPI-specified endpoint to set vCPUs, memory, CPU templates, network interfaces, and disks
- Block devices: file-backed read-write or read-only disks, live rescans, and backing-file changes before or after boot
- Rate limiting: per-device bandwidth and operations-per-second limits for virtio devices
- Extra devices: vsock sockets, entropy and pmem devices, memory hotplugging, and PCI device hot-plug in developer preview
- Guest metadata service: a configurable metadata data tree available to the guest (beta)
- Jailer: starts Firecracker inside a cgroup and namespace barrier and then drops privileges
- Seccomp filtering: thread-specific system call filters for each component
- Oversubscription: demand fault paging and CPU oversubscription on by default



