If you already run OpenClaw Gateway via global npm or Docker / GHCR but keep debating whether to chase latest, whether flipping stable / beta / dev will break pairing, or whether the CLI or the image tag is the real source of truth, this article gives you a change-ticket-ready versioning policy: freeze a single rail (npm or compose), then use pinned tags/digests plus a six-step rollback matrix so upgrades are operations, not roulette. It complements our cross-platform install guide, GHCR bootstrap & Control UI, and upgrade & .openclaw migration checklist; for always-on topologies pair with SSH local forward to a dedicated remote Mac Gateway.
latest as always safe: floating registry tags move with upstream releases; two hosts can both be "latest" yet point to different digests, producing phantom drift during incidents.openclaw --version ahead while the container binary lags (or vice versa), often surfacing as missing subcommands or unknown flags that people misread as WebSocket 1006.docker pull: you change OPENCLAW_IMAGE while cached layers linger, so operators swear they updated the env yet still run an old digest.Channel and pinning policy are really about freezing an observable version triple—CLI version, Gateway image digest, checksum of the config tree—so failed upgrades land in one rollback matrix instead of oral folklore. Unlike generic hype posts, this piece is deliberately mutually exclusive with our install/bootstrap/migration articles: it assumes you already booted successfully and focuses on managing the change surface.
When you chase fresh builds on tiny VPS plans or on a laptop tied to desktop sleep, you also stack cgroup limits, lid-close suspend, and disk pressure noise that masquerades as "channel bugs". That is why the ladder below mandates openclaw doctor plus resource gates, aligned with field names in post-install doctor triage, without duplicating its entire symptom encyclopedia.
| Dimension | Global npm (host CLI) | Docker / GHCR (Gateway container) |
|---|---|---|
| Source of truth | npm dist-tags (stable/beta/dev semantics defined upstream) plus lockfile/CI cache policy | OPENCLAW_IMAGE reference; pin :tag or @sha256: digest |
| Cost of chasing head | Low friction but sensitive to global Node, proxies, certs, PATH | Reproducible layers; price is thoughtful compose + volume permissions |
| Rollback handles | Previous npm version + backed-up .openclaw; reinstall if needed |
Change image ref + compose up -d; pairing may survive if volumes stay (per release notes) |
| Common mis-use | Production npm i -g with no ticket and no backup |
Multiple compose forks sharing one named volume so rolling back env A stomps env B |
| With dedicated remote Mac | Fine on dev laptops; production should still pin | Ideal for 7×24 on dedicated hardware; pair with SSH forward or tailnet and pin digest harder |
The cross-platform install guide answers "from zero to running"; docker-setup + GHCR + Control UI answers "first boot on the official container path"; upgrade & migration checklist answers ".openclaw backups, Gateway cutovers, dual-path rollback order". This article only adds channel semantics + pinning strategy + npm/image matrix so you can author a ticket that moves from stable triple → candidate triple → revert, without rereading wizard screenshots.
If your pain is 1006/1008, dual TOKEN sources, or sub-agent pairing, jump first to pairing & token conflict runbook; here we only give decision thresholds for "do I need to redo pairing after an upgrade" to avoid duplicating the dedicated symptom tables.
Heads-up: the exact semantics of stable / beta / dev, dist-tag names, and image tag lines evolve with upstream releases. Placeholders such as openclaw update or OPENCLAW_IMAGE denote capability classes; substitute the precise subcommands and fields from the official docs for the build you pin.
openclaw --version (or equivalent), docker image inspect digest, compose file git SHA, and a checksum of the .openclaw tree; do not touch production windows if any item is missing.openclaw update (or equivalent) with logs shipped to CI; Docker path runs docker compose pull then up -d—never pull without recreate (half-upgrade).openclaw gateway status → optional probe → minimal non-destructive chat or health check → openclaw doctor; any failure goes to rollback, not "try again harder".OPENCLAW_IMAGE back to the last-known-good digest, compose up -d with recreate, confirm volumes still mount on the same logical paths, rerun the ladder, log the new digest.# Pre-change triple registration (rename fields to your ticket template)
openclaw --version 2>/dev/null || true
docker compose config | sed -n '1,120p'
docker inspect "$(docker compose images -q openclaw-gateway 2>/dev/null | head -n1)" --format '{{.RepoDigests}}' 2>/dev/null || true
# Example: move OPENCLAW_IMAGE from a floating tag to digest pinning
# export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw@sha256:<known-good digest>"
# docker compose pull && docker compose up -d
latest changes digest in production pools; more than once should trigger digest or semver pinning plus a release note entry.Personal laptops stack sleep/wake, VPN flaps, fragmentation, and keychain context on top of Gateway work, so incidents look like channel bugs. Floating latest in production hides un-auditable digest drift and fleet skew, eventually masquerading version issues as model or network faults. When you need 7×24, auditable change cadence and treat the laptop as a thin client, placing the authoritative Gateway on a dedicated Apple Silicon remote Mac with documented SSH forwarding or tailnet ingress usually beats wrestling laptop power policies—MACCOME offers Mac mini (M4 / M4 Pro) across six regions with flexible leases and pairs naturally with the rest of our OpenClaw runbooks; size the fleet using the public multi-region rental guide before you freeze topology.
Teams that insist on running production Gateway on consumer laptops often underestimate patch cadence, thermal throttling during long model calls, and the inability to attach deterministic disk budgets. Dedicated remote Macs give you a stable process space, predictable SSD sizing, and an operations story that finance can audit—especially when digest-pinned containers and lease windows are documented together.
Deliverables should list default channel, allowed temporary channel windows, forbidden patterns (e.g., prod must not run digest-less latest), sample ladder outputs, rollback branch owners/timeouts. Any upgrade step that fails on a second clean machine is unfinished documentation. When you read this next to Docker production runbook, keep image policy and log retention policies in the same directory so nobody asks "which layer did we actually pull that night?"
FAQ
After temporarily moving from stable to beta/dev, must I reset the Gateway token?
Not necessarily: run the ladder and a minimal probe first; if handshakes or dual-token alarms appear, follow the pairing article. Planning a production-dedicated host? Review rental rates and support & help for MACCOME nodes.
When should Docker images use latest vs a pinned digest?
Solo sandboxes may use latest for speed; multi-host production and compliance reviews should pin digest or semver and store compose SHA + digest in one ticket. Installation boundaries stay in the GHCR bootstrap article linked above.