GuestKit
Offline VM intelligence and migration assurance.
📖 Feature Guide
GuestKit — Customer Feature Guide — a complete, customer-facing reference covering all 63 features across 10 areas, grounded in the product's actual capabilities. Also available as a print-ready PDF.
Customer manual (page-by-page) — getting started, admin basics, and a guide for every product surface (PDFs under docs/customer/pdf/).
Inspect QCOW2, VMDK, and RAW images without powering them on. Score boot readiness, generate hypervisor-aware fix plans, and explore disks from a carbon-themed TUI — Rust control plane, no libguestfs appliance (uses host NBD/loop for mount).
┌──────────────────────────────────────────────────────────────┐
│ Interfaces guestkit CLI · guestctl TUI · Python bindings │
├──────────────────────────────────────────────────────────────┤
│ Engine Rust parsers + boot scoring · NBD/loop mount layer │
├──────────────────────────────────────────────────────────────┤
│ Outputs JSON · YAML · HTML · PDF · CI gate artifacts │
└──────────────────────────────────────────────────────────────┘
Why GuestKit
| Problem | GuestKit answer |
|---|---|
| "Will it boot?" answered at power-on | Offline doctor score before cutover |
| guestfish scripts don't scale | Structured assurance APIs + exports |
| Migration surprises cost weekends | Fix plans with driver injections |
| Fleet drift is invisible | fleet analyze and forensic diff |
| No VM boot for deep inspection | Carbon TUI explores partitions in place |
Pairs with: hyper2kvm for VMware → KVM pipelines.
🆕 What's New — In-Guest Agent
GuestKit now runs inside the guest too, not just offline against the disk — same evidence schema, same fix-plan format, over the existing virtio-serial QGA channel.
- Offline Windows install, no boot required —
agent-inject --windowswrites theGuestKitAgentservice and the virtio-serial (vioser) driver straight into theSYSTEMhive via hivex. - Stock
qemu-guest-agentgets out of the way automatically — anyQEMU-GA/qemu-ga/QEMUGuestAgentservice found is disabled so GuestKit answers the channel uncontended, while still speaking QGA-compatible commands so KubeVirt/libvirt notice nothing. - Converted-image driver fix — deletes the stale cached PCI devnode so Windows re-detects the virtio-serial device and runs a full driver install on next boot, instead of staying stuck on "no driver."
- Generic QGA passthrough —
guestkit-rpcexposes every agent RPC method through the standard QGA channel, so host-side automation needs onlyvirsh qemu-agent-command.
Details, protocol reference, and the Linux path: docs/features/guest-agent.md · Protocol 1.3
Platform at a Glance
| Layer | What's in the repo |
|---|---|
| Core | Rust disk engine + assurance APIs — crates/, src/ |
| CLI | guestkit + guestctl — doctor, migrate-plan, fleet |
| In-guest agent | Linux + Windows, protocol 1.3 — agent-inject, agent-proxy, agent-call |
| TUI | Carbon-themed multi-view dashboard |
| Python | hypersdk-guestkit on PyPI |
| K8s | KubeVirt integration hooks — k8s/ |
| Web stack | Prebuilt GHCR images — ghcr.io/hypersdk/{zyvor-ui,zyvor-api,guestkit-worker} |
| Deploy | Docker/Helm, remote deploy scripts — deploy/ |
Quick Start
cargo install guestkit # guestkit + guestctl
guestkit doctor vm.qcow2 --target proxmox --explain
# → boot assurance score · blockers · root-cause chain
guestkit migrate-plan vm.vmdk --target proxmox --export plan.yaml
# → migration score · driver injections · fix plan
guestctl tui vm.qcow2
# → carbon TUI · Assurance · fix-plan preview
| Scenario | Path |
|---|---|
| Getting started | docs/user-guides/getting-started.md |
| CLI reference | docs/user-guides/cli-guide.md |
| Migration assurance | docs/features/migration-assurance.md |
| In-guest agent (Linux + Windows) | docs/features/guest-agent.md |
| CE vs Enterprise | docs/ce-vs-enterprise.md |
Web console: self-hosted via GHCR or Helm. First-login credentials for packaged installs are documented in remote deploy — change defaults before exposing to a network.
Run from GHCR (prebuilt images)
The web stack is published to the GitHub Container Registry under ghcr.io/hypersdk — public images, no docker login required.
| Image | Role |
|---|---|
ghcr.io/hypersdk/zyvor-ui |
Web console + login |
ghcr.io/hypersdk/zyvor-api |
API backend |
ghcr.io/hypersdk/guestkit-worker |
Disk-inspection worker |
Tags: latest, vX.Y.Z (e.g. v0.3.13), per-commit SHA. Bring the whole stack up straight from GHCR:
docker compose -f deploy/docker-compose.ghcr.yml pull
docker compose -f deploy/docker-compose.ghcr.yml up -d
open http://localhost:8088 # web console
Eval only: this stack runs without authentication. Do not expose it beyond localhost. For production, use
deploy/docker-compose.prod.example.yml— see Docker guide.
For clusters, use the Helm chart. Full details: docs/guides/DOCKER.md → Published images.
Three Commands Before Cutover
| Command | Outcome |
|---|---|
guestkit doctor |
Boot assurance score + blockers |
guestkit migrate-plan |
Executable fix plan YAML |
guestctl tui |
Interactive assurance workspace |
Documentation
| Goal | Document |
|---|---|
| Docs index | docs/README.md |
| Run from GHCR / Docker | docs/guides/DOCKER.md |
| Remote deploy | docs/guides/DEPLOY-REMOTE.md |
| User stories | docs/USER_STORIES.md |
| Industry use cases | docs/INDUSTRY_USE_CASES.md |
| Architecture | docs/architecture/overview.md |
| Full index | docs/INDEX.md |
→ zyvor.dev/guestkit · Demo video · Full Zyvor platform
Development
See project docs for CI, testing, and contribution guidelines. Historical build summaries in the repo root are snapshots — docs/ and this README are authoritative.
License
See LICENSE or project-specific licensing files in docs/legal/.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hypersdk_guestkit-0.3.15.tar.gz.
File metadata
- Download URL: hypersdk_guestkit-0.3.15.tar.gz
- Upload date:
- Size: 5.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ded59f2ffd2958efc80717b56475bd1af8e928fc124f35872a0c6b160cb3809
|
|
| MD5 |
12dbccb5bd949582db6c04dfb3c8a510
|
|
| BLAKE2b-256 |
9a09e8360e3ee5a9a159f9fd65d6eee9d4240ff0c775d5eefdbeb1acbd65c999
|
File details
Details for the file hypersdk_guestkit-0.3.15-cp311-cp311-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: hypersdk_guestkit-0.3.15-cp311-cp311-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.11, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bc97197345bd9bf57786cb5949c9cb07607614ccb6200995e5ed8f4779fb0b9
|
|
| MD5 |
b0297fb012233bf09131cf8997ce555f
|
|
| BLAKE2b-256 |
5d57d25b112407e9c1d7515979e1a663f782d2360d683c74e65619f197658b34
|
File details
Details for the file hypersdk_guestkit-0.3.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: hypersdk_guestkit-0.3.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b72f6b203d1551b07d2fae94694348cee312fb27d22725eb2cd0d0027ed7a47
|
|
| MD5 |
e9e0f6e556d5ebfeccc038e73ca9aa5f
|
|
| BLAKE2b-256 |
b3eab9b9d5f2472da63910b6e2b58621b84c05a8780e3f28857e8beb68cd61b6
|
File details
Details for the file hypersdk_guestkit-0.3.15-cp38-abi3-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: hypersdk_guestkit-0.3.15-cp38-abi3-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.8+, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b7abbdcb405df1a26b59aaa5342ee7852d9e8674e07175eb1181ff791b42411
|
|
| MD5 |
067b6fbe3907d2ec6c3364c24b2e2727
|
|
| BLAKE2b-256 |
0085d646e6083679ef71cdf51c3e86afabd79425119b1b67e8db7e103bb2eeed
|
File details
Details for the file hypersdk_guestkit-0.3.15-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: hypersdk_guestkit-0.3.15-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.8+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32b30e0c48e22862f25ed0f58aa07fdd8a51d2fdeb31e0bde28f95cac232ece8
|
|
| MD5 |
d43f17c1a3ed32d96cbcd5df05db99aa
|
|
| BLAKE2b-256 |
6ca5cedf0205a3883c3456d3997ea21407f73e032a06c1232d5b2f87dd8a76fa
|