Skip to content
Roy Padina edited this page Oct 23, 2026 · 13 revisions
claude-jam icon with an ALPHA ribbon

claude-jam

⚠️ ALPHA — not fully tested, and not everything works yet. Expect bugs and breaking changes. Help build it →

Alpha. claude-jam is alpha software and welcomes contributors. Hosting is verified on macOS; the Linux and WSL2 hosts, Windows client details and --funnel still 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

60 seconds

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.

Pages

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

Not built yet

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.mjs is 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-latest CI 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, claude and 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/bin on macOS and is not packaged for Linux or Windows. Do not install avahi-utils expecting it to help: measured 2026-08-30, it provides avahi-browse and avahi-publish-service and no dns-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 — and claude-jam find refuses with the reason instead of reporting an empty network. Ask the host for an invite link, or join their ws:// 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).

Support

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.

Support me on Ko-fi

Repo

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.

Clone this wiki locally