- apps/cli/ is now the canonical CLI (was apps/cli-v2/). - apps/cli/ legacy v0 archived as branch 'legacy-cli-archive' and tag 'cli-v0-legacy-final' before deletion; git history preserves it too. - .github/workflows/release-cli.yml paths updated. - pnpm-lock.yaml regenerated. Broker-side peer-grant enforcement (spec: 2026-04-15-per-peer-capabilities): - 0020_peer-grants.sql adds peer_grants jsonb + GIN index on mesh.member. - handleSend in broker fetches recipient grant maps once per send, drops messages silently when sender lacks the required capability. - POST /cli/mesh/:slug/grants to update from CLI; broker_messages_dropped_by_grant_total metric. - CLI grant/revoke/block now mirror to broker via syncToBroker. Auto-migrate on broker startup: - apps/broker/src/migrate.ts runs drizzle migrate with pg_advisory_lock before the HTTP server binds. Exits non-zero on failure so Coolify healthcheck fails closed. - Dockerfile copies packages/db/migrations into /app/migrations. - postgres 3.4.5 added as direct broker dep. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
91 lines
3.1 KiB
Markdown
91 lines
3.1 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, and 79 MCP tools.
|
|
|
|
## 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 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 with 79 tools across 21 families
|
|
├── 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
|