On this page
On this page
Release process
Release policy
OpenClaw offers stable releases for everyday use, beta releases for testing, and extended-stable releases for users who prefer an older Gateway maintenance line. This page explains those choices and what a release has been checked for. For switching channels, see Release channels.
Release channels
| Channel | What you get |
|---|---|
| Stable | The regular release promoted to npm latest. |
| Beta | A candidate on npm beta. This may be a prerelease or a final version awaiting promotion. |
| Extended-stable | A Gateway maintenance release from either of the two trailing completed months, on npm extended-stable. |
| Dev | The moving head of main, for development. |
Extended-stable includes the Gateway, official npm plugins, and Docker images. It does not include native apps or ClawHub publication, and it does not change the regular stable channel. Its GitHub release is not marked Latest. A monthly line retires when it falls outside the two supported completed months.
Alpha builds are a separate internal testing track, not a recommended user channel.
Version naming
| Release | Version example |
|---|---|
| Regular final | 2026.9.6 |
| Beta prerelease | 2026.9.6-beta.1 |
| Regular correction | 2026.9.6-1 |
| Extended-stable | 2026.8.33, followed by 2026.8.34 for its next maintenance release |
Versions use year.month.patch, without zero-padding. The patch is a release
number within the month, not a day of the month. Regular releases use patches
below 33; extended-stable starts at 33. Git tags add v, as in v2026.9.6.
Published npm versions and release tags are never replaced. A fix receives a new version. Alpha-only versions do not advance the regular release number.
Release cadence
Releases normally go to beta first and move to stable after validation.
For core and every published official npm plugin, beta must be at least as
new as latest; an already newer beta stays unchanged. A prerelease is older
than the final version with the same base number.
A final version published to the beta channel still has to meet the stable validation requirements below. The npm channel alone does not determine which checks apply.
Release validation
Stable publication requires stable or full validation, longer-running soak tests, and blocking performance checks. These requirements also apply to a final version first published on the beta channel. Beta-profile evidence cannot qualify stable.
Every selected validation lane must pass; publication waivers cannot bypass failures or required coverage. Validation covers source CI, packages, plugins, Gateway installs and upgrades, and selected app, UI, Telegram, QA, and live-provider checks. All-group qualification includes all nine Gateway install/upgrade combinations across Linux, Windows, and macOS. Coverage otherwise varies by profile and selected operating systems. Check the release's recorded coverage: skipped or deferred checks are not passes.
See Full release validation for coverage by profile and how to interpret the results.
Packages and apps can become available at different times
A published Gateway release does not mean every native app is ready. Signing and publishing the apps can finish separately from npm, Docker, and the GitHub release.
Check the release's assets and announcements for each platform. A pending app build or an accepted publication request is not a completed app release. Extended-stable is a Gateway distribution and does not publish native apps.
Release notes and verification
The release notes describe user-facing changes. GitHub releases also carry validation results, dependency reports, and checks of the published packages. These records identify the tested version and the files that shipped. Later documentation updates may improve the release notes without rebuilding or replacing packages.
For dependency review, see Dependency locking. Release dependency archives include npm-format locks separately from the package tarballs.
Downstream packaging
To consume a release lock:
- Download
openclaw-<version>-dependency-evidence.zipfrom the GitHub release. Opendependency-evidence/npm-package-locks.json(schemaVersion: 1) and select thepackagesentry matching the exact packagenameandversion. - Reject entries with a nonempty
omittedWorkspaceDependenciesarray. These are partial locks: the generator omits siblingworkspace:runtime dependencies that publish in the same release. The report counts these entries inpackagesWithOmittedWorkspaceDependencies. - Verify that
dependency-evidence/dependency-evidence-manifest.json'sreleaseSha, the report'ssourceSha, and the OpenClaw commit you pin all match. The report also records the sourcepnpm-lock.yamlSHA-256. - Serialize
entry.lockaspackage-lock.jsonusing two-space JSON indentation and a trailing newline, then verify its SHA-256 againstentry.lockSha256. - Before
npm ci, carry the sourcepnpm-workspace.yamloverrides into the consumingpackage.json, or rewrite nesteddependenciesandoptionalDependenciesspecs to their locked versions. The generated locks encode workspace overrides, so unmodified specs can fail npm's lock-sync check.
The companion npm-package-locks.md includes counts and a package table. Each
entry records bundleRuntimeDependencies and direct dependency counts so
packagers can identify lockless packages that need an external lock.
Maintainer procedures
Release preparation, publishing commands, approvals, and recovery live in the release-maintainer skill. Credential handling and emergency procedures remain in the private maintainer runbook. Former section links below lead to their corresponding procedures.
Extended-stable preparation and publication.
Resumable release orchestration.
Post-release documentation publication.
Runtime generation design proposal (not shipped behavior).
Interrupted preparation and publication.
Regular publication and verification.