Release Channels
Shanios publishes releases through two channels: latest and stable. This page explains the difference and how promotion works.
Channel Overview
| Channel | Purpose | Update Frequency | Risk |
|---|---|---|---|
latest | Newest features and fixes | Every build | Higher — bleeding edge |
stable | Verified, tested releases | After verification period | Lower — production ready |
How Channels Work
Pointer Files
Pointer files are per-edition on Cloudflare R2 (downloads.shani.dev):
https://downloads.shani.dev/<edition>/latest.txt
https://downloads.shani.dev/<edition>/stable.txt
https://downloads.shani.dev/<edition>/iso-latest.txt
https://downloads.shani.dev/<edition>/iso-stable.txt
Where <edition> is gnome or plasma (the only two editions with signed ISOs on R2).
Each file contains the date of the current release:
20260518
When shani-deploy checks for updates, it fetches these pointer files and compares them to the currently installed version.
Note: COSMIC, Kiosk, and Server profiles are available as base images (.zst send-streams) only — they do not have signed ISOs on R2. See Cloud Images Beyond AWS for deployment options.
Promotion Flow
- A new image is built by
shani-install-mediaand uploaded to R2 - The
<edition>/latest.txtpointer is updated to the new date - Machines on the
latestchannel see the update and can install it - After a verification period (no critical bugs reported), the
<edition>/stable.txtpointer is updated - Machines on the
stablechannel then receive the update
graph LR
A[Build Image] --> B[Upload to R2]
B --> C[Update latest.txt]
C --> D[latest channel machines]
D --> E[Verification period]
E --> F[Update stable.txt]
F --> G[stable channel machines]
Example: fetch current stable ISO date and verify an artifact:
DATE=$(curl -s https://downloads.shani.dev/gnome/iso-stable.txt)
VER="${DATE:0:4}.${DATE:4:2}.${DATE:6:2}"
curl -sI "https://downloads.shani.dev/gnome/$DATE/signed_shanios-gnome-$VER-x86_64.iso"
Choosing a Channel
- Developers and early adopters: Use
latestto get new features first - Production machines and fleet deployments: Use
stablefor reliability - OEM deployments: Use
stable— never shiplatestto end users
Switching Channels
# Check current channel
cat /etc/shani-channel
# Switch to stable
sudo shani-deploy --set-channel stable
# Switch to latest
sudo shani-deploy --set-channel latest
See Also
- System Updates — How shani-update works
- shani-deploy Reference — Command reference
- Build Pipeline — How images are produced