2026-01-20 13:33:31 +00:00
|
|
|
|
---
|
|
|
|
|
|
summary: "Stable, beta, and dev channels: semantics, switching, and tagging"
|
|
|
|
|
|
read_when:
|
|
|
|
|
|
- You want to switch between stable/beta/dev
|
|
|
|
|
|
- You are tagging or publishing prereleases
|
2026-01-31 16:04:03 -05:00
|
|
|
|
title: "Development Channels"
|
2026-01-20 13:33:31 +00:00
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# Development channels
|
|
|
|
|
|
|
2026-01-21 06:00:50 +00:00
|
|
|
|
Last updated: 2026-01-21
|
2026-01-20 14:27:34 +00:00
|
|
|
|
|
2026-01-30 03:15:10 +01:00
|
|
|
|
OpenClaw ships three update channels:
|
2026-01-20 13:33:31 +00:00
|
|
|
|
|
2026-01-24 20:59:35 +00:00
|
|
|
|
- **stable**: npm dist-tag `latest`.
|
|
|
|
|
|
- **beta**: npm dist-tag `beta` (builds under test).
|
2026-01-20 13:33:31 +00:00
|
|
|
|
- **dev**: moving head of `main` (git). npm dist-tag: `dev` (when published).
|
|
|
|
|
|
|
2026-01-24 20:59:35 +00:00
|
|
|
|
We ship builds to **beta**, test them, then **promote a vetted build to `latest`**
|
|
|
|
|
|
without changing the version number — dist-tags are the source of truth for npm installs.
|
|
|
|
|
|
|
2026-01-20 13:33:31 +00:00
|
|
|
|
## Switching channels
|
|
|
|
|
|
|
|
|
|
|
|
Git checkout:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-01-30 03:15:10 +01:00
|
|
|
|
openclaw update --channel stable
|
|
|
|
|
|
openclaw update --channel beta
|
|
|
|
|
|
openclaw update --channel dev
|
2026-01-20 13:33:31 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-01-24 20:59:35 +00:00
|
|
|
|
- `stable`/`beta` check out the latest matching tag (often the same tag).
|
2026-01-20 13:33:31 +00:00
|
|
|
|
- `dev` switches to `main` and rebases on the upstream.
|
|
|
|
|
|
|
|
|
|
|
|
npm/pnpm global install:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-01-30 03:15:10 +01:00
|
|
|
|
openclaw update --channel stable
|
|
|
|
|
|
openclaw update --channel beta
|
|
|
|
|
|
openclaw update --channel dev
|
2026-01-20 13:33:31 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
This updates via the corresponding npm dist-tag (`latest`, `beta`, `dev`).
|
|
|
|
|
|
|
2026-01-30 03:15:10 +01:00
|
|
|
|
When you **explicitly** switch channels with `--channel`, OpenClaw also aligns
|
2026-01-21 06:00:50 +00:00
|
|
|
|
the install method:
|
|
|
|
|
|
|
2026-01-30 03:15:10 +01:00
|
|
|
|
- `dev` ensures a git checkout (default `~/openclaw`, override with `OPENCLAW_GIT_DIR`),
|
2026-01-21 06:00:50 +00:00
|
|
|
|
updates it, and installs the global CLI from that checkout.
|
|
|
|
|
|
- `stable`/`beta` installs from npm using the matching dist-tag.
|
|
|
|
|
|
|
2026-01-20 13:33:31 +00:00
|
|
|
|
Tip: if you want stable + dev in parallel, keep two clones and point your gateway at the stable one.
|
|
|
|
|
|
|
2026-01-20 15:56:48 +00:00
|
|
|
|
## Plugins and channels
|
|
|
|
|
|
|
2026-01-30 03:15:10 +01:00
|
|
|
|
When you switch channels with `openclaw update`, OpenClaw also syncs plugin sources:
|
2026-01-20 15:56:48 +00:00
|
|
|
|
|
|
|
|
|
|
- `dev` prefers bundled plugins from the git checkout.
|
|
|
|
|
|
- `stable` and `beta` restore npm-installed plugin packages.
|
|
|
|
|
|
|
2026-01-20 13:33:31 +00:00
|
|
|
|
## Tagging best practices
|
|
|
|
|
|
|
2026-02-24 02:05:29 +00:00
|
|
|
|
- Tag releases you want git checkouts to land on (`vYYYY.M.D` for stable, `vYYYY.M.D-beta.N` for beta).
|
|
|
|
|
|
- `vYYYY.M.D.beta.N` is also recognized for compatibility, but prefer `-beta.N`.
|
|
|
|
|
|
- Legacy `vYYYY.M.D-<patch>` tags are still recognized as stable (non-beta).
|
2026-01-20 13:33:31 +00:00
|
|
|
|
- Keep tags immutable: never move or reuse a tag.
|
2026-01-24 20:59:35 +00:00
|
|
|
|
- npm dist-tags remain the source of truth for npm installs:
|
2026-01-20 13:33:31 +00:00
|
|
|
|
- `latest` → stable
|
2026-01-24 20:59:35 +00:00
|
|
|
|
- `beta` → candidate build
|
2026-01-20 13:33:31 +00:00
|
|
|
|
- `dev` → main snapshot (optional)
|
|
|
|
|
|
|
|
|
|
|
|
## macOS app availability
|
|
|
|
|
|
|
|
|
|
|
|
Beta and dev builds may **not** include a macOS app release. That’s 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.
|