self-update¶
Update a standalone Openbase Coder install to the latest release for its
channel. The full contract (feed, atomicity, rollback, quiescing, channels,
signing) lives in the workspace AUTO_UPDATE.md guide.
Standalone installs also update automatically: the background routines
service checks the release feed every few hours and applies available updates
on its own (deferring while a voice session is active, except for required
updates). Set OPENBASE_CODER_AUTO_UPDATE=0 in ~/.openbase/.env to opt out
and update only manually. Automatic-update output is written to
~/.openbase/logs/self-update.log.
In the apps: the desktop app updates itself separately via Electron auto-update and shows a footer indicator when a CLI update is available; the iOS app updates through TestFlight/App Store.
Usage¶
openbase-coder self-update # update if a newer release exists
openbase-coder self-update --check # check only; do not install
openbase-coder self-update --force # update even during a voice session
openbase-coder self-update --json # machine-readable result (UI-driven)
Check the installed versions and update availability at any time:
It prints the CLI version, the active standalone package (target, channel, layout), and whether a newer release is available.
Behavior¶
- Refuses in development-workspace installs (git-managed; no auto-update).
- Fetches
update-manifest.jsonfor the install's channel —stablefrom the latest GitHub release,betafrom the newest release including prereleases — and verifies its Ed25519 signature when the build embeds the release public key. - Compares versions and honors
min_supported_versionand the packagelayout_version; a release with a newer layout than the updater understands is reported asblocked(reinstall via the desktop app or install.sh). - Defers when a voice session is active unless
--forceis passed. - Downloads the target tarball, verifies its SHA-256, extracts it to
~/.openbase/packages/standalone/releases/<version>-<target>/, and smoke-runs the new launcher. - Atomically flips the
currentsymlink, keeping the outgoing release behindprevious, then regenerates and restarts services with the new CLI, rebuilds the plugin site when the bundled Python changed, and refreshes~/.openbase/bin/codexwhen Openbase installed it. - Rolls back to
previous(and reinstalls services) if the post-update health gate fails; older releases are pruned, keeping two.
Statuses¶
updated, up-to-date, deferred (voice session), blocked (newer package
layout), rolled-back (health gate failed; exit code 1).
Related¶
GET /api/update/status/(?refresh=1re-checks the feed) andPOST /api/update/apply/expose the same functionality to the desktop app and console; apply runs detached and logs to~/.openbase/logs/self-update.log.- Update flags also appear in the
versionsblock ofGET /api/onboarding/status/.