Terminology and goals

To avoid ambiguity about the terms used, here are the definitions for some of the specific concepts used in libvirt documentation:

Hypervisor and domains running on a node

Now we can define the goal of libvirt: to provide a common generic and stable layer to securely manage domains on a node. The node may be distant and libvirt should provide all APIs needed to provision, create, modify, monitor, control, migrate and stop the domains, within the limits of the support of the hypervisor for those operations. Multiple mode may be accessed with libvirt simultaneously but the APIs are limited to single node operations.

This implies the following sub-goals:

So libvirt is intended to be a building block for higher level management tools and for applications focusing on virtualization of a single node (the only exception being domain migration between node capabilities which involves more than one node).