Source-grounded rewrite of 529 published docs pages with per-unit information-loss verification: 1,713 factual corrections cited to src/**, generated surfaces regenerated, frontmatter titles preserved for i18n, release notes pages untouched. All docs gates green. Closes #100141
7.8 KiB
summary, read_when, title, sidebarTitle
| summary | read_when | title | sidebarTitle | |||
|---|---|---|---|---|---|---|
| Stable, extended-stable, beta, and dev channels: semantics, switching, pinning, and tagging |
|
Release channels | Release Channels |
OpenClaw ships four update channels:
- 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 foreground-only in this release. - beta: npm dist-tag
beta. Falls back tolatestwhenbetais missing or older than the current stable release. - dev: moving head of
main(git). npm dist-tagdevwhen published.mainis for experimentation and active development; it may contain incomplete features or breaking changes. Do not run it for production gateways.
Stable builds usually ship to beta first, get vetted there, then get
promoted to latest without a version bump. Maintainers can also publish
directly to latest. Dist-tags are the source of truth for npm installs.
Switching channels
openclaw update --channel stable
openclaw update --channel extended-stable
openclaw update --channel beta
openclaw update --channel dev
--channel persists the choice to update.channel in config and drives both
install paths:
| Channel | npm/package installs | git installs |
|---|---|---|
stable |
dist-tag latest |
latest stable git tag (excludes -alpha.N, -beta.N, -rc.N, -dev.N, -next.N, -preview.N, -canary.N, -nightly.N, and other named prerelease suffixes) |
extended-stable |
resolves the public npm extended-stable selector, verifies the exact selected package, and installs that exact version. Fails closed with no fallback to latest, beta, or dev. |
unsupported: OpenClaw leaves the checkout unchanged and asks you to use a package installation |
beta |
dist-tag beta, falling back to latest when beta is missing or older |
latest beta git tag, falling back to the latest stable git tag when beta is missing or older |
dev |
dist-tag dev (rare; most dev users run git installs) |
fetches, rebases the checkout on the upstream main branch, builds, and reinstalls the global CLI |
For dev git installs, the default checkout is ~/openclaw (or
$OPENCLAW_HOME/openclaw when OPENCLAW_HOME is set); override with
OPENCLAW_GIT_DIR.
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:
# Install a specific version
openclaw update --tag 2026.4.1-beta.1
# Install from the beta dist-tag (one-off, does not persist)
openclaw update --tag beta
# Switch to the moving GitHub main checkout (persistent)
openclaw update --channel dev
# Install a specific npm package spec
openclaw update --tag openclaw@2026.4.1-beta.1
# Install from GitHub main once without persisting the channel
openclaw update --tag main
Notes:
--tagapplies to package (npm) installs only; git installs ignore it.- The tag is not persisted; the next
openclaw updateuses the configured channel. --tag mainmaps to the npm-compatible specgithub:openclaw/openclaw#mainfor that one run. For a persistent movingmaininstall, 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. The npm install path rejects GitHub/git source targets outright and points you at the git method instead.- 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 what openclaw update would do without making changes:
openclaw update --dry-run
openclaw update --channel beta --dry-run
openclaw update --tag 2026.4.1-beta.1 --dry-run
openclaw update --dry-run --json
The dry run reports the effective channel, target version, planned actions, and whether a downgrade confirmation would be required.
Plugins and channels
Switching channels with openclaw 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-stablecurrently uses the existing stable/latest plugin line after the core package succeeds. Official plugin@extended-stableselectors are not queried yet.- npm-installed plugins are updated after the core update completes.
Checking current status
openclaw update status
Shows the active channel (with the source that decided it: config, git tag, git branch, installed version, or default), install kind (git or package), current version, and update availability.
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.