Torna agli aggiornamenti
New releaseAug 14, 2026

holos v0.6.2

Strumento dichiarativo di orchestrazione di VM KVM/QEMU utilizzando file compose YAML. Gestisce stack multi-VM con cloud-init, SSH, PCI passthrough e verifica delle immagini senza libvirt o XML.

Condividi
holos

Docker compose per KVM. Definisci stack multi-VM in un unico file YAML. Niente libvirt, niente XML, niente control plane distribuito.

Sito web e documentazione: https://zeroecco.github.io/holos/

La primitiva è una VM, non un container. Ogni istanza di workload ottiene il proprio confine del kernel, overlay qcow2, seed cloud-init e accesso SSH generato.

Avvio rapido

Richiede Linux + /dev/kvm. Le build macOS eseguono comandi offline come validate, import, images e pull, ma up e run richiedono un host KVM.

Una VM usa e getta, senza file compose:

holos run alpine
holos exec <printed-project-name>
holos down <printed-project-name>

Uno stack a servizio singolo che puoi interrogare con curl. Salvalo come holos.yaml:

name: hello

services:
  web:
    image: ubuntu:noble
    ports:
      - "8080:80"
    cloud_init:
      packages:
        - nginx
      write_files:
        - path: /var/www/html/index.html
          content: "hello from holos\n"
      runcmd:
        - systemctl restart nginx
holos up
curl localhost:8080
holos down hello

Si tratta di una VM reale che avvia un'immagine cloud, installa un pacchetto, scrive la configurazione e inoltra una porta dell'host.

Uso quotidiano

All'interno di una directory di progetto:

holos exec web       # open a guest shell
holos logs           # read project boot logs
holos stop web       # keep its disk
holos start web
holos up --dry-run   # preview configuration changes
holos help exec      # command syntax and options

Usa un nome di istanza come web-0 quando un servizio ha più repliche.

Installazione

I binari precompilati sono allegati a ogni GitHub release:

TAG=v0.6.3
ASSET=holos_${TAG#v}_Linux_x86_64.tar.gz
BASE=https://github.com/zeroecco/holos/releases/download/$TAG
curl -LO $BASE/$ASSET
curl -LO $BASE/checksums.txt
grep " $ASSET$" checksums.txt | sha256sum -c -
gh attestation verify $ASSET --repo zeroecco/holos
sudo tar -xz -C /usr/local/bin -f $ASSET holos
holos version
holos doctor

Le pagine di rilascio includono checksum SHA-256 e attestazioni degli artefatti GitHub per la provenienza firmata. Verificare entrambi prima di installare i binari sugli host di produzione.

Oppure compilare dal codice sorgente:

go build -o bin/holos ./cmd/holos
go test ./...
bin/holos doctor

CLI

holos up [-f holos.yaml] [--dry-run] [--recreate] [--strict] [--locked] [--lockfile path] [--lock-timeout 5m|--no-wait]
                                     start all services
holos run [flags] <image> [-- cmd...] launch a one-off VM
holos down <project>                 stop and remove a project
holos ps [-f holos.yaml]             list running projects
holos start [-f holos.yaml] [svc]    start a stopped service or all services
holos stop [-f holos.yaml] [svc]     stop a service or all services
holos console <project> [<inst>]     attach serial console
holos exec <project> [<inst>] [-- cmd...]
                                     SSH into an instance
holos logs <project> [<svc|inst>]    show console logs
holos inspect [-f holos.yaml] [project|instance]
                                     inspect state as JSON
holos validate [-f holos.yaml] [--strict]
                                     validate compose file (--capacity/--network)
holos pull <image>                   pull a cloud image
holos verify <image>|--all           verify cached image checksums
holos images                         list available images
holos images lock -f holos.yaml [-o holos.images.lock]
                                     write project image lockfile
holos snapshots {create|list|rm|restore|export} ... manage root snapshots
holos volumes [-f holos.yaml] [--json]
                                     list named volumes
holos volumes rm <project> <volume>  remove a detached named volume
holos volumes export <project> <volume> <path>
                                     export a detached named volume
holos volumes snapshot <project> <volume> <snapshot>
                                     snapshot a detached named volume
holos volumes snapshots <project> <volume>
                                     list volume snapshots
holos volumes snapshot-rm <project> <volume> <snapshot>
                                     remove a volume snapshot
holos volumes snapshot-restore <project> <volume> <snapshot>
                                     restore a volume snapshot
holos volumes snapshot-export <project> <volume> <snapshot> <path>
                                     export a volume snapshot
holos volumes resize [--shrink] <project> <volume> <size>
                                     resize a detached named volume
holos devices [--gpu]                list PCI devices and IOMMU groups
holos completion <bash|zsh|fish>      print shell completion script
holos doctor [--json]                check host dependencies
holos install [-f holos.yaml] [--system] [--enable]
                                     install a systemd unit
holos uninstall [-f holos.yaml] [--system]
                                     remove the systemd unit
holos import [vm...] [--all] [--xml file] [--connect uri] [-o file]
                                     convert virsh VMs into holos.yaml

Documentazione

  • Sito web: pagina di presentazione e documentazione renderizzata.
  • Guida CLI: VM ad hoc, exec, installazione systemd, importazione virsh e doctor.
  • File Compose: servizi, volumi, healthcheck, networking, PCI passthrough, provisioning tramite Dockerfile e valori predefiniti.
  • JSON Schema: completamento e validazione nell'editor per holos.yaml.
  • Esempi: stack eseguibili e template con spiegazioni in stile README.
  • Funzionalità mancanti: lacune prioritizzate che si adattano all'obiettivo compose KVM single-host di holos.
  • Sviluppo: build, test, requisiti dell'host e processo di rilascio.
  • Politica di sicurezza: versioni supportate e segnalazione privata.
  • Modello di minaccia / hardening: verifica delle immagini, permessi di stato, lock e linee guida operative.
  • Contribuire: build, test, stile e convenzioni per le PR.

Esempi

Inizia con il piccolo esempio nginx:

holos up -f examples/alpine-nginx/holos.yaml
curl localhost:8080
holos down alpine-nginx

La directory degli esempi include anche il provisioning tramite Dockerfile, il passthrough GPU e uno stack multi-servizio che mostra depends_on, la configurazione generata e le repliche.

Requisiti dell'host

  • Linux con /dev/kvm
  • qemu-system-x86_64
  • qemu-img
  • Uno tra cloud-localds, genisoimage, mkisofs o xorriso
  • Firmware OVMF / edk2-ovmf per UEFI o passthrough PCI
  • ssh per holos exec e gli healthcheck

Esegui holos doctor per verificare l'host.

Risoluzione dei problemi

Permission denied all'apertura di /dev/kvm

Categorie