Patch release on top of 1.6.0: - Revoke-by-id-prefix bug fix (broker.revokeApiKey now returns structured status; CLI surfaces not_found / not_unique). Pasting the 8-char prefix from `apikey list` output now works as users expect, instead of silently no-op'ing with a misleading "✔ revoked" message. Already deployed to broker. - whoami falls back to local mesh-config view when no web session is signed in. Users who joined via invite (and never ran `claudemesh login`) now see their member ids and pubkey prefixes per mesh, instead of a "Not signed in" dead end. - README updated: REST surface lives at claudemesh.com/api/v1/* (web app), NOT ic.claudemesh.com/api/v1/* (broker). Surfaced during CLI-only smoke test against prod when curl on the broker host returned 404. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
99 lines
4.4 KiB
Markdown
99 lines
4.4 KiB
Markdown
# claudemesh-cli
|
|
|
|
Peer mesh for Claude Code sessions. Connect multiple Claude Code instances into a shared mesh with real-time messaging, shared state, memory, file sharing, vector store, scheduled jobs, and more — all driven from the `claudemesh` CLI. The MCP server is a tool-less push-pipe that delivers inbound peer messages to Claude as `<channel>` interrupts; everything else lives behind CLI verbs that Claude learns from the auto-installed `claudemesh` skill.
|
|
|
|
> **What's new in 1.6.0:** topics (channel pub/sub), API keys for human/REST clients, and bridge peers that forward a topic between two meshes. New verbs: `claudemesh topic`, `claudemesh apikey`, `claudemesh bridge`. A REST surface at `https://claudemesh.com/api/v1/*` (messages, topics, peers, history) accepts `Authorization: Bearer cm_...` keys, so any HTTPS client can participate without WebSocket + ed25519 plumbing. **Note**: REST lives on the web host (`claudemesh.com`), not the broker host (`ic.claudemesh.com`) — the broker only speaks WebSocket.
|
|
>
|
|
> **Migration note (1.5.0):** the previous 79 MCP tools (`send_message`, `list_peers`, `remember`, …) are removed. Use the matching CLI verbs (`claudemesh send`, `claudemesh peers`, `claudemesh remember`). Run `claudemesh install` and the bundled skill teaches Claude the full surface.
|
|
|
|
## Install
|
|
|
|
```bash
|
|
npm i -g claudemesh-cli
|
|
```
|
|
|
|
## Quick start
|
|
|
|
```bash
|
|
claudemesh register # create account
|
|
claudemesh new "my-team" # create a mesh
|
|
claudemesh invite # generate invite link
|
|
claudemesh # start a session
|
|
```
|
|
|
|
## Commands
|
|
|
|
```
|
|
USAGE
|
|
claudemesh start a session (creates one if needed)
|
|
claudemesh <url> join a mesh from an invite link
|
|
claudemesh new create a new mesh
|
|
claudemesh invite [email] generate an invite
|
|
claudemesh list see your meshes
|
|
claudemesh rename <name> rename the current mesh
|
|
claudemesh leave [mesh] leave a mesh
|
|
claudemesh peers see who's online
|
|
|
|
claudemesh send <to> <msg> send a message
|
|
claudemesh inbox drain pending messages
|
|
claudemesh state ... get, set, or list shared state
|
|
claudemesh remember <text> store a memory
|
|
claudemesh recall <query> search memories
|
|
claudemesh remind ... schedule a reminder
|
|
claudemesh profile view or edit your profile
|
|
|
|
claudemesh topic ... create, list, join, send to topics
|
|
claudemesh apikey ... issue, list, revoke API keys (REST clients)
|
|
claudemesh bridge ... forward a topic between two meshes
|
|
|
|
claudemesh doctor diagnose issues
|
|
claudemesh whoami show current identity
|
|
claudemesh status check broker connectivity
|
|
|
|
claudemesh register create account
|
|
claudemesh login sign in via browser
|
|
claudemesh logout sign out
|
|
|
|
claudemesh install register MCP server + hooks
|
|
claudemesh uninstall remove MCP server + hooks
|
|
```
|
|
|
|
## Architecture
|
|
|
|
```
|
|
src/
|
|
├── entrypoints/ CLI + MCP stdio entry points
|
|
├── cli/ argv parsing, output formatters, signal handling
|
|
├── commands/ one verb per file (29 commands)
|
|
├── services/ 17 feature-folders with facade pattern
|
|
│ ├── auth/ device-code OAuth, token storage
|
|
│ ├── broker/ WebSocket client (2200 lines), reconnect, crypto
|
|
│ ├── crypto/ Ed25519, NaCl crypto_box, AES-GCM file encryption
|
|
│ ├── config/ ~/.claudemesh/config.json with atomic writes
|
|
│ ├── mesh/ CRUD, join, resolve target
|
|
│ ├── invite/ generate, parse, claim (v1 + v2 formats)
|
|
│ ├── api/ typed HTTP client for claudemesh.com
|
|
│ ├── health/ 6 diagnostic checks
|
|
│ └── ... device, clipboard, spawn, telemetry, i18n, logger
|
|
├── mcp/ MCP server (tool-less push-pipe; emits claude/channel notifications)
|
|
├── ui/ TUI: styles, spinner, welcome wizard, launch flow
|
|
├── constants/ exit codes, paths, URLs, timings
|
|
├── types/ API, mesh, peer interfaces
|
|
├── utils/ levenshtein, slug, URL, format, semver, retry
|
|
├── locales/ English strings (i18n ready)
|
|
└── templates/ 5 mesh templates
|
|
```
|
|
|
|
## Development
|
|
|
|
```bash
|
|
pnpm install
|
|
bun run dev # hot-reload
|
|
bun run build # production build
|
|
bun run typecheck # tsc --noEmit
|
|
```
|
|
|
|
## License
|
|
|
|
MIT
|