Skip to content

synvirt (hypervisor · Rust/KVM)

Synced read-only from /home/synnet/mirrors/synvirt-product/README.md. Edit at the source, not here.

__ ___ __ _______ ____ _ ____
\ \ / (_)_ __/ /_/ __/\ \/ / \| |/ / \
\ V /| | '_/ __/\__ \ \ /| . ` /| . |
\_/ |_|_| \__/____/ / \|_|\_|_/ |__/
/_/

Hypervisor infrastructure for the modern SMB

0.15.0 | Rust 1.95 | Debian 13 | HTTPS


SynVirt is a commercial hypervisor platform built for small and medium businesses and managed service providers across Mexico and Latin America. It offers a console-first operational model, a fully open-source technology stack that operators can audit end-to-end, tiered licensing by CPU socket, and a control plane written entirely in Rust.

Developed by SYNNET — Culiacán, México.


Terminal window
# 1. Internal, local-only repository (no public remote).
# On the dev host it already lives at /home/synvirt/dev.
cd /home/synvirt/dev
# 2. Start the development daemon on a Debian 13 host
cargo run -p synvirt-daemon -- --dev
# 3. Open the web interface
# https://localhost:8443
# (Accept the self-signed certificate warning in your browser)

SynVirt supports three operational modes that grow with your infrastructure:

+------------------+ +-----------------------------+ +----------------------------------------+
| STANDALONE | | TWIN | | CLUSTER |
| | | | | |
| +-----------+ | | +-------+ +-------+ | | +-------+ +-------+ +-------+ |
| | Node 01 | | | | Node | | Node | | | | Node | | Node | | Node | |
| | (primary) | | | | 01 | | 02 | | | | 01 | | 02 | | 03 | |
| | | | | | | | | | | | | | | | ... | |
| | daemon | | | | daemon| | daemon| | | | daemon| | daemon| | daemon| |
| | KVM | | | | KVM | | KVM | | | | KVM | | KVM | | KVM | |
| | ZFS | | | | DRBD | | DRBD | | | | DRBD | | DRBD | | DRBD | |
| +-----------+ | | +---+---+ +---+---+ | | +---+---+ +---+---+ +---+---+ |
| | | | | | | | \ | / | |
| 1 node | | +---+-----------+---+ | | +---+-----\--+--/--------+---+ |
| No HA | | | Witness Node | | | | etcd Raft quorum | |
| Local storage | | +-------------------+ | | +---------------------------+ |
| | | | | |
| Dev / test | | 2 nodes + witness | | 3+ nodes, distributed scheduling |
| Single-site SMB | | Synchronous DRBD repl. | | Full HA, live migration |
+------------------+ +-----------------------------+ +----------------------------------------+
Upgrade path: Standalone --> Twin --> Cluster (non-destructive)
+--------------------------------------------------------------+
| synvirt-daemon |
| (single Rust binary) |
+--------------------------------------------------------------+
| Axum (HTTP router) | Rustls (TLS) | Tokio (async rt) |
+--------------------------------------------------------------+
| Embedded web server on :443 (prod) / :8443 (dev) |
+--------------------------------------------------------------+
| Static assets: /opt/synvirt/web/ (or ./web/ in dev mode) |
+--------------------------------------------------------------+

The repo is a Cargo workspace. The tables below mirror the crate layout under crates/ and the top-level iso-builder/ pipeline.

Crate Purpose
daemon Control-plane HTTPS API (axum, TLS). The single entry point for operators.
synvirt-libvirt libvirt / KVM wrapper (virsh subprocess + XML renderer).
console-gateway WebSocket ↔ TCP-socket bridge proxying VNC, with HS256 JWT tickets.
guest-tools-iso Builder for the pinned virtio-win + SynVirt guest-tools ISO.
web-ux-v2 Canonical Vue 3.5 + TS + Vite + Pinia dashboard, mounted at /.
web-ux Legacy Vue 3 / Pinia / Tailwind dashboard (vendored), off-ramp at /legacy/.
web-installer-v2 Canonical Vue 3.5 + TS pre-install wizard.
web-installer Legacy hand-rolled pre-install browser wizard (off-ramp).
live Live-ISO TUI (boot-time installer front-end).
console Post-install 23-screen admin TUI on tty1.
boot-splash 12-step boot-progress TUI on tty1 with recovery screen.
tui-theme Shared ratatui palette + layout helpers.
cli Operator CLI binary (synvirt-cli).
agent Placeholder for the future per-host node agent (synvirt-node-agent).
migrator VM import engine: live pull from external hypervisors + offline archive/disk import.
core Cross-cutting types shared by every crate above.

This is a curated subset. The data-plane services (synvirt-network, synvirt-storaged, synvirt-migratord, synvirt-updaterd, synvirt-livemotiond, synvirt-backupd), the Settings-module crates, synvirt-cluster, synvirt-backup-core, and the WebRTC console crates are omitted here — see CLAUDE.md §2 for the full 48-crate workspace.

Crate Status Purpose
synvirt-guest-proto Implemented Portable JSON-lines protocol types (hello / heartbeat / report / command / ack / error). No I/O, no tokio, compiles for Linux / BSD / Windows 64 / Windows 32 (XP/2003).
synvirt-guest-tools Implemented Host-side supervisor: per-VM connector tasks, VmToolsState in sled, AgentEvent broadcast. Integrated into daemon.
synvirt-guest-agent Implemented Rust agent for Windows 7+ / Linux 3.10+ / FreeBSD 12+. Binary + systemd/rc.d/SCM service + command handlers. Packaged as .deb, .rpm, FreeBSD pkg, Windows .exe.
synvirt-guest-agent-legacy Implemented C agent for Windows XP / Server 2003 (i686).
synvirt-guest-installer Implemented .NET 8 WinForms self-contained EXE (SynVirt-Setup.exe) with dark theme, rollback stack, silent CLI mode.
synvirt-guest-installer-rs Implemented Rust shim that builds the .NET installer and stages its embedded payloads.

Protocol spec: docs/GUEST_AGENT_PROTOCOL.md.


Tool Version Notes
Debian 13 Trixie Same distro as the shipping live-ISO runtime.
Rust 1.95 (stable, pinned in rust-toolchain.toml) Installed via rustup on the dev host.
cargo, gcc, pkg-config latest From the Debian 13 package set.
QEMU / libvirt / OVS / ZFS whatever Debian 13 ships Required for local VM smoke-tests; TCG fallback when /dev/kvm is absent.
sshpass latest For scripts/deploy-to-host.sh hot iteration to the appliance.
Terminal window
# From the repository root on the Debian 13 dev host
cargo build -p synvirt-daemon
Terminal window
cargo run -p synvirt-daemon -- --dev

The --dev flag activates:

  • Port 8443 instead of 443
  • Pretty (human-readable) log output
  • Static assets served from ./web/ relative to the binary
Variable Default Description
SYNVIRT_DEV unset Enable dev mode (same as --dev)
SYNVIRT_PORT 443 / 8443 Override listen port
SYNVIRT_LOG info Log level (trace/debug/info/warn/error)

The ISO builder generates a Debian 13 Trixie minimal image (kernel 6.12 LTS) on top of live-build. The result boots into a wizard-driven unattended installer that configures the base OS (including the ZFS layout) and hands off to the synvirt-daemon running from RAM.

Terminal window
cd iso-builder
./build.sh

Output: iso-builder/output/SynVirt-<VERSION>-amd64.iso

Typical build times:

  • First build or after FORCE_REBUILD=1: 30–45 min (bootstrap + chroot).
  • Incremental: 2–5 min (live-build cache hit).

scripts/deploy-to-host.sh hot-swaps the daemon + dashboard onto a running SynVirt node without rebuilding the ISO:

Terminal window
SSHPASS=<password> HOST=<ip> ./scripts/deploy-to-host.sh hot

Stages: inspect, build, push, apply, web-ux, reboot, verify, all. The hot shortcut runs build + push + apply + web-ux for fast dashboard iteration.


Document Description
docs/architecture.md System architecture, modes, daemon design, tech stack
docs/build.md Detailed build and dev environment guide
docs/roadmap.md Phase roadmap from MVP to Enterprise
docs/decisions/ Architecture Decision Records (ADRs)

Proprietary — All rights reserved — SYNNET 2026

This software is proprietary and confidential. Unauthorized copying, distribution, or use is strictly prohibited.

See LICENSE for full terms.