// releases
Stable means pinned
A RivetHub stable release is a set of exact tags,
digests, and checksums — not a floating latest.
// the pin file
What "stable" means here
Every fetch the installers make from RivetOS goes through one pin
file, pins/stable.json in the distro repository:
rivetos_tag- the exact RivetOS tag bare-metal node installs clone
image- the GHCR agent image for
--docker, preferred in digest form (@sha256:…) pgvector_image- the Postgres 16 + pgvector image for
--dockerdatahub installs rivet_ca_sha256- checksum of the pinned CA library
hub_helper_version- version of the
rivethub-hubhelper (already a real value,0.1.0)
When you install from the stable channel, you get exactly those artifacts. A new release is a new pin file, reviewed and tagged.
// current channel state
Current channel state
pins/stable.json is still an UNPINNED
placeholder awaiting the first RivetOS stable tag
(vX.Y.Z). Until then, bare-metal clones fall back to the
default branch and --docker falls back to floating tags —
with loud warnings from the installers. The datahub curl-pipe
installer refuses to run at all in this state. Install from a checkout
and read the warnings.
The machine-readable channel file is served at
releases/latest.json.
Its fields are filled at pin time; while unpinned they read
UNPINNED / null:
{
"rivetos": "UNPINNED",
"datahub_sh_sha256": "UNPINNED",
"node_sh_sha256": "UNPINNED",
"updated": null
}
// changelog
Changelog
Release notes and the changelog live with the source: the distro
repository (pins/README.md documents each pin field) and
the RivetOS runtime repository, documented at
rivetos.dev. When the first stable tag
lands, this page will list it here.