
Quien usa Linux en el escritorio y quiere máquinas virtuales suele elegir entre dos opciones: VirtualBox, cómodo pero con módulo de kernel propio y rendimiento inferior al KVM, o el KVM puro, rápido pero lleno de línea de comandos, XML de libvirt y, en el caso de macOS, un repositorio de scripts y un config.plist OpenCore editado a mano. El kvm-gui es mi proyecto para unir ambos mundos: una app con el aspecto y el flujo de VirtualBox, ejecutándose directamente sobre QEMU/KVM, que crea VM macOS, Linux y Windows a velocidad nativa — todo en un único binario Go que también es línea de comandos y servidor MCP para agentes de IA.
Lo que ofrece kvm-gui
- macOS en pocos clics — tú eliges la versión y la aplicación descarga la recovery directamente de Apple, comprobando la firma. OpenCore y OVMF vienen integrados: nada de clonar OSX-KVM ni editar
config.plist - Metal en macOS con el Reims vGPU, una GPU paravirtual que utiliza el controlador Vulkan del host, sin necesidad de una segunda tarjeta gráfica
- Linux, Windows y otros desde una ISO — perfiles de SO, UEFI con Secure Boot, TPM 2.0 para Windows 11 y pantallas desde HD hasta 4K
- 3D y Vulkan en invitados Linux en la GPU del host que elijas, sin passthrough: OpenGL mediante virgl y Vulkan mediante Venus
- El flujo de trabajo de VirtualBox — gestor con pestañas Detalles, Pantalla, Instantáneas y Registros, asistente de nueva VM, Configuración, instantáneas, clones completos e importación y exportación de
.ovacompatible con VirtualBox - Velocidad nativa de KVM, y las VMs siguen funcionando después de cerrar la aplicación
- Automatizable — todo lo que hace la GUI es un comando, y los agentes de IA (Claude, Codex, Cursor) controlan las VMs mediante el servidor MCP

Cómo funciona por dentro
El kvm-gui no es un frontend de libvirt. El mismo binario tiene tres entradas — la GUI de escritorio (Go + Wails), la CLI (kvm-gui vm …) y el servidor MCP (kvm-gui mcp, a través de stdio) — y las tres pasan por el mismo núcleo en Go, que valida la configuración, bloquea la carpeta de la VM contra el uso concurrente, guarda la lista de VMs en un SQLite y construye los argumentos de QEMU. Para cada VM inicia un proceso de QEMU con KVM, controlado mediante un socket QMP privado; la pantalla llega a la aplicación mediante un socket VNC también privado, sin ningún puerto de red abierto. Los discos qcow2, la NVRAM UEFI, el estado del TPM y las instantáneas se guardan en una carpeta por VM.

Instalación
Necesitas una CPU x86_64 con virtualización (VT-x / AMD-V) activada en el firmware y QEMU 10.0 o más reciente: los paquetes instalan QEMU por ti. Descarga el paquete de tu distro en última versión y comprueba la descarga:
sha256sum -c --ignore-missing SHA256SUMS
sudo apt install ./kvm-gui_*_amd64.deb # Ubuntu 26.04, Debian 13
En Rocky Linux 10, WebKitGTK viene de EPEL:
sudo dnf install epel-release && sudo dnf install ./kvm-gui-*-1.x86_64.rpm
También hay AppImage y binario puro, que dependen de GTK 4, WebKitGTK 6 y del QEMU de la distribución. En Ubuntu 24.04, quédate en la v0.15.0, la última versión para él.
Tu primera VM
Una sola vez, prepara el host: el setup instala lo que falte de QEMU, carga el módulo KVM, te añade al grupo kvm y ajusta los parámetros de kernel necesarios, pidiendo la contraseña una sola vez mediante pkexec. Después, solo hay que abrir la aplicación:
kvm-gui setup
kvm-gui
Haz clic en New, elige macOS y la versión, o Linux / Windows / Other con una ISO. KVM-GUI detecta el sistema y sugiere CPU, memoria y disco de acuerdo con tu host. Haz clic en Start y la pantalla aparece dentro de la aplicación; una VM de macOS se inicia por sí sola en la Recovery, desde donde instalas el sistema.

Los mismos pasos desde la terminal:
kvm-gui vm create Ubuntu --guest linux --profile ubuntu --iso ubuntu-26.04.iso
kvm-gui vm start
Linux y Windows con 3D, Vulkan y TPM
Los invitados de Windows usan UEFI con Secure Boot y un TPM 2.0 emulado por swtpm, lo que cumple los requisitos de Windows 11. En invitados de Linux, la opción de aceleración 3D conecta virtio-gpu con virgl (OpenGL), y Vulkan (Venus) lleva Vulkan del invitado hasta la GPU del host que elijas: el vulkaninfo dentro de la VM muestra tu placa AMD o NVIDIA, sin passthrough. Vulkan se validó en el host de referencia, Ubuntu 26.04; en Debian 13 hay 3D sin Vulkan.

Desde VirtualBox
Si tienes VMs en VirtualBox, use Archivo › Importar appliance… con un .ova, o:
kvm-gui vm import-ova box.ova --dry-run # mostra o que será criado e o que não é mantido
kvm-gui vm import-ova box.ova
El appliance se trata como no confiable: se comprueban el manifiesto, las cabeceras y los discos antes de convertirlo a qcow2, y una importación fallida no deja restos. El camino de vuelta también existe: kvm-gui vm export-ova genera un .ova que VirtualBox 7 importa. Las VMs de macOS quedan fuera del OVA y migran entre hosts con kvm-gui vm export --full.
macOS con Metal: Reims vGPU
macOS no tiene controlador para las placas de vídeo emuladas de QEMU, así que sin aceleración la interfaz va pesada. kvm-gui integra el Reims vGPU, una GPU paravirtual que entrega Metal al invitado usando el controlador Vulkan de la GPU que ya dibuja tu escritorio. La app instala QEMU de Reims desde un paquete listo, con SHA-256 comprobado:
kvm-gui reims install
kvm-gui reims status
En el host de referencia, un macOS Sequoia 15.8.1 arranca en Reims vGPU con Metal activo. Sonoma es la versión validada de principio a fin; las demás, de High Sierra a Tahoe, son experimentales.
Tus VMs en manos de un agente de IA
El mismo binario es un servidor MCP. Para usarlo en Claude Code:
claude mcp add kvm-gui -- kvm-gui mcp
Ahí hay que pedir, por ejemplo, “crea una VM Ubuntu a partir de ~/Downloads/ubuntu.iso e arráncala”. El agente crea, arranca y apaga VMs, ve la pantalla y escribe en ella, ejecuta comandos por SSH, hace instantáneas e importa y exporta appliances. Las acciones destructivas, como forzar el apagado o ejecutar comandos en el invitado, requieren confirmación explícita. Si te gusta el tema, el mcp-wp-go sigue la misma idea para WordPress.
Hosts compatibles
| Host | Paquete | Estado |
|---|---|---|
| Ubuntu 26.04 | .deb |
probado en cada CI; host de referencia (3D y Vulkan validados) |
| Debian 13 | .deb |
probado en cada CI; 3D sin Vulkan |
| Rocky Linux 10 | .rpm |
probado en cada CI; las VMs de macOS necesitan Reims vGPU y el QEMU de la distro no tiene 3D |
| Ubuntu 24.04 | — | sin soporte; usa la v0.15.0 |
Bajo el capó
Backend en Go con Cobra para la CLI, el SDK oficial de MCP en Go y SQLite en Go puro (modernc.org/sqlite); la GUI es Wails con Vue. OpenCore, Lilu, VirtualSMC, WhateverGreen y OVMF vienen integrados desde las versiones oficiales. Todo se compila en una imagen Docker (make image test dist) y cada versión se instala y se ejecuta en contenedores limpios de Ubuntu 26.04, Debian 13 y Rocky Linux 10. Licencia BSD-3-Clause, con créditos a OSX-KVM, acidanthera, TianoCore, Dortania y Reims vGPU.
Pruebe
Si vives entre la comodidad de VirtualBox y el rendimiento de KVM, kvm-gui es para tu home lab: un binario, las VMs que ya conoces y un agente de IA de regalo. Instálalo, crea la primera VM y cuéntame qué te ha parecido: las estrellas y los issues en GitHub son muy bienvenidos. Para el contexto histórico, consulta también la historia de Proxmox, otro proyecto que hizo que KVM resultara amigable, y el ova2xva, para llevar VMs de VirtualBox a XCP-ng.