claudemesh-cli 1.22.0 → 1.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -88,7 +88,7 @@ __export(exports_urls, {
88
88
  VERSION: () => VERSION,
89
89
  URLS: () => URLS
90
90
  });
91
- var URLS, VERSION = "1.22.0", env;
91
+ var URLS, VERSION = "1.22.1", env;
92
92
  var init_urls = __esm(() => {
93
93
  URLS = {
94
94
  BROKER: process.env.CLAUDEMESH_BROKER_URL ?? "wss://ic.claudemesh.com/ws",
@@ -10179,6 +10179,7 @@ __export(exports_daemon, {
10179
10179
  async function runDaemonCommand(sub, opts, rest = []) {
10180
10180
  switch (sub) {
10181
10181
  case undefined:
10182
+ return printDaemonUsage();
10182
10183
  case "up":
10183
10184
  case "start":
10184
10185
  return runDaemon({
@@ -10187,6 +10188,10 @@ async function runDaemonCommand(sub, opts, rest = []) {
10187
10188
  mesh: opts.mesh,
10188
10189
  displayName: opts.displayName
10189
10190
  });
10191
+ case "help":
10192
+ case "--help":
10193
+ case "-h":
10194
+ return printDaemonUsage();
10190
10195
  case "status":
10191
10196
  return runStatus(opts);
10192
10197
  case "version":
@@ -10204,12 +10209,46 @@ async function runDaemonCommand(sub, opts, rest = []) {
10204
10209
  return runUninstallService(opts);
10205
10210
  default:
10206
10211
  process.stderr.write(`unknown daemon subcommand: ${sub}
10212
+
10207
10213
  `);
10208
- process.stderr.write(`usage: claudemesh daemon [up|status|version|down|accept-host|outbox|install-service|uninstall-service]
10209
- `);
10214
+ printDaemonUsage(process.stderr);
10210
10215
  return 2;
10211
10216
  }
10212
10217
  }
10218
+ function printDaemonUsage(stream = process.stdout) {
10219
+ stream.write(`claudemesh daemon — long-lived peer mesh runtime (v0.9.0)
10220
+
10221
+ USAGE
10222
+ claudemesh daemon <command> [options]
10223
+
10224
+ COMMANDS
10225
+ up | start start the daemon in the foreground
10226
+ status show running pid + IPC health
10227
+ version ipc + schema version of the running daemon
10228
+ down | stop stop the running daemon (SIGTERM, then wait)
10229
+ accept-host pin the current host fingerprint
10230
+ outbox list list local outbox rows (newest first)
10231
+ outbox requeue <id> re-enqueue an aborted / dead outbox row
10232
+ install-service --mesh <s> write launchd (macOS) / systemd-user (Linux) unit
10233
+ uninstall-service remove the platform service unit
10234
+
10235
+ OPTIONS
10236
+ --mesh <slug> attach to / target this mesh
10237
+ --name <displayName> override CLAUDEMESH_DISPLAY_NAME
10238
+ --no-tcp disable the loopback TCP listener (UDS only)
10239
+ --public-health expose /v1/health unauthenticated on TCP
10240
+ --json machine-readable output where supported
10241
+
10242
+ OUTBOX FLAGS (for 'daemon outbox list')
10243
+ --pending --inflight --done --failed --aborted filter by status
10244
+
10245
+ OUTBOX FLAGS (for 'daemon outbox requeue')
10246
+ --new-client-id <id> mint the new row with this client_message_id
10247
+
10248
+ See ${"https://claudemesh.com/docs"} for the full daemon spec.
10249
+ `);
10250
+ return 0;
10251
+ }
10213
10252
  async function runOutbox(rest, opts) {
10214
10253
  const sub = rest[0];
10215
10254
  switch (sub) {
@@ -13501,6 +13540,23 @@ claudemesh send "<from_name>" "..." --mesh "<mesh_slug>"
13501
13540
 
13502
13541
  If the parent Claude session was launched via \`claudemesh launch\`, an MCP push-pipe is running and holds the per-mesh WS connection. CLI invocations dial \`~/.claudemesh/sockets/<mesh-slug>.sock\` and reuse that warm connection (~200ms total round-trip including Node.js startup). If no push-pipe is running (cron, scripts, hooks fired outside a session), the CLI opens its own WS, which takes ~500-700ms cold. **You don't manage this** — every verb auto-detects and falls through.
13503
13542
 
13543
+ ### Daemon path (v0.9.0, opt-in, fastest)
13544
+
13545
+ \`claudemesh daemon up [--mesh <slug>]\` starts a persistent per-user runtime that holds the broker WS, a durable SQLite outbox/inbox, and listens on \`~/.claudemesh/daemon/daemon.sock\` (UDS) plus an optional loopback TCP. When the daemon socket is present, every verb routes through it first (~1ms IPC) before falling back to bridge / cold paths. The send envelope carries a caller-stable \`client_message_id\`, so a \`claudemesh send\` that started before a daemon crash survives the restart via the on-disk outbox.
13546
+
13547
+ Lifecycle:
13548
+
13549
+ \`\`\`bash
13550
+ claudemesh daemon up --mesh <slug> # foreground
13551
+ claudemesh daemon install-service --mesh <slug> # macOS launchd / Linux systemd-user
13552
+ claudemesh daemon status [--json] # health + pid
13553
+ claudemesh daemon outbox list [--failed|--pending|...] # local queue inspection
13554
+ claudemesh daemon outbox requeue <id> # re-enqueue an aborted/dead row
13555
+ claudemesh daemon down # SIGTERM + wait
13556
+ \`\`\`
13557
+
13558
+ \`claudemesh install\` (MCP + hooks registration) and the daemon are independent — install does not start the daemon, and the daemon does not require install. Run both for the warmest path: install gives you the in-session push-pipe, daemon gives you cross-invocation persistence and a survivable outbox.
13559
+
13504
13560
  ## Spawning new sessions (no wizard)
13505
13561
 
13506
13562
  \`claudemesh launch\` is the canonical way to start a new Claude Code session connected to claudemesh. Pass every required flag up front so no interactive prompt fires — that's what makes the verb scriptable from tmux send-keys, AppleScript/iTerm spawn helpers, hooks, cron, and the \`claudemesh launch\` you call from inside another session. **Always use this verb, never \`claude\` directly with hand-rolled flags** — it sets up the per-session ed25519 keypair, exports \`CLAUDEMESH_DISPLAY_NAME\`, isolates the mesh config in a tmpdir, and passes the \`--dangerously-load-development-channels server:claudemesh\` plumbing that the MCP push-pipe needs.
@@ -17452,6 +17508,17 @@ Security
17452
17508
  claudemesh backup [file] encrypt config → portable recovery file
17453
17509
  claudemesh restore <file> restore config from a backup file
17454
17510
 
17511
+ Daemon (long-lived peer mesh runtime, v0.9.0)
17512
+ claudemesh daemon up start daemon (alias: start) [--mesh <slug>] [--no-tcp]
17513
+ claudemesh daemon status show running pid + IPC health [--json]
17514
+ claudemesh daemon down stop daemon (alias: stop)
17515
+ claudemesh daemon version ipc + schema version of running daemon
17516
+ claudemesh daemon outbox list list local outbox rows [--failed|--pending|--inflight|--done]
17517
+ claudemesh daemon outbox requeue <id> re-enqueue an aborted/dead row [--new-client-id <id>]
17518
+ claudemesh daemon accept-host pin current host fingerprint
17519
+ claudemesh daemon install-service --mesh <slug> write launchd / systemd-user unit
17520
+ claudemesh daemon uninstall-service remove the unit
17521
+
17455
17522
  Setup
17456
17523
  claudemesh install register MCP server + hooks
17457
17524
  claudemesh uninstall remove MCP server + hooks
@@ -18426,4 +18493,4 @@ main().catch((err) => {
18426
18493
  process.exit(EXIT.INTERNAL_ERROR);
18427
18494
  });
18428
18495
 
18429
- //# debugId=BA4EDB138BD2E1AE64756E2164756E21
18496
+ //# debugId=7D9AD4B3EA7DF68364756E2164756E21