Threat Model

holos is a single-host VM launcher. It assumes the host user running holos is trusted to start QEMU processes, read the project state directory, and access any bind-mounted host paths. It does not try to sandbox a malicious local user who already controls the holos state tree, the QEMU binary, or root on the host.

Primary Boundaries

Custom And Private Images

Local image paths (./image.qcow2, /srv/images/base.raw, etc.) are treated as operator-supplied artifacts. holos can infer the disk format from the extension, but it cannot know whether a private qcow2 is authentic, patched, or built with the expected cloud-init user and init system.

For teams using private images:

Project Image Lockfiles

For reproducible environments, keep a project-owned image lockfile in source control next to holos.yaml. holos does not yet enforce a first-class lockfile, but a simple holos.images.lock or images/SHA256SUMS gives reviewers and CI a stable contract:

sha256  ./images/api-base-2026-05-01.qcow2  3f2a...
sha256  ./images/db-base-2026-05-01.qcow2   a91c...

CI can verify those hashes before holos validate or before deploying to a KVM host. The same file also documents which private image build a compose change was tested against.

Hardening Checklist