Skip to content

Installation

Terminal window
curl -fsSL https://raw.githubusercontent.com/auser/mvm/main/install.sh | sh
Terminal window
MVM_VERSION=v0.7.0 curl -fsSL https://raw.githubusercontent.com/auser/mvm/main/install.sh | sh
Terminal window
git clone https://github.com/auser/mvm.git
cd mvm
cargo build --release
cp target/release/mvmctl ~/.local/bin/
Terminal window
cargo install mvmctl
Terminal window
mvmctl update
  • macOS (Apple Silicon or Intel) or Linux (x86_64 or aarch64)
  • Homebrew (macOS only — mvmctl will install it if missing)

mvmctl automatically detects your platform at startup and selects the best VM backend:

PlatformBackendWhat happens
Linux with /dev/kvmFirecrackerRuns directly on KVM. No Lima needed.
macOS 26+ (Apple Silicon)Apple ContainerUses Virtualization.framework. No Lima needed.
Docker availableDockerContainer-based fallback. Runs anywhere Docker does.
macOS <26Lima + FirecrackerLima VM provides /dev/kvm. Builds and Firecracker run inside Lima.
Linux without /dev/kvmLima + FirecrackerLima VM as fallback (same as macOS <26).

After installation, run the setup wizard:

Terminal window
mvmctl init

This walks through platform detection, dependency installation, Lima VM creation (if needed), default network setup, and XDG directory creation. Use --non-interactive for scripted environments.

Running mvmctl dev or mvmctl bootstrap also handles setup automatically — they detect your platform, select the backend, install Lima only if needed, and set up Nix and Firecracker in the right environment.

You can force a specific backend with --hypervisor:

Terminal window
mvmctl up --flake . --hypervisor apple-container
mvmctl up --flake . --hypervisor firecracker
mvmctl up --flake . --hypervisor docker
mvmctl up --flake . --hypervisor qemu # microvm.nix

Use mvmctl doctor to check which backends are available on your system.