Export, convert, and deploy VMs from VMware, Hyper-V, Nutanix, AWS, Azure, GCP and more —
with offline guest fixes, a web control plane, and a Kubernetes-native operator.
First-boot science for hypervisor exit · day-2 on Zeus OS · part of the Zyvor suite
Install · Quick start · GuestKit · Remote deploy · Demos · CE vs Enterprise · Docs · Product
Hypervisor exit fails when VirtIO is missing, GRUB is wrong, or Windows still points at the old hypervisor — after you cut over.
h2kvm converts the disk offline, runs GuestKit repair, and deploys to libvirt / KubeVirt / OpenStack so first boot is planned, not guessed.
VMware · Hyper-V · cloud disks · …
│
▼
┌──────────────────────────┐
│ h2kvm │──► convert → qcow2 / raw
│ h2kvmctl · h2kweb │──► GuestKit inspect + repair
│ K8s / OLM operator │──► deploy · validate · rollback
└──────────────────────────┘
│
▼
libvirt · KubeVirt · Glance/Nova
│
▼
Zeus OS (day-2)
| GuestKit offline fix | 8+ disk formats | 35+ guest OS | CLI · web · operator |
|---|
Suite path: HyperSDK export → GuestKit assure → h2kvm convert & deploy → Zeus OS day-2.
v1.1.0 — GuestKit from PyPI; h2kvm from the GitHub Release wheel.
pip install "hypersdk-guestkit>=1.1.0"
pip install https://github.com/zyvorai/h2kvm/releases/download/v1.1.0/h2kvm-1.1.0-py3-none-any.whlFrom source (extras / development):
git clone https://github.com/zyvorai/h2kvm.git
cd h2kvm
pip install -e ".[full]"Host needs Linux with qemu-img, qemu-nbd, and losetup. Repair and NBD mounts often need root or H2KVM_USE_SUDO=1.
| Artifact | Where |
|---|---|
| h2kvm 1.1.0 | GitHub Release (wheel + sdist) |
| hypersdk-guestkit ≥ 1.1.0 | PyPI |
| Operator image | ghcr.io/zyvorai/h2kvm/operator:v1.1.0 |
# Local VMDK → qcow2 (GuestKit repair is the default backend)
h2kvmctl local --vmdk ubuntu.vmdk --to-output ubuntu.qcow2 --backend guestkit
# Live migration from vSphere
h2kvmctl migrate --source vmware --vm web-prod-01 --target kvm
# Web dashboard
h2kweb
# → https://localhost:5070
# Kubernetes operator
kubectl apply -f operator/deploy/| Surface | What you get |
|---|---|
| CLI | h2kvmctl / h2k |
| Web | h2kweb dashboard — web/ |
| TUI | zkvm terminal UI |
| Operator | K8s / OpenShift — operator/, olm/ |
| Helm | Production charts — helm/ |
| Fix engine | GuestKit run_migrate_repair + h2kvm injectors |
| You want… | Go here |
|---|---|
| Full docs | docs/README.md |
| Remote SSH deploy | docs/deployment/deploy-remote.md |
| GuestKit wiring | docs/architecture/GUESTKIT.md |
| Examples | examples/ |
| CE vs Enterprise | docs/ce-vs-enterprise.md |
Offline inspect and repair run through GuestKit — fstab, GRUB, initramfs, and hypervisor-aware fixes via guestkit.run_migrate_repair(). h2kvm does not re-implement that engine in pure Python.
from h2kvm.core import guestkit_client
report = guestkit_client.doctor("ubuntu.qcow2", target="kvm", explain=True)
result = guestkit_client.migrate_repair("ubuntu.qcow2", target="kvm", apply=True)# Pre-flight with the GuestKit CLI
guestkit doctor ubuntu.vmdk --target kvm --explainDebian/Ubuntu libvirt: after convert, chown libvirt-qemu:kvm on the output qcow2 before virsh start. See troubleshooting.
More: GUESTKIT.md · API · GuestKit repo
One SSH command installs system deps, h2kvm, GuestKit (from PyPI), and optionally h2kweb:
./scripts/deploy-remote.sh 175.110.122.71 sus --keep-sources
# GuestKit CLI binary (separate repo)
cd /path/to/guestkit
GUESTKIT_ZYVOR_ACCEPT=1 ./scripts/deploy-remote.sh 175.110.122.71 sus --quick --keyEnd-to-end demo on the target (osboxes Ubuntu VMDK):
sudo bash ~/.deployments/h2kvm/scripts/demo-libvirt.sh \
~/demo/ubuntu2404.vmdk ubuntu-test --memory 4096 --vcpus 2Full guide: docs/deployment/deploy-remote.md
▶ Live console tour h2kweb — progress, migrate, deploy |
▶ Full tutorial End-to-end conversion walkthrough |
▶ Feature deep dive Offline fix · Windows · targets |
▶ Product page Architecture · editions · PoC |
Recorded against real deployments — more demos →
| Before h2kvm | With h2kvm |
|---|---|
| 18-month “migration project” | One pipeline: browse → migrate → deploy |
| Guest drivers break on first KVM boot | GuestKit offline fix for 35+ OS versions |
| Windows needs a war room of tribal scripts | Automated VirtIO / hivex / RDP path |
| No visibility mid-conversion | h2kweb progress · webhooks · email |
| K8s teams stuck on libvirt YAML | Libvirt → KubeVirt one-click path |
| Cutover outcomes unowned | Enterprise: 96.8% automated first-boot + PS |
Community proves convert. Enterprise owns cutover night.
CE is for labs and single-cluster PoC. Moving a Windows estate, SAN-backed waves, or multi-site fleets? No war-room, no HA fabric, no LTS/CVE contract on CE. Buy Enterprise.
| Community / public CE (this repo) | Enterprise | |
|---|---|---|
| Who it is for | Labs · DIY pipelines | Migration leads · multi-wave cutovers |
| Convert + GuestKit offline fix | ✅ | ✅ + validated fleet playbooks |
| CLI · h2kweb · zkvm · operator | ✅ Eval / single-cluster | ✅ HA · multi-namespace tenancy |
| Windows path | Automated VirtIO / registry | ✅ + war-room / PS runbooks |
| Storage pipelines | Local / libvirt / KubeVirt / Glance | ✅ + SAN / Ceph / NetApp |
| Pre-flight | GuestKit planner | ✅ + GuestKit fleet risk scoring |
| First-boot | Strong offline fix | 96.8% automated path + PS |
| Support | Community | SLA · LTS · CVE · hypervisor-exit programs |
| Day-2 | Hand off to Zeus OS | ✅ Licensed suite path |
- A lab operator is not a multi-wave cutover fabric
- Windows estates need war-room playbooks — VirtIO alone is not enough
- Production needs HA, tenancy, and CVE/LTS under contract
- Storage teams need SAN/Ceph pipelines with a named owner
- You want Zyvor accountable for first-boot — not Issues at 2 a.m.
flowchart LR
H["HyperSDK<br/>export"] --> G["GuestKit<br/>assure"]
G --> K["<b>h2kvm</b><br/>convert · fix · deploy"]
K --> T["KVM · KubeVirt"]
T --> Z["Zeus OS<br/>day-2"]
classDef accent fill:#F97316,stroke:#EA580C,color:#fff;
classDef muted fill:#F3F4F6,stroke:#D1D5DB,color:#111827;
class K accent;
class Z muted;
| Product | Role |
|---|---|
| HyperSDK | Multi-cloud / vSphere · Nutanix export |
| GuestKit | Offline disk doctor + Passport + run_migrate_repair |
| h2kvm (this repo) | Convert + GuestKit offline fix + libvirt/KubeVirt deploy |
| Zeus OS | Day-2 KubeVirt / cloud control plane |
| Machina | Physical hypervisor OS (libvirt/KVM) |
| PacketWolf | Kernel-native network intelligence |
→ zyvor.dev · hypervisor exit program
| Enterprise / PoC | Book a demo · sales@zyvor.dev |
| Community | GitHub Issues |
| Product | zyvor.dev/h2kvm |
See LICENSE and docs/legal/ for terms. Community / eval builds are for labs and integration — production fleets and SLAs are Enterprise.