A modern, fast GUI for KVM/QEMU/libvirt virtualization on Linux
KVM Manager is a desktop application that provides a polished, VMware Workstation / Hyper-V quality experience for Linux virtualization. Built with Rust and modern web technologies.
KVM Manager aims to be the best open-source GUI for managing KVM/QEMU virtual machines. It combines the power of libvirt with a modern, intuitive interface.
- Full VM Lifecycle Management - Create, configure, start, stop, pause, and delete VMs
- VNC/SPICE Console - Built-in console access via noVNC with auto-reconnect
- Snapshot Management - Create, revert, and manage VM snapshots
- Storage Management - Create and manage storage pools and volumes
- Network Management - Configure virtual networks (NAT, isolated, bridged)
- Hardware Editor - Complete hardware configuration (CPU, memory, disks, NICs)
- Guest Agent Integration - Monitor guest OS information, execute commands
- Multi-Window Support - Open multiple console windows simultaneously
- Real-time Monitoring - Live CPU and memory usage graphs
# Ubuntu/Debian
sudo apt install libvirt-daemon qemu-kvm libvirt-clients
# Fedora
sudo dnf install libvirt qemu-kvm
# Arch Linux
sudo pacman -S libvirt qemu-full
# Add your user to libvirt group
sudo usermod -aG libvirt $USER
# Log out and back in for group changes to take effectDownload the latest release from the Releases page.
# AppImage (recommended - works on any distro)
chmod +x kvm-manager-*.AppImage
./kvm-manager-*.AppImage
# Debian/Ubuntu
sudo dpkg -i kvm-manager-*.deb
# Fedora/RHEL/openSUSE
sudo rpm -i kvm-manager-*.rpmgit clone https://github.com/yourusername/kvm-manager.git
cd kvm-manager
npm install
npm run tauri build| Document | Description |
|---|---|
| Console Guide | VNC and SPICE console setup |
| UEFI Setup | UEFI and Secure Boot configuration |
| Libvirt Permissions | Permission troubleshooting |
| UI Architecture | Technical UI documentation |
| Project Plan | Development roadmap |
| Feature | Description |
|---|---|
| Create VMs | Full wizard with UEFI/BIOS, storage, and networking options |
| VM Control | Start, stop, pause, resume, force stop, reboot |
| Live Status | Real-time status updates with event-driven refresh |
| Grouping | Group VMs by status (Running/Paused/Stopped) |
| Multi-Select | Select and control multiple VMs at once |
| Context Menus | Right-click actions for quick access |
| Feature | Description |
|---|---|
| VNC Console | High-quality VNC via noVNC |
| SPICE Console | SPICE protocol support for better performance |
| Keyboard Mapping | Proper keyboard handling including special keys |
| Auto-Reconnect | Automatic reconnection on connection loss |
| Multi-Window | Open multiple console windows simultaneously |
| Feature | Description |
|---|---|
| Create | Save VM state with descriptions |
| Revert | Restore to any previous state |
| Delete | Clean up old snapshots |
| Tree View | Visualize snapshot hierarchy |
| Feature | Description |
|---|---|
| Storage Pools | Create and manage storage pools (dir, LVM, etc.) |
| Volumes | Create, delete, and resize volumes |
| Format Support | qcow2, raw, vmdk, and more |
| Thin Provisioning | Efficient disk space usage |
| Feature | Description |
|---|---|
| Virtual Networks | Create NAT, isolated, and bridged networks |
| Network Status | Monitor network activity and connected VMs |
| Interface Management | Add/remove network interfaces from VMs |
| Feature | Description |
|---|---|
| CPU | Configure vCPUs, topology (sockets/cores/threads), CPU model |
| Memory | Set memory size with ballooning support |
| Disks | Add, remove, and configure virtual disks |
| NICs | Add and configure network interfaces |
| Graphics | Configure VNC/SPICE displays |
| Boot Order | Set boot device priority |
| USB/PCI | Passthrough USB and PCI devices |
| Feature | Description |
|---|---|
| System Info | OS, hostname, timezone from guest |
| Network Info | Guest IP addresses and interfaces |
| File Operations | Read/write files in guest |
| Commands | Execute commands in guest |
| User Management | List logged-in users |
Backend (Rust)
- Tauri 2.0 - Desktop application framework
- libvirt-rs - KVM/QEMU management bindings
- tokio - Async runtime
- serde - Serialization
Frontend (TypeScript)
- React 19 - UI framework
- TanStack Query - Server state management
- shadcn/ui - Component library
- Tailwind CSS - Styling
- noVNC - VNC console
kvm-manager/
├── src/ # React frontend
│ ├── components/ # UI components
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utilities and Tauri bindings
│ └── pages/ # Page components
├── src-tauri/ # Rust backend
│ └── src/
│ ├── commands/ # Tauri IPC commands
│ ├── vm/ # VM management
│ ├── storage/ # Storage management
│ ├── network/ # Network management
│ └── main.rs # Entry point
├── guest-agent/ # QEMU guest agent
│ ├── agent-linux/ # Linux agent daemon
│ └── agent-common/ # Shared protocol code
└── docs/ # Documentation
# Start development server (hot reload)
npm run tauri dev
# Run frontend only (faster iteration)
npm run dev
# Build for production
npm run tauri build
# Type checking
npx tsc --noEmit
# Linting
npm run lint
cargo clippy
# Testing
cargo testContributions are welcome. See AGENTS.md for the multi-agent development approach used in this project.
- Linux kernel 4.5+
- 2 GB RAM
- 100 MB disk space
- Linux kernel 5.0+
- 4 GB RAM
- 500 MB disk space
- Hardware virtualization (Intel VT-x / AMD-V)
- libvirt 6.0+ (VM management API)
- QEMU 4.0+ (hypervisor)
- KVM (kernel module)
See PROJECT_PLAN.md for the detailed development roadmap.
Planned Features
- Theme system (dark/light mode)
- Remote libvirt connections
- VM cloning and templates
- System tray with background monitoring
- Global keyboard shortcuts
MIT License - See LICENSE file for details.
- libvirt - Virtualization API
- Tauri - Desktop application framework
- noVNC - JavaScript VNC client
- shadcn/ui - Component library
- virt-manager - Inspiration and reference
- Bug Reports: GitHub Issues
- Discussions: GitHub Discussions
Recommended extensions for VS Code: