Log

Every release, as it lands.

Releases are published on GitHub. This page reads them live, so a release appears here when it is published, not when this site is next deployed.

Blubie, the Blunix cat, sits beside a large open ledger of blank ruled pages, keeping the record.
A cat keeps track of what comes through the door.
From GitHub

Releases

Every release on afterdarksys/blunix, with its files, their sizes, and their sha256 when the release publishes one.

The release table loads from GitHub when JavaScript runs. Without it, read the releases on GitHub.

v0.1.1-rc.2 is the first signed release. v0.1.0 remains an unsigned test release. Check a download before you use it: put it beside the release's SHA256SUMS and run sha256sum -c --ignore-missing SHA256SUMS. On an unsigned release, that proves the bytes match. It does not prove who built them.

News

What changed

Changes to the service, newest first. Releases are in the table above.

  1. : the first signed release

    v0.1.1-rc.2 is out, as a pre-release on Debian 13. It was built by the release build server from the signed tag v0.1.1-rc.2, then its SHA256SUMS was signed offline with the release key. It also ships build-provenance.json and SOURCES.md. Read how to verify it.

  2. : the portal is live

    The portal at build.blunix.io is open. The API at api.blunix.io answers. The build hosts on blnx.io serve the latest document for each label. Pinned version hosts are not on yet. Sign-in is After Dark Systems SSO. A release build server now builds official images from signed tags. The release signing key is published below. v0.1.1-rc.2 is the first signed release.

Check it yourself

Verify a release

A signed release carries SHA256SUMS.asc, a detached signature over SHA256SUMS. Check the signature first, then the files.

v0.1.0 is an unsigned test release, so it has no SHA256SUMS.asc. For it, only step 3 applies. v0.1.1-rc.2 and later carry SHA256SUMS.asc.

How releases are built

Built in one place, signed in another

Official images come from a dedicated build server. Signing happens somewhere else.

Designed, not built

The log we are building

GitHub releases are how images ship today. The design adds an append-only Blunix Log on top: one row per version and channel, holding the artifact digest, the signature, and the version it replaces. None of this is running.

  1. The log is the source

    A publisher appends a row through the API. An ordinary account key cannot. The public page is a rendering of those rows. An old row stays where it was written.

  2. The manifest is generated

    systemd-sysupdate reads a manifest at the update URL. That file is produced from the current rows for the channel. Nobody edits it by hand.

  3. Mirrors are caches

    A row can name more than one https mirror, and GitHub release assets are one of them. The machine checks the digest. A mismatch is refused, and the running image stays. The build is on the platform page.

  4. The other slot boots

    The new image installs beside the one that is running, and the previous slot still boots. That is how the host lands on its feet.

  5. A withdrawn version leaves the manifest

    Withdrawing appends a row. The old row remains, so you can see that it shipped and that it was pulled. A new boot does not select it.

Config is the other pipe

An image is a release. The build document for one machine is ciphertext on a label, such as https://ada.blnx.io/. Republishing a label changes the next install from it. It does not rewrite a machine that already applied a document.

The account that registers a label is on the account page. The routes are on the API page.