Add vm-manager library and vmctl CLI
Unified VM management consolidating QEMU-KVM (Linux) and Propolis/bhyve
(illumos) backends behind an async Hypervisor trait, with a vmctl CLI for
direct use and a library API for orchestrators.
- Core library: types, async Hypervisor trait, miette diagnostic errors
- QEMU backend: direct process management, raw QMP client, QCOW2 overlays
- Propolis backend: zone-based VMM with REST API control
- Shared infra: cloud-init NoCloud ISO generation, image download/cache,
SSH helpers with retry
- vmctl CLI: create, start, stop, destroy, list, status, console, ssh,
suspend, resume, image pull/list/inspect
- nebula-vm zone brand: lifecycle scripts and platform/config XML for
illumos zone integration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 18:25:17 +01:00
|
|
|
[workspace]
|
|
|
|
|
resolver = "3"
|
|
|
|
|
members = ["crates/vm-manager", "crates/vmctl"]
|
|
|
|
|
|
|
|
|
|
[workspace.package]
|
|
|
|
|
edition = "2024"
|
|
|
|
|
license = "MPL-2.0"
|
|
|
|
|
rust-version = "1.85"
|
|
|
|
|
|
|
|
|
|
[workspace.dependencies]
|
|
|
|
|
tokio = { version = "1", features = [
|
|
|
|
|
"rt-multi-thread",
|
|
|
|
|
"macros",
|
|
|
|
|
"signal",
|
|
|
|
|
"fs",
|
|
|
|
|
"io-util",
|
|
|
|
|
"io-std",
|
|
|
|
|
"process",
|
|
|
|
|
"net",
|
|
|
|
|
"time",
|
|
|
|
|
] }
|
|
|
|
|
miette = { version = "7", features = ["fancy"] }
|
|
|
|
|
thiserror = "2"
|
|
|
|
|
clap = { version = "4", features = ["derive", "env"] }
|
|
|
|
|
serde = { version = "1", features = ["derive"] }
|
|
|
|
|
serde_json = "1"
|
|
|
|
|
reqwest = { version = "0.12", default-features = false, features = [
|
|
|
|
|
"rustls-tls-native-roots",
|
|
|
|
|
"stream",
|
|
|
|
|
] }
|
|
|
|
|
tracing = "0.1"
|
|
|
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
|
uuid = { version = "1", features = ["v4", "serde"] }
|
|
|
|
|
tempfile = "3"
|
|
|
|
|
futures-util = "0.3"
|
|
|
|
|
zstd = "0.13"
|
|
|
|
|
dirs = "6"
|
2026-02-14 20:48:12 +01:00
|
|
|
kdl = "6"
|