virtu

Version, currently 0.1.01 version
  • 0.1.0latestJun 16, 2026

gitlab.com/renich/virtu

Virtualization management platform with a GUI and a WUI.

0 stars
0 dependents
License: GPL-3.0-or-later

Installation

# Add this to your shard.yml
dependencies:
  virtu:
    gitlab: renich/virtu
    version: ~> 0.1.0

Then run:

shards install

shard.yml

Crystal
>= 1.20.2
License
GPL-3.0-or-later
Author
Rénich Bon Ćirić
Targets
  • virtu-gui from src/virtu_gui.cr
  • virtu-wui from src/virtu_wui.cr

Dependencies

Runtime Dependencies

Development Dependencies

  • flaw*github: kdairatchi/flawdev
  • ameba*github: crystal-ameba/amebadev
  • spec-kemal*github: kemalcr/spec-kemaldev

README


⚡ Overview

Virtu provides comprehensive management for libvirt-based infrastructure (KVM/QEMU) with absolute focus on concurrency and speed. It features a unified core driving two first-class interfaces:

  • Virtu Web (WUI): A lightning-fast, server-side rendered web dashboard powered by Kemal and HTMX.
  • Virtu Desktop (GUI): A fully native, highly responsive desktop client built with GTK4.

✨ Features

  • Blazing Fast: Written purely in Crystal with non-blocking, fiber-based C-FFI libvirt bindings.
  • Dual Interfaces: Manage your cluster from the browser or natively on the desktop.
  • Advanced Hardware Management: virt-manager style hardware configurations, dynamic hot-plugging, and direct XML manipulation.
  • Zero-Friction State: A centralized background daemon seamlessly syncs VM state to clients without blocking OS threads.

🚀 Getting Started

Prerequisites

  • Crystal 1.12+
  • libvirt-dev
  • libgtk-4-dev (for building the GUI)

Build & Run

# Install dependencies
shards install

# Build the Web UI
crystal build src/virtu_wui.cr -o bin/virtu-wui --release
./bin/virtu-wui

# Build the GTK4 Desktop App
crystal build src/virtu_gui.cr -o bin/virtu-gui --release
./bin/virtu-gui

📚 Technical Documentation

Detailed architecture documentation, technical specs, and the project roadmap can be found in the docs/technical/ directory.

🤝 Contributing

  1. Fork the project.
  2. Create your feature branch (git checkout -b feature/my-feature).
  3. Commit your changes (git commit -am 'feat(scope): add some feature').
  4. Push to the branch (git push origin feature/my-feature).
  5. Open a Merge Request on GitLab.