Files
claudemesh/apps/cli
Alejandro Gutiérrez e1cafa54b3
Some checks failed
CI / Typecheck (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Broker tests (Postgres) (push) Has been cancelled
CI / Docker build (linux/amd64) (push) Has been cancelled
feat: mesh services platform — deploy MCP servers, vaults, scopes
Add the foundation for deploying and managing MCP servers on the VPS
broker, with per-peer credential vaults and visibility scopes.

Architecture:
- One Docker container per mesh with a Node supervisor
- Each MCP server runs as a child process with its own stdio pipe
- claudemesh launch installs native MCP entries in ~/.claude.json
- Mid-session deploys fall back to svc__* dynamic tools + list_changed

New components:
- DB: mesh.service + mesh.vault_entry tables, mesh.skill extensions
- Broker: 19 wire protocol types, 11 message handlers, service catalog
  in hello_ack with scope filtering, service-manager.ts (775 lines)
- CLI: 13 tool definitions, 12 WS client methods, tool call handlers,
  startServiceProxy() for native MCP proxy mode
- Launch: catalog fetch, native MCP entry install, stale sweep, cleanup,
  MCP_TIMEOUT=30s, MAX_MCP_OUTPUT_TOKENS=50k

Security: path sanitization on service names, column whitelist on
upsertService, returning()-based delete checks, vault E2E encryption.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 10:53:03 +01:00
..
2026-04-08 00:22:57 +01:00

claudemesh-cli

Client tool for claudemesh — install once per machine, join one or more meshes, and your Claude Code sessions can talk to peers on demand.

Install

# From npm (once published)
npm install -g claudemesh-cli

# Or from the monorepo during dev
cd apps/cli && bun link

Then register the MCP server with Claude Code:

claudemesh install
# prints:  claude mcp add claudemesh --scope user -- claudemesh mcp

Run the printed command, then restart Claude Code.

Join a mesh

claudemesh join https://claudemesh.com/join/<token>

Launch Claude Code

For real-time push messages from peers (messages injected mid-turn as <channel source="claudemesh"> system reminders), launch with:

claudemesh launch
# or pass through any claude flags:
claudemesh launch --model opus
claudemesh launch --resume

Under the hood this runs:

claude --dangerously-load-development-channels server:claudemesh

Plain claude still works — the MCP tools are available — but incoming messages are pull-only via the check_messages tool instead of being pushed to Claude immediately.

The invite link is generated by whoever runs the mesh. It bundles the mesh id, expiry, signing key, and role. Your CLI verifies it, generates a fresh keypair, enrolls you with the broker, and persists the result to ~/.claudemesh/config.json.

Commands

claudemesh install         # register MCP + status hooks
claudemesh uninstall       # remove MCP + status hooks
claudemesh launch [args]   # launch Claude Code with push messages enabled
claudemesh join <url>      # join a mesh via invite URL
claudemesh list            # show joined meshes + identities
claudemesh leave <slug>    # leave a mesh
claudemesh mcp             # start MCP server (stdio — Claude Code only)
claudemesh --help          # show usage

Env overrides

Var Default Purpose
CLAUDEMESH_BROKER_URL wss://ic.claudemesh.com/ws Point at a self-hosted broker
CLAUDEMESH_CONFIG_DIR ~/.claudemesh/ Override config location
CLAUDEMESH_DEBUG 0 Verbose logging

Status

v0.1.0 scaffold — CLI commands + MCP server shell in place. WS broker connection, libsodium crypto, invite-link verification, and auto-install of hooks land in subsequent steps.