libvirt is an open-source API, daemon and management tool for managing platform virtualization. It can be used to manage KVM, Xen, VMware ESXi, QEMU and other virtualization technologies. These APIs are widely used in the orchestration layer of hypervisors in the development of a cloud-based solution.

Internals

libvirt is a C library with bindings in other languages, notably in Python, Perl, OCaml, Ruby, Java, JavaScript (via Node.js) and PHP. libvirt for these programming languages is composed of wrappers around another class/package called libvirtmod. libvirtmod's implementation is closely associated with its counterpart in C/C++ in syntax and functionality.

Supported Hypervisors 

 LXC – lightweight Linux container system
 OpenVZ – lightweight Linux container system
 Kernel-based Virtual Machine/QEMU (KVM) – open-source hypervisor for Linux and SmartOS
 Xen – bare-metal hypervisor
 User-mode Linux (UML) – paravirtualized kernel 
 VirtualBox – hypervisor by Oracle (formerly by Sun) for Windows, Linux, macOS, and Solaris
 VMware ESXi and GSX – hypervisors for Intel hardware
 VMware Workstation and Player – hypervisors for Windows and Linux
 Hyper-V – hypervisor for Windows by Microsoft
 PowerVM – hypervisor by IBM for AIX, Linux and IBM i

 Bhyve – hypervisor for FreeBSD 10+ (support added with libvirt 1.2.2)

User Interfaces
Various virtualization programs and platforms use libvirt. Virtual Machine Manager, GNOME Boxes and others provide graphical interfaces. The most popular command line interface is virsh, and higher level tools such as oVirt.

Corporate
Development of libvirt is backed by Red Hat, with significant contributions by other organisations and individuals. libvirt is available on most Linux distributions; remote servers are also accessible from Apple  and Microsoft Windows clients.

See also

 SPICE
 libguestfs

References

Books
 

Free software programmed in C
Free virtualization software
Hardware virtualization
Linux APIs
Virtualization software for Linux
Software that uses Meson
Red Hat software