Open source · Apache 2.0

A single pane of glass for your KVM hypervisor fleet.

Inventory, live + offline migrations, snapshots, VNC consoles, mTLS between hosts, signed per-migration grants, in-app docs, Influx-backed metrics — all in one Go binary and a tiny agent.

Live demo Login admin / demo-password · 30 synthetic hypervisors · resets daily at 03:00 UTC

kvm-center dashboard — 30 hypervisors, 147 VMs, fleet activity chart, health pills, hypervisor cards with CPU and memory telemetry
Why kvm-center

Run KVM at any scale without an appliance, a license, or 50 SSH sessions.

Running KVM directly is great. Running ten of them is a chore. kvm-center gives you the central control surface KVM deserves — and ships as a single binary.

One server, many hypervisors

A stateless Go control plane and a ~7 MB agent per host. MongoDB for persistence, nothing else.

Migrations that just work

Live or offline, over native qemu+tls:// with Ed25519-signed per-migration grants. No SSH key sprawl, no shared NFS assumed.

Snapshots, consoles, metrics

Per-VM snapshot timelines, in-browser VNC, InfluxDB line-protocol metrics with a downloadable Grafana dashboard.

Auth that fits your org

Local users, API tokens, LDAP, SAML, OIDC, and 2FA — all in the same binary, configurable from the SPA.

Docs that ship with the code

server/docs/*.md is embedded and rendered in-app. The Help icon in the top bar is how your operators learn the product.

Signed releases, end to end

Cosign-signed Docker images. Public key versioned in the repo for offline verification.

What's in the box

Dashboard
Fleet-wide CPU / memory / storage rollup, health pills per host, recent migrations.
Hosts
Per-hypervisor telemetry, mTLS enrollment state, storage pools, network bridges.
VMs
Start, stop, restart, migrate, snapshot, console — sortable, searchable, bulk-selectable.
Migrations
Live + offline, transport toggle, advanced modal for pool picker, VM rename, MAC regen.
Snapshots
Per-VM timelines, fleet-wide snapshot overview, create / revert / delete.
Metrics
Influx v2 sink, Grafana dashboard JSON served from /api/grafana/dashboard.json.
Audit
Every state-changing action, filterable, shippable to syslog or HTTP.
kvmctl
Cross-platform CLI for scripting against the same API.
Get started in minutes

Two install paths. Same kvm-center.

Pick on convenience, not lock-in. Switching later is "point the new install at the same Mongo and shut the old one down."

Private beta
The Docker Hub image and source repo are gated during the beta. The commands below are exactly what will work on day one of the public release — they just need beta access right now (homelab is running v5.61.0; we're a battery pass away from flipping the repo public). Request access in Discord or try the live demo instead.

Smallest possible footprint. Multi-arch image (amd64 + arm64). Cosign-signed every release. Apple silicon Macs pull arm64 natively.

docker run -d --name kvm-center -p 8190:8443 \
  -v kvm-center-data:/var/lib/kvm-center \
  -e KVM_CENTER_PUBLIC_URL=https://localhost:8190 \
  thedon21/kvm-center:latest

Open https://localhost:8190, accept the cert, walk the captive setup wizard. Full docker-compose recipe + MongoDB-persistence guide ship with the public repo — Coming soon

For custom OS, ops shops with config-management, or hosts that already have everything they need. Interactive installer walks you through Mongo creds, cluster DNS, and writes .env mode 0600.

git clone https://github.com/donovanm21/kvm-center /opt/kvm-center
cd /opt/kvm-center
scripts/bootstrap.sh --interactive

Stack comes up on port 8190. Skip the TUI with scripts/bootstrap.sh --deploy for CI flows. Full "Getting started" guide ships with the public repo — Coming soon

How it fits together

Stateless control plane. Tiny agents. Zero dependencies you don't already run.

The kvm-center-server runs anywhere a Go binary runs and talks HTTPS to a ~7 MB agent on each hypervisor. East-west traffic between hosts uses native qemu+tls:// with Ed25519-signed migration grants — no SSH key sprawl, no shared NFS, no second control plane.

State lives in MongoDB. Optional Influx + Grafana for metrics. Auth plugs into whatever IdP you already trust (LDAP, SAML, OIDC) or runs standalone with local users + 2FA.

Read the architecture docs
Browser ─── :8190 ──▶  kvm-center-server (Go)
                       │   HTTPS · session / bearer
                       ▼
                  MongoDB persistence
                       ▲
                       │   HTTPS
                       ▼
           ┌────────────┬────────────┐
           │            │            │
        hv01:8081    hv02:8081    hv03:8081
        (kvm-center-agent systemd)
           ↕            ↕            ↕
           └── qemu+tls :16514 (east-west) ──┘
                signed grants · libvirt hook enforced

Ready to centralise your KVM fleet?

Closed beta is open — request access in Discord.