holos
Docker compose for KVM. Define multi-VM stacks in a single YAML file. No libvirt, no XML, no distributed control plane.
The primitive is a VM, not a container. Every workload instance gets its own kernel boundary, its own qcow2 overlay, and its own cloud-init seed.
Quick Start
Write a holos.yaml :
name : my-stack services : db : image : ubuntu:noble vm : vcpu : 2 memory_mb : 1024 cloud_init : packages : - postgresql runcmd : - systemctl enable postgresql - systemctl start postgresql web : image : ubuntu:noble replicas : 2 depends_on : - db ports : - " 8080:80 " volumes : - ./www:/srv/www:ro cloud_init : packages : - nginx write_files : - path : /etc/nginx/sites-enabled/default content : | server { listen 80; location / { proxy_pass http://db:5432; } } runcmd : - systemctl restart nginx
Bring it up:
holos up
That's it. Two nginx VMs and a postgres VM, all on the same host, all talking to each other by name.
CLI
... continue reading