Skip to main content

GuestKit

Offline VM intelligence. Migration assurance you can prove.
Score boot readiness before power-on · repair disks offline · certify cutover with a Passport

CI crates.io PyPI Apache-2.0 GHCR

Product · Demos · Suite path · Quick start · h2kvm · FluxVM · Wiki · Open source vs Enterprise · 30-day Enterprise trial · Book a demo


The cutover problem — solved offline

Every hypervisor exit fails the same way: you discover the disk was broken at 2am, in the cutover window, after power-on.

GuestKit reads the disk while the guest is off, scores first-boot probability 0–100, and emits a reviewable fix plan — no appliance daemon, no “just try it and hope.”

  disk.qcow2 / .vmdk / .vhdx / .vhd / .vdi / .raw
                    │
                    ▼
         ┌──────────────────────┐
         │  Pure-Rust engine    │──►  doctor 0–100 + blockers
         │  NBD / loop mount    │──►  migrate-plan YAML
         └──────────────────────┘──►  Passport · repair · CI gate
                    │                 guestkit-qemu (assured launch)
      CLI · TUI · QEMU · Python · Web · Agent · GitHub Action
70+ commands 6 disk formats
**0 appliance daemons 8 migration targets
Apache-2.0 Used in CI, labs, and hypervisor-exit programs

Certify with GuestKit → run & manage with FluxVM → convert & deploy with h2kvm → operate on Zeus OS.


Who does what (customers)

You need… Use
Score / repair a disk before power-on This repo (GuestKit)
Boot the qcow2, give it a network, SSH, TTL, pause/resume FluxVM
Hypervisor → KVM convert + import h2kvm

GuestKit does not own production networking (TAP/bridge/netns/DHCP) or disposable fleet lifecycle. That is FluxVM. Keep GuestKit focused on offline intelligence.

End-to-end: certify → run → manage

# ── 1. Certify & repair (GuestKit) ─────────────────────────────
guestkit doctor disk.qcow2 --target kvm --explain
guestkit plan generate disk.qcow2 -p virtio-initramfs -o virtio.yaml
guestkit plan apply virtio.yaml --vm disk.qcow2 --yes   # as needed
guestkit gate --image disk.qcow2 --fail-below 80        # CI / cutover gate
guestkit passport emit disk.qcow2 --target kvm -o passport.json

# ── 2. Run & manage (FluxVM) ─────────────────────────────────
# Point FluxVM at the same (or repaired) qcow2 — see FluxVM README.
# Overlay keeps the base disk untouched; pick a network mode:
#
#   user     — lab SSH via hostfwd (simplest)
#   tap      — join existing bridge (LAN DHCP)
#   tap+netns— known guest IP + NAT (isolated)
#
#   fluxvm create --spec my-vm.json
#   fluxvm get <id>          # status + guest_ip when netns
#   fluxvm exec <id> -- uptime
#   fluxvm delete <id>

Docs: VM lifecycle / suite split · FluxVM · Passport handoff

Libvirt / virsh → suite map

Old habit Replacement
virsh define / start / destroy (host-local QEMU) FluxVM create / get / delete
libvirt NAT / bridge DHCP / guest IP FluxVM user / tap+bridge / tap+netns (guest_ip)
virsh qemu-agent-command guestkit qga (or fluxvm exec with vsock agent)
“Will it boot?” by virsh start guestkit doctor / passport / gate before FluxVM create
KubeVirt / OpenShift domains virtctl / Machina (unchanged)

Full map: virsh-to-guestkit.md.


See it in action

GuestKit CLI and TUI demo
▶ CLI & TUI

Offline VM intelligence, explained
GuestKit web dashboard overview
▶ Web Dashboard — Overview

Server Image Vault, live KubeVirt cluster
GuestKit web dashboard deep dive
▶ Web Dashboard — Deep Dive

Sources, live cluster, one-click intelligence
Machina × GuestKit live guest-agent UX
▶ Machina × GuestKit

Live Linux guest agent — health, TRIM, netplan, services

Recorded live against real deployments — no staged screenshots.


Why teams switch

Before GuestKit With GuestKit
“Will it boot?” answered at power-on Offline doctor score + root-cause chain
guestkit scripts and tribal knowledge Structured plans, JSON/YAML, CI gates
Surprises on cutover weekend Hypervisor-aware migrate-plan + day-0 packs
No audit trail MTV / virt-v2v can skip Signed Cutover Passport
Fleet drift invisible until outage fleet analyze / watch, forensic diff, policy-as-code
Migration order guessed by hand fleet wave-plan — dependency-aware waves
Deep inspect needs a running guest Carbon TUI + in-guest agent over QGA
Assured first boot still means hand-built QEMU argv guestkit-qemu plans/runs from the same evidence gate
Live guest ops still mean virsh qemu-agent-command guestkit qga / agent-call speak the QGA socket directly

60-second quick start

cargo install guestkit          # guestkit + guestctl + guestkit-qemu

guestkit doctor vm.qcow2 --target proxmox --explain
guestkit migrate-plan vm.vmdk --target kvm --export plan.yaml
guestkit passport emit vm.qcow2 --target kvm -o passport.json
guestctl tui vm.qcow2           # Assurance · preview · export
guestkit-qemu plan vm.qcow2 --json   # assurance → QEMU definition

# Shrink an oversized-but-mostly-empty disk to its real footprint before import
guestkit shrink disk.qcow2 --dry-run                     # report only
guestkit shrink disk.qcow2 --min-ratio 3 --headroom-pct 20

CI gate — same score, no CLI install step:

- uses: zyvorai/guestkit@v1
  with:
    disk: vm.qcow2
    target: kvm
    fail-below: '80'

Targets: kvm · proxmox · qemu · kubevirt · aws · azure · gcp · hyperv

Host needs: Linux with qemu-img, losetup, and qemu-nbd (mount/repair may need root).

Python (v1.1.0+)

Same assurance engine as the CLI — on PyPI and used by h2kvm offline fixer:

pip install "hypersdk-guestkit>=1.1.0"
import guestkit

guestkit.run_doctor("vm.qcow2", target="kvm", explain=True)
guestkit.run_migrate_repair("vm.qcow2", target="kvm", apply=False)  # dry-run
guestkit.run_migrate_repair("vm.qcow2", target="kvm", apply=True)   # apply fixes

See python-bindings.md and examples/python/assurance_doctor.py.

You want… Go here
First hour Getting started
Python assurance APIs python-bindings.md
Assured QEMU launch qemu-runtime.md
h2kvm pipeline hyper2kvm-integration.md
Remote SSH deploy DEPLOY-REMOTE.md
Cheat sheet Quick reference
Full feature map Customer feature guide
Open source vs Enterprise ce-vs-enterprise.md

h2kvm integration

GuestKit provides offline disk intelligence; h2kvm provides hypervisor-to-KVM conversion and deploy.

  guestkit doctor / migrate-plan     ← pre-flight score + fix plan
              │
              ▼
  h2kvmctl local --backend guestkit  ← convert + run_migrate_repair
              │
              ▼
  libvirt · KubeVirt · OpenStack
# GuestKit from PyPI; h2kvm from GitHub Release
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.whl

# Pre-flight
guestkit doctor source.vmdk --target kvm --explain

# Convert + offline repair
h2kvmctl local --vmdk source.vmdk --to-output out.qcow2 --backend guestkit

Deploy both to a lab host:

GUESTKIT_ZYVOR_ACCEPT=1 ./scripts/deploy-remote.sh HOST user --quick --key   # GuestKit CLI
cd /path/to/h2kvm && ./scripts/deploy-remote.sh HOST user --keep-sources      # h2kvm

Full guide: hyper2kvm-integration.md · h2kvm README


What you can do

Assure · plan · certify · launch

guestkit doctor vm.qcow2 --target proxmox --explain
guestkit migrate-plan vm.vmdk --target proxmox --export plan.yaml
guestkit passport emit vm.qcow2 --target kvm -o passport.json
guestkit passport verify passport.json --fail-below 80
guestkit-qemu run vm.qcow2 --min-boot-score 80 --qmp-socket /run/guestkit/vm.qmp

Repair offline (no boot required)

guestkit plan generate disk.qcow2 -p linux-ssh --user ubuntu --key-file ~/.ssh/id_ed25519.pub
guestkit rescue disk.qcow2 -o enable-ssh
guestkit rescue disk.qcow2 -o fix-grub --force
guestkit rescue win.qcow2 -o reset-password --user Administrator --password '…'
guestkit plan apply plan.yaml --vm disk.qcow2 --yes     # backups + rollback

Local VM lifecycle, disk tools, and cutover

guestkit vm define demo disk.qcow2 --memory-mb 4096 --vcpus 2
guestkit vm start demo && guestkit vm status demo
guestkit img check disk.qcow2 --repair
guestkit domain-disks /etc/libvirt/qemu/web01.xml
guestkit firstboot win.qcow2 --hostname web01 --run 'echo hi'
guestkit gate --image disk.qcow2 --fail-below 80 --rego policies/cutover.rego
guestkit sbom-diff before.spdx.json after.spdx.json --fail-on-drift
virtctl-guestkit guestfs -n ns pvc

Live control · platform · AI

  • In-guest agent (Linux + Windows) over virtio-serial / QGA — inject offline, then agent-proxy / agent-call
  • guestkit qga — drop-in for virsh qemu-agent-command (direct unix socket; no virsh by default) — virsh-to-guestkit.md
  • Optional AI (--features ai) — read-only tool-calling over the offline evidence snapshot; MCP server via --features mcp
  • KubeVirt boot-inspect hooks and Guest Control Fabric
  • Web console + worker on GHCR · Helm under deploy/helm/zyvor
  • Python: pip install hypersdk-guestkitimport guestkit + run_doctor / run_migrate_repair (v1.1.0+)

Run the free web stack (GHCR)

Public images under ghcr.io/hypersdk — no docker login required.

Image Role
ghcr.io/hypersdk/zyvor-ui Web console — Image Vault, KubeVirt cluster
ghcr.io/hypersdk/zyvor-api API
ghcr.io/hypersdk/guestkit-worker Disk-inspection worker
docker compose -f deploy/docker-compose.ghcr.yml pull
docker compose -f deploy/docker-compose.ghcr.yml up -d
open http://localhost:8088

Eval only — unauthenticated stack. Do not expose beyond localhost.
Production: deploy/docker-compose.prod.example.yml · Docker guide · Helm


Open source vs Enterprise

Open source — free forever

This repo · Apache-2.0

  • Full offline doctor, migrate-plan, repair, fleet, policy
  • CLI · TUI · Python · self-hosted web/workers
  • GitHub Action Passport gate
  • Free zyvor-ui Image Vault dock
  • Best for labs, CI, and small fleets

Enterprise — buy for programs

zyvor.dev/guestkit

  • Same engine — not a locked doctor
  • Command Center · Portfolio · Assurance
  • Image Vault (inspect/doctor/repair/migrate-plan, sources, batch, launch YAML, agent)
  • Migration Factory · Passport Authority (+ JSON download)
  • Dependencies · Policies · Compliance · Reports (JSON/CSV)
  • Sites & Workers · KubeVirt · Integrations · Copilot · Admin
  • OIDC / RBAC / audit · mobile console · command palette
  • SLA · air-gap · hypervisor exit workshops
  • Pipeline: HyperSDK → h2kvm → GuestKit → Zeus OS → PacketWolf

One failed first-boot weekend costs more than the license.
Enterprise turns offline scores into shared, gated decisions your board can fund.

30-day Enterprise trial (binary)

Try the control plane before you buy — same packaging pattern as Veyron:

  1. Download the trial asset from GitHub Releases (guestkit-enterprise-*-trial-linux-amd64.tar.gz)
  2. Verify the .sha256, extract, run ./install.sh
  3. Keep bundled trial.token next to the install — after 30 days email sales@zyvor.dev

Full install instructions →

Full feature matrix (every screen) → · What Zyvor sells → · Book a demo · Pricing · sales@zyvor.dev


Platform layout

┌────────────────────────────────────────────────────────────┐
│  guestkit CLI · guestctl TUI · guestkit-qemu · Python · Web │
├────────────────────────────────────────────────────────────┤
│  Rust evidence · boot scoring · fix-plan · QEMU/VirtIO plan │
├────────────────────────────────────────────────────────────┤
│  JSON · YAML · HTML · PDF · Passport · CI exit codes       │
└────────────────────────────────────────────────────────────┘
Layer In this repo
Engine Pure-Rust parsers + evidence schema · NBD/loop (src/, crates/)
CLI / TUI guestkit · guestctl — doctor, passport, fleet, rescue
QEMU runtime guestkit-qemu — assured plan/run + QMP (qemu-runtime.md)
Agent / QGA Linux + Windows · agent-inject / agent-proxy / guestkit qga (virsh-to-guestkit.md)
Python hypersdk-guestkitrun_doctor, run_migrate_repair (v1.1.0+)
h2kvm hyper2kvm-integration.md — convert/deploy partner
FluxVM zyvorai/fluxvm — run/manage certified qcow2s (network, TTL)
K8s KubeVirt hooks · k8s/
Web / worker GHCR images · deploy/

Documentation

Goal Document
Operator wiki zyvorai/guestkit/wiki
Docs home docs/README.md · INDEX
DevOps runbooks docs/devops
Feature guide guestkit-customer-feature-guide.md
Docker / GHCR DOCKER.md
Remote deploy DEPLOY-REMOTE.md
h2kvm integration hyper2kvm-integration.md
QEMU / VirtIO runtime qemu-runtime.md
Dump virsh → GuestKit virsh-to-guestkit.md
Architecture overview
Changelog / roadmap CHANGELOG · roadmap

zyvor.dev/guestkit · docs · blog


Development

cargo build --release
cargo test

See CONTRIBUTING and CI under .github/workflows/. docs/ and this README are authoritative.


License

Apache-2.0 · additional notes in docs/legal/ where applicable.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hypersdk_guestkit-1.2.1.tar.gz (6.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hypersdk_guestkit-1.2.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ x86-64

File details

Details for the file hypersdk_guestkit-1.2.1.tar.gz.

File metadata

  • Download URL: hypersdk_guestkit-1.2.1.tar.gz
  • Upload date:
  • Size: 6.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hypersdk_guestkit-1.2.1.tar.gz
Algorithm Hash digest
SHA256 9c29a0984958a21b253c4537a0651bd6653115a08bee293c91fccffc54b41514
MD5 e6aa54dabe868ac7eaaff0a677e08e6a
BLAKE2b-256 3721777b61142e5750fcae74426cfc6014e26266a2a664c65fb70d698218364f

See more details on using hashes here.

File details

Details for the file hypersdk_guestkit-1.2.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for hypersdk_guestkit-1.2.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2ba7ffa45633ddf4f4712edcb31b910ad7b241f439664d9f9e37804f14d7e18b
MD5 0b6fe817fd3a668f02788c0744d7655c
BLAKE2b-256 53ea9335c09eee29542852d3f616eabd1ff528a4323fce3c0e292889f4be51cc

See more details on using hashes here.

Release history Release notifications | RSS feed

1.2.2

3 files

This release

1.2.1 This release

2 files

1.2.0

2 files

1.1.0

3 files

1.0.1

3 files

1.0.0

3 files

0.3.20

3 files

0.3.19

3 files

0.3.18

3 files

0.3.17

3 files

0.3.15

5 files

0.3.14

1 file

0.3.13

1 file

0.3.12

1 file

0.3.11

1 file

0.3.9

3 files

0.3.3

3 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page