OMBRA

Updates

Ombra updates itself in place. Nothing is applied until you start it.

For users

StepWhat happens
NoticeA few minutes after boot, and daily, each machine fetches one small signed file through Tor. If a newer version exists, the desktop shows a notification and the gateway report shows an Update line
StartDesktop: open Update Ombra from the menu and enter your password. Gateway: sudo ombra-update apply at the console
ModeUpdates need Persistent mode. In Amnesic mode the command refuses and says why
VerifyThe bundle is checked against an Ed25519 signature, its signed manifest and its hash before anything is written
Safety netThe desktop takes an LVM snapshot of the root volume first; the gateway keeps copies of the files it replaces
FinishRestart. A rollback stays available for ten minutes after the next boot, then it is dropped
Undopkexec ombra-update rollback on the desktop (restart twice before updating again), sudo ombra-update rollback on the gateway

Your home folder, keys, wallets and chats are never touched by an update.

For the maintainer

ItemDetail
Signing keyEd25519. scripts/update/keygen.sh <dir> creates it once. The private key signs every release and never leaves you; losing it means no installed machine can accept an update again, leaking it means anyone can update every machine. Only build/update-pubkey.pem ships
PayloadA tree of files that overlay / on the target, plus an optional usr/local/lib/ombra-update/post.sh that runs once after the files land
Bundlescripts/update/make-bundle.sh <role> <version> <min-from> <payload-dir> <out-dir> <private-key> writes ombra-<role>-<version>.update (signed manifest, signature, payload)
Indexscripts/update/make-index.sh <private-key> <out-dir> <valid-days> desktop=<bundle> gateway=<bundle> writes latest.txt and latest.txt.sig. The index expires, so a frozen mirror cannot hold machines back forever
PublishUpload latest.txt, latest.txt.sig and the bundles to updates/ next to the release downloads. Nothing else is needed: the machines read plain files
Compatibilitymin-from names the oldest version the bundle applies to. Test every release as an upgrade from the previous one, not only as a fresh install
LimitsAn update cannot change the disk layout or the boot menu. Those need a new image

Privacy and trust

TopicDetail
NetworkEvery fetch goes through Tor. The server sees a Tor exit asking for a public file
FrequencyOne small index request a few minutes after boot and once a day while running. The download happens only when you run Update
Trust rootThe public key in the image. A compromised download host can withhold updates but cannot forge one
Not coveredA machine that never updates keeps its bugs; the check only tells you

Rendered from docs/UPDATES.md in the repository.