Repository navigation
Home
Alpha. claude-jam is alpha software and welcomes contributors. Hosting is verified on macOS; the Linux and WSL2 hosts, Windows client details and
--funnelstill need real-machine testing, and flags, invite links and the protocol may change before 1.0. Want to help? See CONTRIBUTING, the roadmap and the good first issues.
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.
Alice (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 Alice --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 |
|---|---|
| Full Guide | the complete reference: quickstarts, access modes, peer tasks, commands, internals |
| 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 |
| Windows (WSL2) Host | hosting from Windows: setup, the state-dir rule, C:\ and \\wsl$ paths, who can reach the jam, and the checklist that settles it |
| 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 |
| Feature requests and contributing | how to ask, supporters first, PR rules |
If a page here does not describe something, assume it is not there:
-
Windows. Hosting is macOS and Linux only (through WSL2 on Windows). The platform seam
exists —
platform.mjsis the one module allowed to spawn a platform binary, and a test enforces that — and the Windows client is implemented and CI-tested, though no human has run it. -
Linux is built, and thinly proven — but less thinly than it was. A
ubuntu-latestCI leg runs the unit suite and three real-entry-point checks on every push, including the state-directory privacy gate that only Linux can actually attack — and all of it has been run on real Linux (2026-08-30), green, with the takeover attempted as two genuinely different user accounts and correctly refused. What is still unproven there: hosting — the tmux,claudeand terminal half got one attempt and reached about a third of it, so nobody has pressed F3 or watched claude's screen mirror on Linux — and whether the join/knock sounds are audibly distinguishable, since the choice of player and file is tested but nobody has heard one. -
LAN discovery is macOS-only, and that is a decision rather than a gap. It needs Apple's
dns-sd, which ships in/usr/binon macOS and is not packaged for Linux or Windows. Do not installavahi-utilsexpecting it to help: measured 2026-08-30, it providesavahi-browseandavahi-publish-serviceand nodns-sd. The avahi-native path was deliberately not built (different output format, and no avahi anywhere on this project to verify a parser against), and Bonjour-for-Windows was deliberately not wired up (cheap to add, but it would be a claim nobody has ever seen work). Off macOS, hosting is unaffected — the jam simply does not announce — andclaude-jam findrefuses with the reason instead of reporting an empty network. Ask the host for an invite link, or join theirws://address directly.
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).
If claude-jam lets you share a Claude Code session with the people you work with, you can support its development — it's optional and always appreciated.
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.
claude-jam · MIT © Roy Padina · More Mac apps · Support on Ko-fi ☕
- Home
- Full Guide
- Install
- Agent Install
- Hosting a Jam
- Joining a Jam
- Remote Access
- Files and Export
- Security Model
- Peer Tasks
- Architecture
- Troubleshooting
- Windows WSL2 Host
- Feature requests and contributing