Skip to content

Platform support

mvm supports local microVM workflows on native Linux with KVM and on Apple Silicon macOS. Windows is tracked as future host work. Docker exists as a convenience fallback, not as a security-equivalent microVM backend.

Use this page to decide where to run mvmctl, where Linux image builds happen, and which backend limitations apply.

HostArchitectureRuntime backendStatusNotes
Linux with /dev/kvmx86_64, aarch64FirecrackerSupportedStrongest local target; direct KVM microVM path.
macOS Apple Siliconaarch64Apple Virtualization / libkrun-backed pathsSupportedLocal development and runtime path for M-series Macs.
Linux without /dev/kvmx86_64, aarch64Docker fallbackLimitedConvenience only; not a microVM isolation boundary.
Windows nativex86_64, aarch64NoneFutureTracked in mvm#428.
WSL2 with nested KVMx86_64, aarch64Experimental Linux pathFuture/experimentalMay expose /dev/kvm; not a supported host path today.
Intel macOSx86_64NoneUnsupportedUse Linux KVM or Apple Silicon macOS.

The guest image is a Linux artifact even when the host is macOS. mvmctl build is still a host command, but Linux-specific work belongs to the builder boundary.

HostWhere Nix/Linux image work happensUser command
Linux with KVMNative Linux path or project builder boundary, depending on command.mvmctl build
macOS Apple SiliconProject builder VM.mvmctl build
Windows/WSL2 future pathFuture Linux backend/builder design.Not supported today.

You do not need host-side Nix for normal mvmctl build usage. The builder path owns Linux evaluation, image assembly, and artifact extraction.

Build time and runtime are separate. After an image is built:

  • Linux with KVM boots through Firecracker.
  • Apple Silicon macOS uses the supported macOS runtime backend path.
  • Docker fallback runs containers and drops microVM isolation claims.
  • Windows native does not have a supported runtime backend today.

When reporting runtime behavior, include host OS, CPU architecture, selected backend, mvmctl doctor output, and whether /dev/kvm was available.

Nix target strings describe the Linux guest artifact, not the host operating system:

HostCommon guest target
Apple Silicon macOSaarch64-linux
ARM Linuxaarch64-linux
Intel/AMD Linuxx86_64-linux

The OS segment is linux because the workload runs inside a Linux guest.

Backend pathSecurity posture
Firecracker on Linux/KVMPreferred local microVM isolation target.
Apple Virtualization / libkrun-backed macOS pathSupported local microVM path with backend-specific feature differences.
Docker fallbackReduced isolation; do not use for untrusted code or security-sensitive workloads.
WSL2 nested KVMResearch/future path until tested and documented as supported.

Security-sensitive examples should name the backend when behavior differs.