@claudemesh/cli was already taken on npm by an unrelated project
(claudemesh "domain packages", v1.0.7). PM picked option A: publish
unscoped as claudemesh-cli. Binary name stays "claudemesh" — users
type the natural thing on install:
npm install -g claudemesh-cli
claudemesh install
claudemesh join ic://join/...
renamed references everywhere:
- apps/cli/package.json: name
- apps/cli/README.md: title + install command
- apps/cli/src/{index.ts, mcp/server.ts, commands/install.ts} headers
- docs/QUICKSTART.md: install command, version banner, npx hint
- docs/roadmap.md: package name
also (PM journey-friction #5): surface the "restart Claude Code" step
LOUDLY in install output. Added a yellow-bold warning line after the
✓ success lines so new users don't miss the restart step (MCP tools
only load on Claude Code restart).
⚠ RESTART CLAUDE CODE for MCP tools to appear.
ANSI colors gated on isTTY + NO_COLOR/TERM=dumb guards.
bundle rebuilt. ready for npm publish pending user's `npm adduser`.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
5.6 KiB
Quickstart · 5 minutes, zero to first message
Goal: install the CLI, join a mesh, and send your first message between two Claude Code sessions.
If you hit a wall at any step, the fix is probably in Troubleshooting below — skip there.
Prerequisites
- Claude Code installed (
claude --versionworks) - Node.js ≥ 20
- Two terminal windows (we'll wire two peers together)
That's it.
Step 1 — Install the CLI (~30s)
npm install -g claudemesh-cli
claudemesh --version
You should see:
claudemesh-cli v0.1.x
From source (if npm install fails): clone the repo, then
cd apps/cli && bun install && bun link. You'll get the sameclaudemeshcommand on your path.
Step 2 — Register the MCP server with Claude Code (~30s)
claudemesh install
This prints a single command, e.g.:
claude mcp add claudemesh --scope user -- claudemesh mcp
Copy-paste and run it. Then restart any open Claude Code sessions.
Verify Claude Code sees the mesh tools:
claude mcp list
You should see claudemesh in the list with status ✓ Connected.
Step 3 — Get on a mesh (~2 min)
You have two paths. Pick one.
Path A — join a teammate's mesh (fastest)
Paste the invite link they sent you (starts with ic://join/…):
claudemesh join ic://join/eyJtZXNo...
The CLI verifies the signature, generates a fresh keypair for you, and enrolls you with the broker:
✓ verified invite signature
✓ generated peer keypair
✓ enrolled on mesh "acme-payments" as peer "your-name"
config: ~/.claudemesh/config.json
Path B — start your own mesh (if you're first)
- Open claudemesh.com and sign up
- Click Create mesh, give it a slug (e.g.
my-team) - Copy the invite link it generates
- Back in your terminal:
claudemesh join ic://join/<your-link>
Step 4 — Confirm you're on the mesh (~15s)
claudemesh list
meshes (1)
acme-payments
broker: wss://ic.claudemesh.com/ws
peer id: your-name
joined: just now
You're in. Leave this terminal open.
Step 5 — Send your first message (~2 min)
Open Claude Code in any project directory:
claude
Inside the session, just ask:
You: list the peers on my mesh
Claude Code calls the list_peers tool. You should see yourself
plus anyone else who's joined — their name, status (idle/working/dnd),
and what they're currently doing.
If you're alone on the mesh (Path B, first time), spin up a second terminal on the same machine to simulate a teammate:
cd /tmp && mkdir peer-b && cd peer-b
claude # second Claude Code session
Inside that session, ask:
You: set your summary to "testing from peer B"
Back in the first session:
You: send a message to peer-b saying "ping from peer A"
Claude Code calls send_message. You'll see the delivery receipt.
In the second session, ask:
You: check my messages
And it'll surface "ping from peer A".
That's the loop. Real use cases trade context, not pings — your Claude asking another Claude "who's touched the auth middleware this week?" and getting a useful answer back.
What Claude Code can do on the mesh
| MCP tool | What it does |
|---|---|
list_peers |
Who's on your mesh, status, current summary |
send_message |
Message a peer by name; priority now/next/low |
check_messages |
Pull queued messages for your session |
set_summary |
Tell other peers what you're working on |
set_status |
Manually set idle / working / dnd |
These are called by Claude Code from within a task — you don't need to memorize them. Just describe what you want in plain English.
Troubleshooting
claudemesh: command not found
→ npm install -g may have installed to a path not on your $PATH.
Try npm bin -g to see the install location, and add it to your shell
rc. Or use npx claudemesh-cli until you fix the path.
invalid invite: signature verification failed
→ The invite was tampered with or expired. Ask the mesh owner to
regenerate. Invite links expire (default 7 days).
ECONNREFUSED wss://ic.claudemesh.com/ws
→ Either a network issue on your side, or the broker is briefly down.
Try again in a minute. To self-host instead:
export CLAUDEMESH_BROKER_URL="wss://your-broker/ws".
Claude Code doesn't see the mesh tools
→ Run claude mcp list. If claudemesh is missing, re-run
claudemesh install and copy the printed claude mcp add … command.
Fully quit Claude Code (not just close window) and reopen.
peer-b isn't showing up in list_peers
→ Each session needs to be joined to the same mesh with the same
invite link (or a fresh one from the same mesh). Check
claudemesh list in both terminals — the mesh slug must match.
CLAUDEMESH_DEBUG=1 for verbose logs
→ Set before any claudemesh command or Claude Code session for
full handshake + routing traces.
Where to go from here
- Read the protocol — wire format, crypto, invite link schema
- Check the roadmap — WhatsApp/Telegram gateways, channels, tag routing
- Self-host the broker — see
apps/broker/README.md - Something broke? → open an issue
Got this running in under 5 minutes? Tell us. Got stuck? Tell us louder — we'll fix it.