-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Share one real, interactive Claude Code session with other humans on other machines.
The host keeps the native claude TUI — their own plugins, skills, MCP servers, CLAUDE.md,
hooks and account. Everyone, host included, joins from a terminal client whose default view is
that TUI, streamed live. The agent is told the session is shared and sees who wrote each
message. Humans also get a side channel the agent never sees.
Roy (host) Dana Eli
client ─────┐ client ────┐ client ────┐
└──────── WS ───────┴─────────────┘
│
host.mjs daemon ── types into ──▶ the real `claude` TUI
└── capture-pane ──▶ the live view everyone watches
brew install roypadina/tap/claude-jam
# host: start a jam in this directory
claude-jam host --name Roy --cwd .
# host: mint a link for one person, and send it to them privately
claude-jam invite Dana
# Dana, on her machine: the link is her whole command
claude-jam join cjam1_eyJ2IjoxLCJqYW0i…claude-jam with no arguments opens a launcher menu instead: Host a jam · Join a jam ·
My jams · End a jam. It prints the exact command line before it runs it, so the menu teaches
the CLI rather than replacing it.
The command is claude-jam. jam is still installed as a deprecated alias of it.
| page | what it answers |
|---|---|
| Install | brew and from-source, what has to be on PATH, and how to check the install worked |
| Agent-Install | point an agent here. Numbered, non-interactive commands, what to verify after each, what needs a human, what must never be done, and a self-test |
| Hosting a Jam | starting one, every flag, letting people in, ending it |
| Joining a Jam | the guest's whole world: joining, the two views, every command, the keys |
| Remote Access | LAN, Tailscale, --tunnel, --funnel, and what breaks over a long session |
| Files and Export |
/send, /paste, /get, /export, and resuming a transcript on your own machine |
| Security Model | which gates are real, which are only instructions to the model, and what to assume |
| Peer Tasks | the host's agent dispatching work to a guest's own Claude Code: the two switches, what a guest is agreeing to, how to say no, and the open compliance question |
| Architecture | tmux + WebSocket + JSONL tail, the frame pipeline, the approval ladders, the hooks |
| Troubleshooting | the failures people actually hit |
If a page here does not describe something, assume it is not there:
-
Windows. macOS and Linux only. The platform seam exists —
platform.mjsis the one module allowed to spawn a platform binary, and a test enforces that — but no Windows implementation does. Linux is built but thinly proven: the sound path (paplay/aplay) has never been run, and discovery needs Apple'sdns-sd, with no avahi fallback yet.
Five things that used to be on this list have since shipped, and each has a page: LAN discovery
and named jams (claude-jam find, --jam-name), join/knock sounds (--no-sound, /sound),
/nudge, auto-allowing uploads from an already-admitted guest (--uploads auto), and guest-side
scrollback past the replayed history (PgUp, against the host's real pane).
https://github.com/roypadina/claude-jam — README.md is the tour, MANUAL.md is what claude
itself is given, AGENTS.md is for an agent changing the code, SPEC.md is the design record.