Warning
This project was vibe-coded with Claude Code. Not for production use!
Lightweight VM manager in Rust as a modern alternative to libvirt.
- cloud-hypervisor as hypervisor (instead of QEMU)
- gRPC API for easy integration
- TUI with ratatui
- SQLite for persistent state
- Statically linked with musl for easy deployment
┌─────────────────────────────────────────────────────────────┐
│ mvirt (CLI/TUI) │
└───────┬─────────────┬─────────────┬─────────────┬───────────┘
│ │ │ │ gRPC
▼ ▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
│ mvirt-vmm │ │ mvirt-zfs │ │ mvirt-net │ │ mvirt-log │
│ :50051 │ │ :50053 │ │ :50054 │ │ :50052 │
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘ └───────────┘
│ │ │
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ cloud- │ │ ZFS │ │ TAP │
│ hypervisor│ │ Pool │ │ Devices │
└───────────┘ └───────────┘ └───────────┘
| Directory | Port | Description |
|---|---|---|
mvirt-cli/ |
- | CLI and TUI client |
mvirt-vmm/ |
50051 | VM manager daemon |
mvirt-log/ |
50052 | Centralized audit logging service |
mvirt-zfs/ |
50053 | ZFS storage management daemon |
mvirt-net/ |
50054 | Virtual networking daemon |
mvirt-one/ |
- | µOS - Minimal Linux for MicroVMs |
proto/ |
- | gRPC protocol definitions |
# Rust with musl target
rustup target add x86_64-unknown-linux-musl
# Build tools
sudo apt install build-essential musl-tools
# For mvirt-one (Kernel/UKI)
sudo apt install flex bison libncurses-dev libssl-dev libelf-dev bc dwarves
sudo apt install systemd-ukify systemd-boot-efi genisoimage# Build everything (Rust + UKI)
make
# Rust binaries only
make release
# mvirt-one only (UKI for direct boot)
make one
# Build in Docker (no local dependencies needed)
make docker
# Check build dependencies
make check# Debug build
cargo build
# Start daemon (development)
cargo run --bin mvirt-vmm -- --data-dir ./tmp
# Start CLI/TUI
cargo run --bin mvirt
# Tests
cargo test --workspace
# Formatting & linting
cargo fmt && cargo clippy --workspacemvirt/
├── Cargo.toml # Workspace
├── Makefile # Build orchestration
├── Dockerfile # Build environment
├── proto/ # gRPC protocol definitions
├── mvirt-cli/ # CLI + TUI
├── mvirt-vmm/ # VM manager daemon
├── mvirt-log/ # Audit logging service
├── mvirt-zfs/ # ZFS storage daemon
├── mvirt-net/ # Networking daemon
├── mvirt-one/ # µOS - Minimal Linux for MicroVMs
│ └── src/ # Rust init (PID 1)
├── docs/ # Documentation
└── images/ # VM disk images (not in git)
| File | Description |
|---|---|
target/x86_64-unknown-linux-musl/release/mvirt |
CLI binary |
target/x86_64-unknown-linux-musl/release/mvirt-vmm |
VM manager daemon |
target/x86_64-unknown-linux-musl/release/mvirt-log |
Logging service |
target/x86_64-unknown-linux-musl/release/mvirt-zfs |
ZFS storage daemon |
target/x86_64-unknown-linux-musl/release/mvirt-net |
Networking daemon |
mvirt-one/target/mvirt-one.efi |
Bootable UKI (kernel + initramfs) |
- Getting Started - Quick start guide
- Architecture - How components work together
- Development Guide - Build system, workflow
- Kernel Configuration - Kernel build, adding drivers
- Networking - vNICs, IP addressing, gateway model
- Storage - Templates, volumes, snapshots
- Service Ports - All service ports and configuration
Apache-2.0
