Releases: rurogge/coldiron-os
Release list
v0.3.0
v0.3.0 — the security pass · first product release
Status: released — all product acceptance criteria met (see
docs/THREAT-MODEL.md):
GPG-signed release artifacts + demonstrated byte-reproducible build.
⚠️ Signing-key caveat: the artifacts are signed with a one-shot key
(fingerprint63EA 0A22 C16A D051 8237 8B9B 7F53 97DF 4477 C2BD), generated in
an air-gapped VM and revoked immediately after signing — a deliberate
custody compromise (no physical air-gap available). The signatures verify as
"Good", the key shows as revoked by design, and the fingerprint is the trust
anchor. See docs/SIGNING.md.
Security impact
- Networkless monolithic kernel (
6.12.101-coldiron): compiled from Debian
trixie source with no network device drivers (CONFIG_NETDEVICES=n,
wireless/BT/NFC/CAN off) and no loadable modules (CONFIG_MODULES=n).
There is no driver that could reach the network and no module subsystem to
load one. - Verified boot chain: GRUB (BIOS + EFI) verifies kernel/initramfs PGP
signatures (check_signatures=enforce) before executing them — a tampered
image refuses to boot. - AppArmor enforced at boot: confinement profiles for the appliance scripts
load and enforce;coldiron-check(menu option 8) proves the posture at
runtime. - Full GPG verification of every staged binary: Sparrow manifest + Bitcoin
CoreSHA256SUMS.ascverified against keyrings you import out-of-band (the
build refuses to auto-download keys).
New / changed user-visible behavior
- New menu option 8 — System security check (
coldiron-check). - GRUB auto-boots after 10 s (no more hanging on
Enteron some machines). - Vault enumeration fixed on PCI-based USB hosts.
Test suite
- Host-side script tests: 27/27.
- QEMU/KVM E2E: 19/19 steps across 3 boots (fresh vault, Sparrow window,
real GRUB path). - Byte-reproducible ISO:
9bebf36f…— local build == CI build, verified
withcmp.
Verify before writing to USB
sha256sum -c SHA256SUMS
gpg --keyserver keyserver.ubuntu.com --recv-keys 63EA0A22C16AD05182378B9B7F5397DF4477C2BD
gpg --verify SHA256SUMS.asc SHA256SUMS
sudo dd if=coldiron-os-0.3.0-amd64.iso of=/dev/sdX bs=4M status=progressNote on this release's docs
This tag (v0.3.0) is the frozen snapshot the ISO was built and signed from.
The PROTOTYPE banner was lifted and SECURITY.md / INSTALL.md were aligned
after the tag, on main — see the current
README and
docs for the
up-to-date state.
v0.2.0 — dice-seed wallet + beginner guidance
v0.2.0 — dice-seed wallet + beginner guidance
New: generate a wallet from physical dice (Coldcard-style)
- Menu option 1 — roll two dice → bias-free entropy (rejection sampling) → BIP39 seed words → write on paper
- 12 words = 52 rolls · 24 words = 104 rolls (roll math corrected: the checksum bits are computed, never rolled)
- In-app self-check — derives your first receive address (BIP84
m/84'/0'/0'/0/0) and the master fingerprint before you ever touch Sparrow; both must match what Sparrow shows after import - Derived with
python3-mnemonic+python3-ecdsa; verified byte-exact against the official BIP39/BIP84 test vectors
New: beginner guidance layer
- Every menu entry has a plain-language description (
→ what it does) - Menu option 7: First-time guide — what a seed / vault / address are, the 3 first-time steps, the safety rules
- Every option script opens with What this does / What you need / What happens next
- Contextual tip — "no seed backups in the vault yet" appears when the vault is mounted but empty
- Menu fully reordered around the user lifecycle: create → secure → recover → use → off
Fixes
coldiron-shutdownnow always powers off even if the vault device is busy (unmount/close failure no longer leaves the machine on)coldiron-dice-seed --testrobust against short/odd roll files (found by the E2E)
Testing (all green)
- 19/19 host-side tests — BIP39/BIP84 vectors, roll rejection, menu failure-survival harness
- 16/16 QEMU E2E steps — every menu option (1–7 + q) exercised on the real ISO: abort paths, vault unlock via keyboard, age-encrypted backup, byte-exact restore, Sparrow window, clean shutdown with the vault mounted
Assets
coldiron-os-0.2.0-amd64.iso(633 MB) +SHA256SUMS- CI independently rebuilds the tag (second-machine build)
⚠️ Prototype. Do not trust this ISO with a valuable seed yet — see the README's honest limitations (kernel-level networking is still compiled in; only driver-blacklisted).
v0.1.1 — fix: menu black screen on option failure
Fix
The launcher menu (coldiron-menu) ran with set -e: any option that failed (abort at consent, no vault USB, wrong passphrase) killed the menu → xterm closed → black screen. The menu is now a true launcher loop (set -uo pipefail), so failures return to the menu.
Verified end-to-end in QEMU (all 5 options)
- Unlock vault — LUKS2 open + ext4 mount ✓
- Create encrypted seed backup — consent → unlock → seed ×2 → spot check → age-encrypt → backup file + sha256 ✓ (abort path returns to menu ✓)
- Restore — DECRYPT → age decrypt → original seed printed ✓
- Sparrow Wallet — launches ✓
- Shut down securely — clean poweroff with mounted vault ✓
ISO sha256: 3a8412f01ce73774e468926660161d8096aeea49962777fff2f9caa50bd1fb1f
COLDIRON OS v0.1.0 (prototype)
COLDIRON OS v0.1.0 — prototype. Offline-by-design, RAM-only cold-storage appliance for Bitcoin air-gapped signing.
What's inside the ISO: hardened Debian 13 (trixie) live image, boots entirely from RAM (toram), no usable networking (driver blacklist + loopback-only + restrictive sysctls), autologin desktop with the COLDIRON launcher menu, Sparrow Wallet 2.5.3 (GPG-verified against the maintainer keyring), Bitcoin Core 31.1 CLI tools (pinned sha256 + official SHA256SUMS cross-check), QR/age/paperkey tools, pcscd+OpenSC for hardware wallets.
Verify: sha256sum -c SHA256SUMS after downloading.
Tested: QEMU/KVM smoke test — boots to the desktop with the launcher menu, root autologin, only loopback network, overlay rootfs on RAM, vault USB detected. See docs/TESTING.md for the full procedure.