MCP server for safe OpenClaw upgrades — version-aware regression catalog, pre-upgrade snapshot, post-upgrade verification, rollback guide. Read-only advisor: never executes the upgrade itself.
Project description
openclaw-upgrade-orchestrator-mcp
Safe-upgrade advisor for OpenClaw. Detects current version, checks the deployment against a hand-curated catalog of version-specific known regressions, captures pre-upgrade snapshots, diffs them against post-upgrade state, and emits step-by-step upgrade + rollback guides. Read-only — never executes the upgrade itself. Companion to silentwatch-mcp, openclaw-health-mcp, openclaw-cost-tracker-mcp, and openclaw-skill-vetter-mcp.
What it does
Production OpenClaw upgrades carry recurring regressions. 2026.4.8 brought a CPU-spike bug. 2026.4.23-26 broke Discord on_message. 2026.4.30+ surfaced an OOM under sustained 200k-token contexts. The pattern: an operator upgrades on Friday, hits a new failure mode on Tuesday, and spends Wednesday-Thursday excavating field reports. This MCP server moves that excavation upfront — before the upgrade, not after.
> claude: should I upgrade my 2026.4.23 deployment?
[MCP tools: current_version + available_upgrades]
Current: 2026.4.23
Recommended target: 2026.5.2 (no CRITICAL regressions in path)
Available upgrades:
2026.4.24-.26 HIGH R-73421 Discord-receive breakage
2026.4.27 — clean
2026.4.30 HIGH R-OOM-DURING-LARGE-CONTEXT (unfixed)
2026.5.1-.2 HIGH R-OOM + R-LOG-ROTATION-DROP (unfixed)
> claude: walk me through upgrading to 2026.4.27.
[MCP tool: upgrade_guide]
2026.4.23 → 2026.4.27 — proceed with mitigations applied.
Applicable known regressions:
R-41372 (HIGH) — Cron --session web-search silent fail.
Mitigation: silentwatch-mcp covers detection until upgrade.
R-73421 (HIGH) — Discord-receive callbacks not firing.
Mitigation: `openclaw skill reload discord` after upgrade.
Pre-upgrade steps:
1. Capture pre-upgrade snapshot (call pre_upgrade_snapshot)
2. Verify backups: cp -r ~/.openclaw ~/.openclaw.backup-$(date +%Y%m%d)
Upgrade steps:
1. openclaw gateway stop
2. openclaw upgrade --to 2026.4.27
3. openclaw gateway start
Post-upgrade steps:
1. Run post_upgrade_verify(snapshot_id=<your-pre-upgrade-id>)
2. openclaw skill reload discord (R-73421 mitigation)
Rollback steps: stop → openclaw upgrade --to 2026.4.23 → restore backup → start.
Confidence: Path includes 2 HIGH regressions but no CRITICAL.
> claude: I just upgraded. Verify it.
[MCP tool: post_upgrade_verify(pre_snapshot_id="snap-...")]
Upgrade 2026.4.23 → 2026.4.27: SUCCESS.
0 new failures, 1 recovered (skills.discord_receive_registered),
0 unchanged failures.
Why openclaw-upgrade-orchestrator-mcp
Three things existing tools (vendor changelogs, internal runbooks, generic CI/CD orchestrators) don't do:
-
Catalog-grounded regression awareness. A generic upgrade tool tells you the version exists. This server tells you which versions have known issues, which fix versions remediate them, and which mitigations apply if you have to use the affected version.
-
Pre/post snapshot diffing tied to the catalog. The same checks run before + after the upgrade. The diff highlights
new_failures(caused by the upgrade) separately fromunchanged_failures(pre-existing) andrecovered(fixed by the upgrade). No more "did this break in 2026.4.27 or was it already broken?" -
Read-only by design. Never runs
openclaw upgrade --to ...for you. Never modifies state. Operators retain full agency over the actual upgrade — this server gives them the information to make the decision, then verifies it after they execute.
Built for the production-AI operator who owns OpenClaw deployments and has been through enough upgrade-day fire drills.
Tool surface
| Tool | What it returns |
|---|---|
current_version |
Currently-installed version + detection method |
available_upgrades |
Newer versions with regression-count flags + recommended target |
pre_upgrade_snapshot |
Captures every check's pass/fail state, persists with snapshot_id |
upgrade_guide |
Step-by-step plan: pre / upgrade / post / rollback steps + applicable regressions + confidence note |
post_upgrade_verify |
Diff post-upgrade against a stored pre-upgrade snapshot — new_failures / recovered / unchanged |
rollback_guide |
Recovery plan for a given snapshot — downgrade command + state-restore steps + risk note |
regression_catalog |
Full known-regression catalog, optionally filtered to one version |
list_snapshots |
All stored snapshots (id + version + summary) |
Resources:
upgrade://current— current version infoupgrade://snapshots— every stored snapshotupgrade://catalog— full regression catalog
Prompts:
plan-upgrade(target_version)— walks through the upgrade decisionverify-upgrade(pre_snapshot_id)— walks through post-upgrade verification
Quickstart
Install
pip install openclaw-upgrade-orchestrator-mcp
Configure for Claude Desktop
{
"mcpServers": {
"openclaw-upgrade": {
"command": "python",
"args": ["-m", "openclaw_upgrade_orchestrator_mcp"],
"env": {
"OPENCLAW_UPGRADE_BACKEND": "mock"
}
}
}
}
Backends
| Backend | Status | Description |
|---|---|---|
mock |
✅ v1.0 | 2026.4.23 deployment with active R-73421 Discord-receive breakage; in-memory snapshots; suitable for protocol verification + bundle demos |
openclaw-system |
✅ v1.0 | Reads ~/.openclaw/version + ~/.openclaw/gateway.yaml; persists snapshots as JSON in ~/.openclaw/upgrades/snapshots/. Override via OPENCLAW_VERSION_FILE, OPENCLAW_GATEWAY_CONFIG, OPENCLAW_UPGRADE_SNAPSHOT_DIR |
Regression catalog (v1.0)
8 hand-curated entries covering documented OpenClaw regressions:
R-41372-CRON-WEB-SEARCH-SILENT-FAIL(HIGH, 2026.4.20–2026.5.1)R-63002-POST-UPGRADE-CPU-SPIKE(CRITICAL, 2026.4.8–2026.4.10)R-73421-DISCORD-RECEIVE-BREAKAGE(HIGH, 2026.4.23–2026.4.27)R-GATEWAY-PORT-CONFLICT-2026.4.15(MEDIUM, 2026.4.15–2026.4.18)R-OOM-DURING-LARGE-CONTEXT-2026.4.30(HIGH, 2026.4.30–unfixed)R-STATUS-RECONCILIATION-DRIFT-2026.4.5(LOW, 2026.4.5–2026.4.10)R-CLAWHUB-CACHE-POISONING-2026.3.28(HIGH, 2026.3.28–2026.4.2)R-LOG-ROTATION-DROP-2026.5.1(MEDIUM, 2026.5.1–unfixed)
Use regression_catalog for the full, queryable list.
Risk-aware recommendation logic
available_upgrades flags every version reachable from current and computes a recommended_target:
For each available version V > current:
applicable_regressions = regressions_in_path(current, V)
has_known_critical = any(r.severity == CRITICAL for r in applicable_regressions)
recommended_target = highest V with has_known_critical == False
regressions_in_path(current, target) includes a regression if:
- The target version is in the regression's range (post-upgrade deployment will be affected), OR
- The current version is in the regression's range (current deployment is already affected — the operator should know whether the upgrade fixes it)
OpenClaw upgrades atomically (no execution on intermediate versions), so a regression strictly between current and target without affecting either endpoint is NOT included. This avoids over-conservative recommendations.
Roadmap
| Version | Scope | Status |
|---|---|---|
| v1.0 | mock + openclaw-system backends, 8 tools / 3 resources / 2 prompts, 8-entry regression catalog, 6 detection checks, GitHub Actions CI matrix, PyPI Trusted Publishing | ✅ |
| v1.1 | Catalog auto-fetch from upstream changelog feed; richer detection checks tied to OpenClaw's /healthz endpoint; multi-step upgrade pathing |
⏳ |
| v1.2 | Custom catalog packs (operator can ship internal-only regression entries alongside the canonical catalog); rule-overrides | ⏳ |
| v1.x | Webhook emit on detected regression; integration with CI to gate merges of OpenClaw-version bumps | ⏳ |
Need this adapted to your stack?
If your AI deployment uses a different runtime (custom agent harness, internal fork of OpenClaw, vendor-locked deployment) and you want the same regression-aware upgrade discipline, that's a Custom MCP Build engagement.
| Tier | Scope | Investment | Timeline |
|---|---|---|---|
| Simple | Single backend adapter for your existing version-source | $8,000–$12,000 | 1–2 weeks |
| Standard | Custom backend + custom regression catalog (initial 10-15 entries from your incident history) + integration with your alerting | $15,000–$25,000 | 2–4 weeks |
| Complex | Multi-deployment fleet view + auto-catalog ingestion from internal changelog + per-environment recommendation tuning | $30,000–$45,000 | 4–8 weeks |
To engage:
- Email temur@pixelette.tech with subject
Custom MCP Build inquiry — upgrade orchestration - Include: 1-paragraph description of your runtime + which tier
- Reply within 2 business days with a 30-min discovery call slot
This server is part of a production-AI infrastructure MCP suite — companion to silentwatch-mcp, openclaw-health-mcp, openclaw-cost-tracker-mcp, and openclaw-skill-vetter-mcp. Install all five for full operational visibility.
Production AI audits
If you're running production AI and want an outside practitioner to score readiness, find the failure patterns already present (upgrade regression cycles being one of the most damaging), and write the corrective-action plan:
| Tier | Scope | Investment | Timeline |
|---|---|---|---|
| Audit Lite | One system, top-5 findings, written report | $1,500 | 1 week |
| Audit Standard | Full audit, all 14 patterns, 5 Cs findings, 90-day follow-up | $3,000 | 2–3 weeks |
| Audit + Workshop | Standard audit + 2-day team workshop + first monthly audit included | $7,500 | 3–4 weeks |
Same email channel: temur@pixelette.tech with subject AI audit inquiry.
Contributing
PRs welcome. Detection checks are pluggable — see src/openclaw_upgrade_orchestrator_mcp/checks/__init__.py for the contract.
To add a check:
- Define
def run(state: DeploymentState) -> CheckResultin the checks module - Register it in
CHECKS: dict[str, callable] - Reference its
check_idfrom a regression'sdetection_check_idincatalog.py - Add tests in
tests/test_checks.py
To add a backend:
- Subclass
UpgradeBackendinbackends/<your_backend>.py - Implement
collect_state,save_snapshot,load_snapshot,list_snapshots - Register in
backends/__init__.py - Add tests in
tests/test_backends.py
To add a regression entry:
- Append to
CATALOGincatalog.pywith stableregression_id - Reference an existing or new
detection_check_id(or set to None for advisory-only) - Add a test confirming version-range membership in
tests/test_catalog.py
Bug reports + feature requests: open a GitHub issue.
License
MIT — see LICENSE.
Related
- silentwatch-mcp — cron silent-failure detection
- openclaw-health-mcp — deployment health
- openclaw-cost-tracker-mcp — token-cost telemetry
- openclaw-skill-vetter-mcp — skill security vetting
- AI Production Discipline Framework — Notion template, $29 — methodology these MCPs implement
- SPEC.md — full server design
Built by Temur Khan — independent practitioner on production AI systems. Contact: temur@pixelette.tech
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openclaw_upgrade_orchestrator_mcp-1.0.0.tar.gz.
File metadata
- Download URL: openclaw_upgrade_orchestrator_mcp-1.0.0.tar.gz
- Upload date:
- Size: 37.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22a9bba3ac62f949d5bb27ab867c38af1696b97763b8e0bdb1e744ffca8cefc1
|
|
| MD5 |
61a7782f1a7f30a1c91b6b35fc85ce31
|
|
| BLAKE2b-256 |
a1fdefebc10f2bce6b85fb50cf5546a7b27ad8ba9fcbbb774253dea86f3dda03
|
Provenance
The following attestation bundles were made for openclaw_upgrade_orchestrator_mcp-1.0.0.tar.gz:
Publisher:
release.yml on temurkhan13/openclaw-upgrade-orchestrator-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openclaw_upgrade_orchestrator_mcp-1.0.0.tar.gz -
Subject digest:
22a9bba3ac62f949d5bb27ab867c38af1696b97763b8e0bdb1e744ffca8cefc1 - Sigstore transparency entry: 1436469532
- Sigstore integration time:
-
Permalink:
temurkhan13/openclaw-upgrade-orchestrator-mcp@92d83ecf0b565fa95a70c45f85a039d920532586 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/temurkhan13
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@92d83ecf0b565fa95a70c45f85a039d920532586 -
Trigger Event:
push
-
Statement type:
File details
Details for the file openclaw_upgrade_orchestrator_mcp-1.0.0-py3-none-any.whl.
File metadata
- Download URL: openclaw_upgrade_orchestrator_mcp-1.0.0-py3-none-any.whl
- Upload date:
- Size: 31.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17c2864bbbfe783364c197f8e44a0e18af1e73b870ee45aa28652804a7465d24
|
|
| MD5 |
8ebe2bcfa66d148bd0c140ad1fbcd6be
|
|
| BLAKE2b-256 |
7bd6e7a34b91038bdc38f14e4bbd6603ccfd5542b242fe0220e669e8c21a27d2
|
Provenance
The following attestation bundles were made for openclaw_upgrade_orchestrator_mcp-1.0.0-py3-none-any.whl:
Publisher:
release.yml on temurkhan13/openclaw-upgrade-orchestrator-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openclaw_upgrade_orchestrator_mcp-1.0.0-py3-none-any.whl -
Subject digest:
17c2864bbbfe783364c197f8e44a0e18af1e73b870ee45aa28652804a7465d24 - Sigstore transparency entry: 1436469570
- Sigstore integration time:
-
Permalink:
temurkhan13/openclaw-upgrade-orchestrator-mcp@92d83ecf0b565fa95a70c45f85a039d920532586 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/temurkhan13
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@92d83ecf0b565fa95a70c45f85a039d920532586 -
Trigger Event:
push
-
Statement type: