Release Channels
Development channels
Section titled “Development channels”OpenClaw ships three update channels:
- stable: npm dist-tag
latest. Recommended for most users. - beta: npm dist-tag
beta(builds under test). - dev: moving head of
main(git). npm dist-tag:dev(when published). Themainbranch is for experimentation and active development. It may contain incomplete features or breaking changes. Do not use it for production gateways.
We usually ship stable builds to beta first, test them there, then run an
explicit promotion step that moves the vetted build to latest without
changing the version number. Maintainers can also publish a stable release
directly to latest when needed. Dist-tags are the source of truth for npm
installs.
Switching channels
Section titled “Switching channels”openclaw update --channel stableopenclaw update --channel betaopenclaw update --channel dev--channel persists your choice in config (update.channel) and aligns the
install method:
stable/beta(package installs): updates via the matching npm dist-tag.stable/beta(git installs): checks out the latest matching git tag.dev: ensures a git checkout (default~/openclaw, override withOPENCLAW_GIT_DIR), switches tomain, rebases on upstream, builds, and installs the global CLI from that checkout.
Tip: if you want stable + dev in parallel, keep two clones and point your gateway at the stable one.
One-off version or tag targeting
Section titled “One-off version or tag targeting”Use --tag to target a specific dist-tag, version, or package spec for a single
update without changing your persisted channel:
# Install a specific versionopenclaw update --tag 2026.4.1-beta.1
# Install from the beta dist-tag (one-off, does not persist)openclaw update --tag beta
# Install from GitHub main branch (npm tarball)openclaw update --tag main
# Install a specific npm package specNotes:
--tagapplies to package (npm) installs only. Git installs ignore it.- The tag is not persisted. Your next
openclaw updateuses your configured channel as usual. - Downgrade protection: if the target version is older than your current version,
OpenClaw prompts for confirmation (skip with
--yes).
Dry run
Section titled “Dry run”Preview what openclaw update would do without making changes:
openclaw update --dry-runopenclaw update --channel beta --dry-runopenclaw update --tag 2026.4.1-beta.1 --dry-runopenclaw update --dry-run --jsonThe dry run shows the effective channel, target version, planned actions, and whether a downgrade confirmation would be required.
Plugins and channels
Section titled “Plugins and channels”When you switch channels with openclaw update, OpenClaw also syncs plugin
sources:
devprefers bundled plugins from the git checkout.stableandbetarestore npm-installed plugin packages.- npm-installed plugins are updated after the core update completes.
Checking current status
Section titled “Checking current status”openclaw update statusShows the active channel, install kind (git or package), current version, and source (config, git tag, git branch, or default).
Tagging best practices
Section titled “Tagging best practices”- Tag releases you want git checkouts to land on (
vYYYY.M.Dfor stable,vYYYY.M.D-beta.Nfor beta). vYYYY.M.D.beta.Nis also recognized for compatibility, but prefer-beta.N.- Legacy
vYYYY.M.D-<patch>tags are still recognized as stable (non-beta). - Keep tags immutable: never move or reuse a tag.
- npm dist-tags remain the source of truth for npm installs:
latest-> stablebeta-> candidate build or beta-first stable builddev-> main snapshot (optional)
macOS app availability
Section titled “macOS app availability”Beta and dev builds may not include a macOS app release. That is OK:
- The git tag and npm dist-tag can still be published.
- Call out “no macOS build for this beta” in release notes or changelog.