Amargasaurus cazaui
An image-based Linux server OS built like a container, composed from freedesktop-sdk.
Bluefin Server targets the same workload space as Flatcar Container Linux, Fedora CoreOS, and Talos. Built with BuildStream 2, its userspace, kernel, and boot chain compose from freedesktop-sdk (FSDK 26.08, systemd v261) components. No other distribution binaries ship in the base image; third-party userspace extensions (such as Flatcar System Extension Bakery images) require systemd-sysext merge --force per systemd-sysext-extensions.md.
It is DDI first and diskless-first: one build generates a verity-sealed /usr, signed UKIs, an OS DDI pulled into RAM over HTTP, and an offline USB installer. Rebooting updates diskless nodes; disk installation is optional.
The only thing worse than a nightmare is a factory of nightmares that makes other nightmares
Bluefin Server is currently in Alpha:
- Trust model: Every boot enforces Secure Boot (signed systemd-boot, signed UKIs, dm-verity
/usrpinned byusrhash=on the command line). Releases include a GPG-signedSHA256SUMSmanifest verified bysystemd-sysupdateand initrd pull. - Suitability: Alpha builds are intended for evaluation, testing, and factory validation. Not yet recommended for production workloads.
- Roadmap: Completed criteria and remaining gates toward 1.0 are tracked in
docs/MVP_1_0_READINESS.md.
- Diskless boot — Netboot UKI pulls
bluefin-server_<ver>.rawinto RAM withrd.systemd.pull(verify=signature), mounts a dm-verity erofs/usr, and runs from tmpfs. Nodes update by rebooting into a newer image, flagging/run/reboot-requiredwhen an updated image is offered. - Optional disk install with A/B rollback — A running diskless node installs itself via ddi-installer.md (
systemd-sysinstallcopies/usrinto slot A). First disk boot creates slot B and an xfs root.systemd-sysupdatefills the inactive slot and reboots nightly (Kubernetes nodes defer reboots to kured); UKI boot counting automatically rolls back failed boots. Updates can be held via/run/reboot-lockor/etc/reboot-lock. - Secure Boot by default — Signed boot chain with
lockdown=integrity. Booty serves UEFI HTTP boot assets and per-node Ignition configs. - Declarative provisioning — Pass an
ignition.configcredential (orbluefin-node.ignnext to the UKI); Ignition runs in the initrd on every boot. Configs must be idempotent. - Opt-in sysexts — k0s, kubeadm, homelab automation, OpenZFS, and NVIDIA drivers/CDI ship as separate
systemd-sysextimages outside the base/usr.
Remote diagnostics: OpenSSH is installed for diagnostics but disabled by default via presets. Start manually with
systemctl start sshdwhen access is required. Seedocs/skills/factory-integration.md.
Each push to main publishes an immutable GitHub Release (v<YY.MM.run>) and an OCI artifact at ghcr.io/projectbluefin/bluefin-server:<ver>.
| File | Use case |
|---|---|
bluefin-server-netboot_<ver>.esp.raw |
Flash to USB for diskless HTTP boot (pulls OS into RAM). |
bluefin-server-installer_<ver>.raw |
Flash to USB for offline systemd-sysinstall to disk. |
bluefin-server_<ver>.raw |
OS DDI served by Booty for network boot at scale. |
Verify downloads against the GPG-signed SHA256SUMS using files/os/sysupdate-keys/import-pubring.gpg; see docs/skills/systemd-sysupdate-verification.md.
Write bluefin-server-installer_<ver>.raw to a USB drive, configure UEFI Secure Boot Setup Mode, and boot the stick. Enroll Bluefin keys when prompted, select the target disk, and confirm. After reboot, set the console root password. Unattended installs, firmware warnings, and recovery details are in docs/skills/usb-installer.md.
Local builds require podman and just. BuildStream runs containerized inside the FSDK bst2 image:
just validate # resolve element dependency graph
just export-image # build release set into dist/diskless/
just dogfood-check # headless QEMU diskless boot with Secure Boot
just dogfood-install # diskless boot, install to disk, verify rollback (QEMU)Start here to explore architecture and operations guides in docs/skills/:
| Guide | Scope |
|---|---|
ddi-installer.md |
Boot, installation, and A/B sysupdate lifecycle |
usb-installer.md |
Offline USB installer, interactive prompts, and unattended installs |
booty-integration.md |
UEFI HTTP boot, iPXE chainloading, and network boot provisioning |
diskless-troubleshooting.md |
RAM sizing, initrd failure modes, and Ignition debugging |
systemd-sysext-extensions.md |
System extensions, bakery compatibility, and version locking |
kubeadm-sysext.md |
Kubeadm worker and single-node control-plane extensions |
k0s-sysext-ops.md |
K0s cluster operations, tokens, and troubleshooting |
homelab-profile.md |
Homelab Ignition templates, mDNS cluster join, and add-ons |
nvidia-sysext.md |
NVIDIA open kernel modules and Container Toolkit CDI extensions |
systemd-sysupdate-verification.md |
Release signatures, sysupdate policies, and SBOM attestations |
secure-boot-keys.md |
Key enrollment, signing workflows, and shim integration |
gap-analysis-distros.md |
Comparison to Flatcar, Fedora CoreOS, Ubuntu, and Talos |
Complete manifest and developer commands are listed in AGENTS.md and CONTRIBUTING.md.
- Signed boot chain: ESP key enrollment runs on first boot. The installer halts if Secure Boot is disabled unless explicitly overridden; see
docs/skills/secure-boot-keys.md. - Signed manifests & updates: Builds emit signed
SHA256SUMSmanifests. Updates and initrd pulls verify signatures automatically (Verify=yes). - Attestations: Releases publish SLSA provenance and SPDX SBOM attestations. Report vulnerabilities per
SECURITY.md.
- Track progress and file issues
- Systemd Discoverable Disk Images Specification
- Bare-metal deployments: Knuckle and the Bluespeed homelab factory.
Apache-2.0.