Development

Build

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

Build a guest image with mkosi:

./scripts/build-image.sh

Host Requirements

Runtime commands need a Linux KVM host with:

macOS builds are shipped for offline work: validate, import, images, pull, and compose-file authoring.

Cutting A Release

Releases are produced by GoReleaser on every v* tag:

git tag -a vX.Y.Z -m "vX.Y.Z"
git push origin vX.Y.Z

The workflow cross-compiles Linux and macOS binaries for amd64 and arm64, packages them with LICENSE, NOTICE, and README.md, computes SHA-256 checksums, publishes a GitHub release, and emits GitHub artifact attestations. Release notes keep the checksum file and signed provenance verification command visible near the install command so operators can verify downloads before extracting them.

To rehearse locally without publishing:

goreleaser release --snapshot --clean --skip=publish