Rory McCune

BareMetalVMM

Spin up Firecracker microVMs like containers, and keep the isolation of a VM

Pen and dot-screen drawing of an open rack chassis on a workbench, a row of identical sealed modules slotted inside and one pulled halfway out, a screwdriver beside it.

A command-line tool for running lightweight Firecracker microVMs and Kubernetes clusters on bare-metal Linux hosts. VMs boot in seconds with their own kernel, can be built from any Docker image, and are reachable over SSH or a web console.

I wanted something that feels like Docker for day-to-day test environments, but with more isolation than a container gives, and room for lower-level work that doesn’t suit Docker well: custom kernels, kernel debugging builds, whole Kubernetes clusters.

What it does

  • Creates, starts, stops and snapshots Firecracker microVMs, each with a dedicated kernel.
  • Builds a VM root filesystem from a Docker image, so a custom VM is a Dockerfile away.
  • Brings up multi-node Kubernetes clusters with kubeadm and Cilium, or single-node MicroShift.
  • Handles bridge networking, NAT, port forwarding and host directory mounts.
  • Ships an optional web UI with a browser terminal and a JSON API.
  • Supports security-research kernels, including KASAN builds, for vulnerability and exploit testing.

It is personal software, built largely with Claude Code and tested on Ubuntu 24.04 with KVM. It works for me; other environments may need some care.

Documentation Source on GitHub