Skip to main content

Module session

Module session 

Source
Expand description

Multi-session wire on one machine (v0.5.16).

Problem: multiple Claude Code (or any agent harness) sessions on the same machine share a single WIRE_HOME, which means they share the same DID, same relay slot, same inbox JSONL, and same daemon. Peers have no way to address a specific session, and the operator can’t tell which session sent what.

Solution: a wire session subcommand that bootstraps isolated per-session WIRE_HOME trees. Each session gets its own identity, handle, relay slot, daemon, and inbox/outbox. Sessions pair with each other through the public relay (wireup.net) like any other peer — no protocol changes. The bilateral-pair gate from v0.5.14 still applies in both directions.

Storage layout:

~/.local/state/wire/sessions/
  registry.json                — cwd → session_name map
  <session-name>/               — full WIRE_HOME tree per session
    config/wire/...
    state/wire/...

Naming: derived from basename(cwd) so re-opening the same project reuses the same session identity. Collisions across two different paths with the same basename get a 4-char SHA-256 path-hash suffix.

Structs§

SessionInfo
Summary of one on-disk session for wire session list.
SessionRegistry

Functions§

derive_name_from_cwd
Derive a stable session name for the given cwd. Resolution order:
list_sessions
Enumerate every on-disk session by reading sessions_root(). Cross- references the registry so each entry’s cwd is filled in when known.
read_registry
registry_path
Registry tracks cwd → session_name so repeated wire session new from the same project reuses the same identity instead of creating a fresh one each time. Lives at <sessions_root>/registry.json.
sanitize_name
Sanitize an arbitrary string to a session-name-safe form: lowercase ASCII alphanumeric + - + _, replace other chars with -, dedupe consecutive dashes, trim leading/trailing dashes, max 32 chars.
session_dir
Full filesystem path for the named session’s WIRE_HOME root. Inside this dir the standard wire layout applies: config/wire/... and state/wire/....
sessions_root
Root directory under which all session WIRE_HOMEs live.
write_registry