Run real VMs across a cluster — from one static binary, with no master node.
litevirt is a masterless KVM/QEMU orchestrator: scp one ~35 MB binary to each host and you
have a self-replicating cluster with live migration, automatic failover, snapshots, deduplicated
backups, and a web UI. No external database, no agents, no control-plane to babysit. The
post-Broadcom Proxmox alternative for homelabs, SMBs, and service providers.
Full KVM VMs · Live migration · Auto-failover · Snapshots & backup · mTLS + RBAC · Compose-style YAML · Web UI & REST API
| litevirt | Proxmox VE | bare libvirt | k8s + KubeVirt | |
|---|---|---|---|---|
| Single static binary — no DB, no agents | ✅ | ❌ | ❌ | ❌ |
| Masterless — no central control plane | ✅ | n/a | ❌ etcd | |
| Live migration (zero-downtime) | ✅ | ✅ | manual | ✅ |
| Automatic failover + fencing | ✅ | ✅ | ❌ | ✅ |
| Compose-style multi-VM YAML | ✅ | ❌ | ❌ | |
| Disk and live/RAM snapshots | ✅ | ✅ | ||
| Dedup backup + incremental replication (DR) | ✅ | ✅ | ❌ | |
| GPU / PCI passthrough (+ hot-plug) | ✅ | ✅ | manual | ✅ |
| mTLS everywhere + RBAC + OIDC/LDAP + 2FA | ✅ | ❌ | ✅ | |
| Footprint | ~35 MB | full distro | library | heavy |
make build # → bin/litevirt (+ bin/lv symlink)
# Single node (run on the host itself)
sudo cp bin/litevirt /usr/local/bin/
sudo ln -sf /usr/local/bin/litevirt /usr/local/bin/lv
sudo litevirt host init --local --name node-1
sudo systemctl enable --now litevirt.service
# Run a VM
export LV_HOST=root@127.0.0.1
lv image pull https://cloud-images.ubuntu.com/.../jammy-server-cloudimg-amd64.img --name ubuntu
lv run --name my-vm --image ubuntu --cpu 2 --memory 2048
lv lsAdd more hosts with lv host init root@<ip> --name node-2 — they auto-join and start replicating.
Full walkthrough in docs/installation.md.
The daemon (litevirt daemon) hosts VMs and needs Linux + KVM/QEMU. The same binary is also
the CLI/UI client, and that half runs anywhere — so a Mac can drive a remote Linux cluster over
gRPC/mTLS. macOS builds ship in every release, and via the Homebrew tap:
brew install colonelpanik/litevirt/litevirt
export LV_HOST=<host> # remote node; gRPC/mTLS on :7443 (creds in ~/.config/litevirt/pki)
lv host ls| 🖥️ Compute | Full KVM/QEMU VMs (UEFI, cloud-init, VNC/SPICE, guest agent) · hot-plug disks/NICs/GPU · virtio memory ballooning · live reconfigure of CPU/restart-policy/autostart |
| 🌐 Networking | Bridge · VXLAN overlays · isolated networks · SR-IOV · built-in DHCP/DNS (dnsmasq) · NAT/SNAT · host isolation · embedded <vm>.<stack>.<domain> DNS |
| 🔁 Resilience | Live + cold + storage migration · quorum auto-failover with IPMI/watchdog fencing · per-VM restart policy · witness host for even-N clusters · safe self-upgrade with auto-rollback |
| 💾 Data | Disk + live/RAM snapshots · PBS-style deduplicated backups with guest fs-freeze · incremental volume replication + promote-on-fence (DR) · 8 storage drivers (local/dir/NFS/iSCSI/Ceph/ZFS/btrfs/LVM-thin) |
| 🧩 Orchestration | Docker-Compose-style multi-VM stacks · placement policies + anti-affinity · live rebalancer · HAProxy + keepalived L4 load balancing · GitOps reconcile loop · VM templates & clones |
| 📦 Containers | LXC/OCI containers — lifecycle + Compose · dedup backup/restore · snapshots · cold migration · templates & clones · host-loss relocation · shared tenancy quota, audit-chain & metrics |
| 🔐 Security | mTLS everywhere (auto ECDSA P-256 PKI) · path-based RBAC · Local/OIDC/LDAP realms · TOTP + WebAuthn 2FA · scoped API tokens · tamper-evident audit hash-chain |
Decentralized by design: every host is equal, state replicates via the Crescent protocol
(relay-quorum topology, wall-clock last-writer-wins on each row's updated_at, anti-entropy drift
detection) — scaling to hundreds of nodes with no master to lose.
More screenshots

Per-VM live metrics — CPU, memory, disk & network

VM creation — resources, boot, passthrough, cloud-init, networking
| Installation | Build, bootstrap a cluster, add hosts |
| CLI Reference | All lv commands and flags |
| Configuration | Daemon config reference |
| Compose Stacks | Multi-VM YAML, restart policy, update strategy |
| Networking | Bridge, VXLAN, SR-IOV, IPv6 |
| Storage | Local, NFS, Ceph, iSCSI backends |
| Migration & Failover | Live migration, health checks, fencing, witness |
| Placement & Rebalancer | Policy axes, named modes, scope chain |
| Upgrades | Pre-flight gates, upgrading state, auto-rollback |
| Operating Model | Cluster guarantees, recovery playbook |
| GPU & PCI Passthrough | Device assignment, SR-IOV, hot-plug |
| Containers (LXC/OCI) · REST API · Web UI · Notifications · Telemetry |
make build # single binary bin/litevirt (~35 MB, static, no CGO) + bin/lv symlink — Go 1.26+
make testlitevirt daemon runs the server; litevirt <cmd> (or lv <cmd>) is the CLI. Ports: 7443
gRPC/mTLS · 7444 metrics · 7445 web UI · 7446 REST · 7946 cluster membership.



