Libvir is a C toolkit to interract with the virtualization capabilities of recent versions of Linux (and other OSes), but ibvir won't try to provide all possible interfaces for interacting with the virtualization features.
To avoid ambiguity about the terms used here here are the definitions for soem of the specific terms used in libvir documentation:
Now we can define the goal of libvir: to provide the lowest possible generic and stable layer to manage domains on a node.
This implies the following:
So libvir should be a building block for higher level management tools or for applications focusing on virtualization on a single node (the only exception being domain migration between node capabilities which may need to be added at the libvir level). Where possible libvir should be extendable to be able to provide the same API for remote nodes, however this is not the case at the moment, the code currently handle only local node access.