OpenClaw Release Channels: Stable, Beta, Dev, and Extended-Stable

Learn about OpenClaw's four update channels: stable, extended-stable, beta, and dev. This page explains their semantics, switching, pinning, and tagging for users and maintainers.

Read this when

  • You want to switch between stable/extended-stable/beta/dev
  • You want to pin a specific version, tag, or SHA
  • You are tagging or publishing prereleases

OpenClaw provides four update channels:

  • stable: npm dist-tag latest. Suggested for the majority of users.
  • extended-stable: npm dist-tag extended-stable. A brand new, trailing supported-month package channel. This channel is package only and requires a foreground installation. When update.checkOnStart is turned on, a saved selection gets read only update hints, but no automatic application occurs.
  • beta: npm dist-tag beta. Falls back to latest when beta is absent or older than the current stable release.
  • dev: moving head of main (git). npm dist-tag dev when published. main is meant for experimentation and active development; it may include unfinished features or breaking changes. Do not use it on production gateways.

Stable releases are typically sent to beta first, undergo testing there, and then move to latest without a version increment. Maintainers may also publish straight to latest. Dist-tags serve as the authoritative source for npm installations.

Switching channels

openclaw update --channel stable
openclaw update --channel extended-stable
openclaw update --channel beta
openclaw update --channel dev

--channel saves the selection to update.channel in configuration and controls both installation methods:

Channelnpm/package installsgit installs
stabledist-tag latestlatest 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-stableresolves 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
betadist-tag beta, falling back to latest when beta is missing or olderlatest beta git tag, falling back to the latest stable git tag when beta is missing or older
devdist-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.

Tip

To keep stable and dev in parallel, use two separate checkouts and point each gateway at its own.

One-off version or tag targeting

Use --tag to aim at a particular dist-tag, version, or package spec for a single update without altering the stored 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:

  • --tag applies exclusively to package (npm) installs; git installs do not respect it.
  • The tag is not stored; the next openclaw update uses the configured channel.
  • --tag main resolves to the npm compatible spec github:openclaw/openclaw#main for that single execution. For a persistent moving main install, use openclaw 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 asks 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 --tag cannot be paired with an effective extended-stable channel.
  • --channel beta differs from --tag beta: the channel flow can fall back to stable/latest when beta is missing or older, while --tag beta always targets the raw beta dist-tag for that single execution.

Dry run

Preview what openclaw update would do without applying any 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

A dry run displays the effective channel, the target version, the actions that will be performed, and whether a downgrade would prompt a confirmation.

Plugins and channels

When you switch channels with openclaw update, plugin sources are also synchronised:

  • dev reverts any installed plugin that has a bundled equivalent back to its bundled (git checkout) source.
  • stable and beta bring back plugin packages that were installed via npm or ClawHub.
  • extended-stable resolves eligible official npm plugins with a bare/default or latest intent to match the exact installed core version. Plugin @extended-stable tags are not queried at runtime.
  • After the core update finishes, any npm-installed plugins are updated.

Checking current status

openclaw update status

Displays the active channel along with the source that determined it (config, git tag, git branch, installed version, or default), the install type (git or package), the current version, and whether an update is available.

Tagging best practices

  • To direct git checkouts to a particular release, use vYYYY.M.PATCH for stable and vYYYY.M.PATCH-beta.N for beta. Named prerelease suffixes like -alpha.N, -rc.N, and -next.N do not count as stable or beta targets.
  • For backwards compatibility, legacy numeric stable tags such as vYYYY.M.PATCH-1 and v1.0.1-1 are still treated as stable git tags.
  • vYYYY.M.PATCH.beta.N (dot-separated) is also accepted for compatibility; -beta.N is the preferred alternative.
  • Tags must remain immutable: never move or reuse a tag.
  • For npm installs, npm dist-tags are the authoritative source:
    • latest points to stable
    • extended-stable points to the trailing supported-month package release
    • beta points to a candidate build or a beta-first stable build
    • dev points to the main snapshot (optional)

macOS app availability

Beta and dev builds might not include a macOS app release. That is acceptable:

  • The git tag and npm dist-tag can still be published independently.
  • Mention "no macOS build for this beta" in the release notes or changelog.