- stable: npm dist-tag
latest. Recommended for most users. - extended-stable: npm dist-tag
extended-stable. A net-new, trailing supported-month package channel. It is package-only, and installation is foreground-only. It receives read-only update hints whenupdate.checkOnStartis enabled, including direct final extended-stable package installs, but never applies automatically. - beta: npm dist-tag
beta. Falls back tolatestwhenbetais missing or older than the current stable release. - dev: moving head of
main(git), including when switching from a package install.mainis for experimentation and active development; it may contain incomplete features or breaking changes. Do not run it for production gateways.
latest. Dist-tags are the source of truth for npm installs.
Switching channels
--channel persists the choice to update.channel in config and drives both
install paths:
An explicit
--channel stable or --channel beta switches a Git installation
to a package installation. A bare openclaw update in a Git checkout with a
previously stored stable or beta channel instead selects the corresponding Git tag.
For managed Gateways, successful switches refresh the service to the verified
installation before checking readiness. A refused switch or verified rollback
recovers the previous service; unverified recovery leaves it stopped for inspection.
For dev git installs, the default checkout is ~/openclaw (or
$OPENCLAW_HOME/openclaw when OPENCLAW_HOME is set); override with
OPENCLAW_GIT_DIR.
Automatic update campaigns pin the upstream commit they announce, so the
displayed list previews up to five commits from the exact target installed even
if main advances during the countdown. A manual
openclaw update --channel dev still targets the current upstream main.
One-off version or tag targeting
Use--tag to target a specific dist-tag, version, or package spec for a
single update without changing the persisted channel:
--tagapplies to package (npm) installs only; git installs ignore it.- The tag is not persisted; the next
openclaw updateuses the configured channel. - A package install with stored
update.channel: "dev"still honors a one-off--tagwithout switching to Git. An explicit--channel devtakes precedence over--tagand selects the Git checkout flow. - The
--tag mainshorthand is rejected for package installs because the workspace checkout is not a self-contained package artifact. Useopenclaw update --channel dev(package installs switch to a git checkout) or reinstall with the installer’s git method:curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git --version main. - Downgrade protection: if the target version is older than the current
version, OpenClaw prompts for confirmation (skip with
--yes). - Extended-stable always uses its verified exact package target. It is not a
one-off alias for
--tag extended-stable, and--tagcannot be combined with an effective extended-stable channel. --channel betadiffers from--tag beta: the channel flow can fall back to stable/latest when beta is missing or older, while--tag betaalways targets the rawbetadist-tag for that one run.
Dry run
Preview whatopenclaw update would do without making changes:
Plugins and channels
Switching channels withopenclaw update also syncs plugin sources:
devswitches installed plugins that have a bundled counterpart back to their bundled (git checkout) source.stableandbetarestore npm-installed or ClawHub-installed plugin packages.extended-stableresolves eligible official npm plugins with bare/default orlatestintent to the exact installed core version. It does not query plugin@extended-stabletags at runtime. Version-bound runtime plugins use the base release cohort for correction versions (for example,YYYY.M.P-2uses pluginYYYY.M.P).- npm-installed plugins are updated after the core update completes.
Checking current status
Tagging best practices
- Tag releases you want git checkouts to land on:
vYYYY.M.PATCHfor stable,vYYYY.M.PATCH-beta.Nfor beta. Named prerelease suffixes such as-alpha.N,-rc.N, and-next.Nare not stable or beta targets. - Legacy numeric stable tags such as
vYYYY.M.PATCH-1andv1.0.1-1are still recognized as stable git tags for compatibility. vYYYY.M.PATCH.beta.N(dot-separated) is also recognized for compatibility; prefer-beta.N.- Keep tags immutable: never move or reuse a tag.
- npm dist-tags remain the source of truth for npm installs:
latest-> stableextended-stable-> trailing supported-month package releasebeta-> candidate build or beta-first stable builddev-> main snapshot (optional)
macOS app availability
Beta and dev builds may not include a macOS app release. That is fine:- The git tag and npm dist-tag can still publish on their own.
- Call out “no macOS build for this beta” in release notes or changelog.