# Development Channels Documentation

## Overview
OpenClaw maintains three update channels for releases:

- **Stable** (npm `latest` dist-tag): Production-ready builds
- **Beta** (npm `beta` dist-tag): Builds undergoing testing
- **Dev** (npm `dev` dist-tag): Current main branch snapshots

The system uses dist-tags as the source of truth for npm installs, meaning vetted builds are promoted without version changes.

## Channel Switching

Users can switch channels via:

```bash
openclaw update --channel [stable|beta|dev]
```

When explicitly switching, the installation method aligns automatically:
- Dev mode checks out the git repository (defaults to `~/openclaw`)
- Stable/beta pull from npm using appropriate dist-tags

## Plugin Synchronization

Switching channels triggers plugin source updates—dev prefers bundled plugins from the git checkout, while stable and beta restore npm-installed packages.

## Release Guidelines

- Tag releases for git checkouts using format `vYYYY.M.D` or `vYYYY.M.D-<patch>`
- Maintain immutable tags (never move or reuse)
- Preserve npm dist-tags as the authoritative source for version mapping

## Platform Considerations

Beta and dev releases may lack macOS app builds, which is acceptable provided the git tag and npm dist-tag are published and documented in release notes.
