MVMCTL · CONTAINER SPEED, VM ISOLATION

Manage microVMs with one focused CLI

mvmctl is the modern way to run microVMs — get the startup speed of containers with the security and isolation of traditional VMs. Built for developers who need lightweight, fast-booting virtual machines without the overhead.

Install paths

3

Command groups

18

Primary platform

Linux

Terminal

# interactive host setup
mvm init
mvm kernel pull --type firecracker
mvm image pull ubuntu --version 24.04
mvm vm create myvm --image ubuntu:24.04
mvm exec myvm

What mvmctl gives you

Container speed with VM isolation — one CLI to create, connect, snapshot, and tear down Firecracker microVMs. Single binary, zero runtime deps, all the ergonomics you expect from a modern tool.

Fast as containers, isolated as VMs

2-4 second boot with a dedicated kernel per VM. Rootfs is loop-mounted in-place — no extraction, no kernel sharing. Firecracker at the core, KVM isolation at the edges. Container-like ergonomics, real VM isolation.

  • 2-4s boot with dedicated kernel per VM
  • Loop-mount provisioner — mount, don't extract
  • mvm vm create && mvm ssh — works like docker run, but with KVM

Everything you need, nothing you don't

One statically-linked Go binary, no runtime dependencies. One command for the kernel, one for the image. mvmctl pulls every piece of the Firecracker stack so you don't have to hunt for matching versions.

  • Single binary — zero runtime deps, just drop it in your PATH
  • mvm kernel pull — tuned kernels on demand
  • mvm image pull — ready-to-boot images, or import from a running VM
  • mvm init — idempotent host setup: KVM, bridges, firewall, sudoers

No SSH required

Commands, file transfer, and console access all work over vsock — no SSH daemon, no exposed ports, no guest networking needed.

  • mvm exec — run commands via embedded vsock agent
  • mvm cp — file transfer over vsock, no tar-over-SSH
  • mvm console — serial console relay via PTY + Unix socket

Environment as code

Define complete VM environments in a single YAML spec. One command to apply, one to destroy. Batch creation with atomic rollback.

  • Declarative YAML with dependency ordering
  • Atomic batch — all succeed or all roll back
  • mvm env apply / mvm env destroy

Real host integration

Run mvm init once and the host is ready — KVM, bridge networking, firewall, sudoers. Day-to-day commands never need sudo.

  • Idempotent mvm init — KVM, bridges, firewall, sudoers
  • Named bridge networks with NAT via nftables or iptables
  • Persistent volumes — attach, resize, detach, survive VM teardown

Custom kernels & snapshots

Pre-built Firecracker kernels or custom official builds with extra features. Snapshot a running VM and restore it later, state intact.

  • Firecracker CI kernels or custom builds with --features
  • Kernel config overlays for advanced use cases
  • Snapshot running VMs and restore later

SSH that just works

Import or generate keys with mvm key, set defaults — every VM picks them up automatically. No cloud-init edits, no post-bake injection.

  • mvm key import — add existing host keys to the cache
  • mvm key create — generate keypairs, set as default
  • Defaults auto-inject on mvm vm create, no --ssh-key flag needed
  • mvm ssh <vm> — full shell, private key auto-detected

Install it your way

Use tabs to switch install paths. Binary is the fastest route to first boot.

Prebuilt binary

Recommended · no Go toolchain needed

Terminal

# See https://github.com/AlanD20/mvmctl/releases for all versions
mkdir -p ~/.local/bin
curl -L -o ~/.local/bin/mvm https://github.com/AlanD20/mvmctl/releases/latest/download/mvm
chmod +x ~/.local/bin/mvm
mvm --help

Installation + first-boot docs

Follow a concise path from Linux prerequisites to host initialization and your first running VM.

Docs guide

Includes prerequisites, package commands per distro, one-time mvm init host setup, and a verified quick start from kernel fetch to SSH.