From claude-spread
Browse shared Claude Code sessions from another user via LAN or relay, select one, decrypt with passphrase, and install locally as JSONL conversation history.
npx claudepluginhub namyunwoo/claudespread --plugin claude-spreadThis skill uses the workspace's default tool permissions.
You are receiving Claude Code sessions from another user on the network.
Shares selected Claude Code sessions: scans files, builds catalog, encrypts with passphrase, serves via mDNS or WebSocket relay for browsing/resuming.
Manages Claude Code sessions: lists active ones, checks inbox for cross-session messages, broadcasts to all. Explicitly invoke via /session for multi-session coordination.
Transfer Claude Desktop Code-tab sessions between Claude accounts — copy (default) or move (--move) the session metadata file so the session shows up in another account's left-hand sidebar (the session picker on the left side of Desktop's Code tab). Two natural framings: push (run while still on your current near-limit account, send sessions to the next one, then Logout/Login as the natural switch) or pull (after switching accounts, bring earlier sessions into the now-active one). Push is the recommended workflow because the Logout/Login becomes invisible — it IS the switch you were going to do anyway. Triggers on: summon, summon sessions, push sessions, pull sessions, before switching accounts, account approaching usage limit, account ran out of usage, prepare next account, mid-flight desktop sessions, claude desktop multi-account workflow, transfer claude desktop sessions across accounts, peek session, see desktop sessions across accounts. Default copy keeps the session visible in both accounts' sidebars; --move for lean cleanup. Transcript JSONLs are account-agnostic and stay where they are — both wrappers point at the same conversation. No API calls, no summarisation, full transcripts intact. The left-hand session picker is loaded at login, so a Logout/Login on the destination is required for new sessions to appear there.
Share bugs, ideas, or general feedback.
You are receiving Claude Code sessions from another user on the network.
Note: Received sessions contain full conversation history from the sender.
Run the receive_sessions.py script in list mode:
LAN mode:
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/receive_sessions.py "{{passphrase}}"
Relay mode (if --relay and --room are provided):
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/receive_sessions.py --relay --room "{{room}}" "{{passphrase}}"
This will output a JSON object with {"type": "SESSION_LIST", "sessions": [...]}.
Parse the sessions from stdout (ignore any status lines on stderr).
Sort the sessions by modified (newest first).
Use AskUserQuestion to let the user pick a session. Show up to 4 recent sessions as options:
summary (or first 40 chars of firstPrompt if summary is empty){gitBranch} · {messageCount} msgs · {relative time of modified}If there are more than 4 sessions, add an "Other..." option. When selected, display the full numbered list and ask the user to enter a number.
If there are 4 or fewer sessions, just show them all directly as AskUserQuestion options.
Run receive_sessions.py in select mode:
LAN mode:
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/receive_sessions.py --select "SELECTED_SESSION_ID" "{{passphrase}}"
Relay mode:
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/receive_sessions.py --relay --room "{{room}}" --select "SELECTED_SESSION_ID" "{{passphrase}}"
This outputs the decrypted .jsonl content to stdout.
Capture the .jsonl output and the session metadata, then pipe to install_session.py:
Create a JSON payload with the session info and pipe it:
echo '{"sessionId": "ORIGINAL_ID", "metadata": {SELECTED_SESSION_METADATA}, "jsonl_content": "ESCAPED_JSONL"}' | python3 ${CLAUDE_PLUGIN_ROOT}/skills/sessions-receive/scripts/install_session.py
Important: The jsonl_content can be very large. Instead of piping through echo, write the install payload to a temporary file first, then pass it as an argument:
# Pseudocode for the install step:
# 1. Save received .jsonl content to a temp file
# 2. Build install JSON with metadata + jsonl_content
# 3. Write to temp file, pass to install_session.py
Use a bash approach like:
python3 -c "
import json, sys
metadata = json.loads(sys.argv[1])
jsonl_path = sys.argv[2]
with open(jsonl_path) as f:
jsonl = f.read()
payload = {'sessionId': metadata['sessionId'], 'metadata': metadata, 'jsonl_content': jsonl}
json.dump(payload, sys.stdout)
" 'SESSION_METADATA_JSON' /path/to/temp.jsonl | python3 ${CLAUDE_PLUGIN_ROOT}/skills/sessions-receive/scripts/install_session.py
After successful installation, tell the user:
/resume — it will appear in the session list