Você provavelmente quer libvirt .
Suporta Xen, KVM, Virtualbox, VMWare, etc. Tem uma API estável, várias ligações de idioma.
Eu nunca escrevi nada que use libvirt, mas eu uso o libvirt virtual machine manager (GUI); e virsh (CLI), que pode ser roteirizado.