NEXO Brain ships through three channels: npm (for Claude Code and MCP clients), OpenClaw (as a memory system plugin), and ClawHub (as a one-click skill). Until now, keeping all three in sync was a manual process. Version numbers drifted. Server paths pointed to the wrong location. Package metadata lagged behind the actual release. It worked, but it was fragile.
v2.6.9 fixes this permanently. Every distribution channel is now automatically synchronized, verified, and published through a single CI/CD pipeline. Here is what changed and why it matters.
The Problem: Version Drift Across Channels
When NEXO Brain publishes a release, five artifacts need to agree on the version number: the main package.json, the Claude Code plugin.json, the OpenClaw package.json, the ClawHub SKILL.md, and the MCP bridge configuration. Previously, each was updated by hand. Miss one, and users installing from different channels would get inconsistent metadata — or worse, a package that referenced a server path that did not exist in the installed location.
The OpenClaw plugin had a specific problem: it pointed to src/server.py as the entry point, but after installation NEXO Brain lives at ~/.nexo/server.py. The ClawHub skill had the same issue in reverse. These were not bugs in the traditional sense — the code worked during development — but they broke in production for anyone installing through those channels.
Integration Artifact Sync
The first piece of the solution is a new synchronization script that runs before every publish. It reads the canonical version from the main package.json and propagates it to every artifact file:
- plugin.json — Claude Code plugin manifest
- OpenClaw package.json — npm package for the OpenClaw registry
- SKILL.md — ClawHub skill metadata
- MCP bridge config — server path and version for runtime resolution
The sync is idempotent. Run it twice, nothing changes. Run it after bumping the version, and every artifact updates in lockstep. There is no way to publish with a version mismatch because the CI pipeline runs the sync as its first step and fails if any file is out of date.
CI/CD Pipeline
The second piece is a full GitHub Actions workflow that orchestrates the entire publish sequence. The pipeline runs six stages in order:
- Sync artifacts — run the synchronization script, fail if anything changed (meaning the developer forgot to sync locally)
- Verify Claude Code packaging — check that
plugin.json,.mcp.json, hooks directory, andserver.pyare all present in the npm tarball - Verify ClawHub — validate SKILL.md metadata, confirm server path is correct
- Build and test OpenClaw — run contract tests that verify the plugin loads, registers tools, and responds to health checks
- Publish — push to npm, publish OpenClaw package, submit ClawHub skill update
- Post-publish verification — install from each channel and verify the installed version matches the release
If any stage fails, the pipeline stops. No partial publishes. No channel gets an update while another is stuck on the old version.
OpenClaw Plugin: Hardened
The OpenClaw plugin (@wazionapps/openclaw-memory-nexo-brain) received the most structural changes. The server path now correctly resolves to ~/.nexo/server.py, matching where NEXO Brain actually lives after installation. The package.json explicitly declares exports, files, and prepack scripts so npm only includes what belongs in the package.
New contract tests verify that the plugin:
- Loads without errors in a clean environment
- Registers the expected MCP tool set
- Reports the correct version when queried
- Points to the correct server binary path
These tests run on every commit, not just at publish time. If someone changes a path or removes a file, the tests catch it immediately.
ClawHub Skill: Hardened
The ClawHub skill metadata is now version-synchronized with the main release. The server path matches the runtime installation location. After every publish, a smoke test installs the skill from ClawHub and verifies that the resolved version matches what was just published.
This closes a subtle failure mode where ClawHub could cache an old version while the rest of the ecosystem had moved forward. The post-publish check ensures that what ClawHub serves is what was intended.
Claude Code Plugin: Marketplace-Ready
The Claude Code plugin packaging is now fully validated in CI. Every npm tarball is unpacked and inspected to confirm it contains plugin.json, .mcp.json, the hooks directory, and server.py. This validation runs automatically — no manual inspection needed before publish.
The plugin is packaged and verified. When Anthropic opens their plugin marketplace for submissions, NEXO Brain is ready to ship on day one.
What This Means for Users
If you install NEXO Brain from npm, OpenClaw, or ClawHub, you now get the exact same version with the exact same capabilities. Server paths resolve correctly. Version numbers match. No channel is ever behind.
For contributors, the CI pipeline catches packaging issues before they reach production. The feedback loop is immediate: push a commit, see the pipeline results, fix any issues before merging.
Install or Update
New install:
npx nexo-brain
Existing installation:
nexo update
Full changelog available on GitHub Releases.