Skip to content
Roy Padina edited this page Aug 29, 2026 · 4 revisions

claude-jam

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

60 seconds

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.

Pages

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

Not built yet

If a page here does not describe something, assume it is not there:

  • Windows. macOS and Linux only. The platform seam exists — platform.mjs is 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's dns-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).

Repo

https://github.com/roypadina/claude-jamREADME.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.

Clone this wiki locally