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>
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.