Metadata-Version: 2.4
Name: virtui-manager
Version: 3.0.2
Summary: Terminal-based interface to manage virtual machines using libvirt
Home-page: https://aginies.github.io/virtui-manager/
Author: Antoine Ginies
Author-email: Antoine Ginies <antoine@ginies.org>
Maintainer: Antoine Ginies
Maintainer-email: Antoine Ginies <antoine@ginies.org>
License: GPL-3.0-or-later
Project-URL: Homepage, https://aginies.github.io/virtui-manager/
Project-URL: Documentation, https://aginies.github.io/virtui-manager/manual
Project-URL: Repository, https://github.com/aginies/virtui-manager
Project-URL: Issues, https://github.com/aginies/virtui-manager/issues
Project-URL: Changelog, https://github.com/aginies/virtui-manager/releases
Keywords: virtualization,libvirt,kvm,qemu,tui,terminal,manager,virt
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Utilities
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: libvirt-python>=6.0.0
Requires-Dist: textual>=8.0.0
Requires-Dist: PyYAML>=5.4.0
Requires-Dist: markdown-it-py>=3.0.0
Requires-Dist: packaging
Requires-Dist: requests
Requires-Dist: netifaces
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"
Provides-Extra: webconsole
Requires-Dist: websockify>=0.10.0; extra == "webconsole"
Dynamic: license-file

# VirtUI Manager

[Project Website](https://aginies.github.io/virtui-manager/)

A powerful, text-based Terminal User Interface (TUI) application for managing QEMU/KVM virtual machines using the libvirt Python API. 

![Main](documentation/manual/images/main.png)

## Why VirtUI Manager?

Managing virtual machines in a terminal environment has never been easier or more powerful. **VirtUI Manager** bridges the gap between the simplicity of command-line tools and the rich functionality of GUI-based solutions, offering the best of both worlds for virtualization administrators.

### The Problem with Traditional Tools

- **Virt-manager** requires X11 forwarding, which is slow, resource-intensive, and often impossible in remote environments
- **GUI-based solutions** are heavy with X dependencies, making them unsuitable for headless servers or low-bandwidth connections
- **Command-line tools** lack the intuitive interface needed for complex VM management tasks
- **Cockpit Machine** is feature incomplete, and needs a lot of depencies. It is not multi hypervisor oriented
- **Complex Deployment** no tools to easily manage auto-installation of Virtual Machine with registration process

### Why VirtUI Manager is Different

VirtUI Manager solves these challenges with:
- **Lightweight Terminal Interface**: No X11 dependencies, works perfectly over SSH
- **Remote Management**: Efficient low-bandwidth control of remote libvirt servers
- **Rich Feature Set**: Advanced VM management capabilities in a simple, intuitive interface
- **Multi-server Support**: Manage VMs across multiple libvirt servers from a single interface
- **Performance Optimized**: Built-in caching reduces libvirt calls and improves responsiveness (include a tracking resources call tool)
- **Libvirt Event handler**: Only get update on event from libvirt
- **Migration Support**: Live and offline VM migration capabilities and custom migration
- **Bulk Operations**: Execute commands across multiple VMs at once (including configuration)
- **Web Console Access**: Integrated VNC support with novnc over ssh tunnel for remote server
- **CMD line interface**: improved command line to manage VMs: multi hypervisors, VMs selection, clone operation, bulk command, install VM, etc...
- **Auto Installation**: Support auto installation for Debian, Ubuntu, Fedora, Archlinux, Alpine, OpenSUSE and SLES (with SCC registration)

## Documentation

[VirtUI Manager doc](https://aginies.github.io/virtui-manager/manual/)

## CI check

[![CI Check](https://github.com/aginies/virtui-manager/actions/workflows/ci.yml/badge.svg)](https://github.com/aginies/virtui-manager/actions/workflows/ci.yml)

## Flatpak build

[![Build Flatpak](https://github.com/aginies/virtui-manager/actions/workflows/flatpak.yml/badge.svg)](https://github.com/aginies/virtui-manager/actions/workflows/flatpak.yml)

## Requirements

- **Recommended Minimal Terminal Size**: 34x92. **34x128** is the recommended Size
- **Remote Connection**: SSH access to libvirt server (ssh-agent recommended)
- **Python 3.7+**
- **libvirt** with Python bindings
- **Python Dependencies**: see requirements.txt file
- **Optional**: virt-viewer, novnc, websockify for enhanced functionality
- **Tmux**: To edit file with pseudo terminal

### Note about Libvirt API

As there is no simple way to get **sound** and **network** model using libvirt API, the user can provides a list in his own configuration file. 

To get a list of model for a machine type you can use the **qemu** command line:
```bash
qemu-system-x86_64 -machine pc-q35-10.1 -audio  model=help
qemu-system-x86_64 -machine pc-q35-10.1 -net  model=help
```

Possible User config parameters:
- **network_models**: List of allowed network models (default: `['virtio', 'e1000', 'e1000e', 'rtl8139', 'ne2k_pci', 'pcnet']`)
- **sound_models**: List of allowed sound models (default: `['none', 'ich6', 'ich9', 'ac97', 'sb16', 'usb']`)

## Contributing

[CONTRIBUTING.md](CONTRIBUTING.md)

## AI Assist

AI assistance is used to improve coding efficiency by automating boilerplate, suggesting relevant code completions, quickly detecting bugs, update the documentation, write test cases.

## License

This project is licensed under the GPLv3 License.
