What is the technology used by Boxes?

Boxes uses qemu-kvm, libvirt-glib and spice-gtk to allow users to easily manage virtual machines and connect to remote machines.


QEMU is a machine emulator and virtualizer. As a machine emulator, it can run OSes and programs made for one machine (e.g. an ARM board) on a different machine (e.g. your own PC). As a virtualizer, QEMU achieves near native performance by executing the guest code directly on the host CPU using KVM.

KVM (Kernel-based Virtual Machine) is a Linux kernel module that allows a user space program to use the hardware virtualization features of various processors.


libvirt is a toolkit for manipulating (creating, deleting and modifying) and monitoring virtual machines on remote hosts, securely.

libvirt-glib wraps libvirt to provide a high-level object-oriented API suited for glib-based applications.


SPICE, the Simple Protocol for Independent Computing Environments, is a system for accessing and controlling remote desktops across a network.

The SPICE server is a library that runs inside the QEMU binary. It is mainly responsible for authentication of client connections, relaying of graphics output of the guest OS to the client and relaying of user input (mouse and keyboard) from client to guest.

spice-gtk is the SPICE client that provides a view into the guest OS.


VNC, Virtual Network Computing, used only for remote display, is a well know protocol but quite limited and slow.