claude-jam

Alpha: not fully tested, not everything works yet.

Share one real Claude Code session with other humans.

Pair-program with Claude Code across machines. The host keeps the native TUI, plugins and account; guests join from a terminal, every message is attributed, and humans get a side channel the agent never sees.

brew install roypadina/tap/claude-jam

Or with npm:

npm i -g @roypadina/claude-jam

Version 0.24.4, released 23 October 2026. Node 22 or later. Hosting needs tmux (macOS or Linux); guests need only Node. Free and MIT licensed.

A guest's terminal in a jam: the host's live Claude Code conversation with messages attributed to Alice and Dana, the status line, and Dana's own prompt at the bottom.

Alpha: not fully tested, not everything works yet

claude-jam works, and it is used, but it is young and rough at the edges. Hosting and joining on macOS are verified on every release; Linux hosting is built and thinly proven; Windows hosts through WSL2 only. Commands and defaults still move between versions. If that sounds fine, install it and tell me what breaks. If you would rather help build it, read on.

See it work

Alice hosts. Dana joins from her own machine with one link. Both talk to the same Claude, and it knows who said what.

Recorded with a fake Claude TUI, so the conversation is staged.

Why claude-jam

  • It is the real TUI, not a wrapper

    The host's own claude runs in tmux with their plugins, skills, MCP servers, hooks and account. Guests see it streamed live and type into it. Nothing about the session is simulated.

  • The agent knows who is in the room

    Every participant, host included, reaches the agent as [Name]: …. People get a side channel too: /c messages go to the humans and are never injected into the session.

  • You decide who gets in

    A shared token, knock-and-approve, or single-use invite links that expire. The host approves tool permissions and file uploads. Works over LAN, Tailscale, a Cloudflare tunnel or Tailscale Funnel; guests need only Node 22.

How it works

One session, several terminals.

Hostruns claude in tmux and a small daemon that streams the pane
Guestsconnect over WebSocket, see the pane, type into it
The agentgets every message with the sender's name in front

Claude Code's Remote Control is one account. A shared tmux or a screen-share has no idea who typed what. claude-jam keeps one real interactive session, bridges it to several people, and makes the agent aware of the room. Admission is enforced in code: tokens are compared at join time, knocks expire after two minutes and are answered by the host, invite links carry a name, a secret and an expiry and are stored only as hashes. Once somebody is in, everybody is equally trusted; the security model says exactly which guards are code and which are instructions to a language model.

Peer tasks go the other way: the host's agent can ask a guest's own Claude Code to do a job, with the guest's consent and on the guest's own quota.

Platforms

HostJoin as guest
macOSVerified on every releaseVerified
LinuxSupported, thinly provenCI-tested
WindowsVia WSL2 onlyNative client CI-tested

Row-by-row evidence, with dates, is in the repo's docs/COMPATIBILITY.md.

What a guest sees

A guest's terminal in a jam: the host's live Claude Code conversation with messages attributed to Alice and Dana, the status line, and Dana's own prompt at the bottom.
A guest's terminal: the host's live conversation above, the guest's own prompt below.

Inside a jam

  • /c talks to the other humans only; the agent never sees it
  • /who lists the room, /mirror shows the host's raw screen
  • claude-jam invite Dana mints a link for one person; a bare claude-jam opens a menu
  • the host approves tool permissions and uploads, or auto-allows uploads from admitted guests
  • join and knock sounds, LAN discovery on macOS, named jams

Help build it and finish it

This is the one project on this site that is openly unfinished. The parts that work are solid; the parts that are missing are listed, not hidden.

  • Good first issues

    Small, scoped, with the context written down. Start with one labelled good first issue, or pick anything under help wanted.

  • What is not built yet

    Linux hosting end to end, a native Windows host, LAN discovery off macOS. The roadmap lists each gap with what has been tried and what evidence exists.

  • How to contribute

    CONTRIBUTING.md covers setup, the test suite that runs on macOS, Linux and Windows, and how a change gets reviewed. Running it on a platform I do not have and reporting what happens counts.

Requirements

  • Node 22 or laterFor hosts and guests. Homebrew installs it as a dependency.
  • Hosting needs tmux and the claude CLIOn the host's PATH. Guests need only Node.
  • Any network you already haveLAN, Tailscale, a Cloudflare tunnel (cloudflared) or Tailscale Funnel. Optional: ttyd for a browser view, git for /diff.
  • Open source, MITA Node CLI, no app bundle, nothing to notarize.

Questions

Is it safe to put on the internet?

Admission is real: a token, a knock the host answers, or a per-person invite link with an expiry. Once somebody is admitted, they are as trusted as the host, so give links to people you would hand your keyboard to. Read the security model before hosting on anything but a network you own.

Do guests need a Claude account?

No. The session runs on the host's account and quota; guests need only Node 22. Peer tasks are the exception: the host's agent can ask a guest's own Claude Code to do a job, with the guest's consent and on the guest's quota.

How is this different from Claude Code's Remote Control, or sharing a tmux?

Remote Control is one account talking to one session. A shared tmux or screen-share shows everyone the same pane but the agent cannot tell who typed. claude-jam keeps the real session, attributes every message, and gives the humans a channel the agent never sees.

What about Windows?

Hosting on Windows goes through WSL2, where tmux and claude both run. The native Windows client is implemented and CI-tested but has not been run by a human yet. Honest state, with dates, is in the compatibility notes.

Something is stuck.

The wiki's Troubleshooting page walks through getting in, the screen, prompts, files and connections. If it is not there, open an issue; in an alpha, a good bug report is a contribution.

Keep the next one coming

If claude-jam lets you share a Claude Code session with the people you work with, you can support its development. Optional, always appreciated.

I'm a software engineer from Israel who builds small, focused Mac tools to fix the little annoyances in my own day — then shares them free and open source. If this app saves you time, a coffee on Ko-fi keeps the next one coming. ☕

Roy Padina

Buy me a coffee on Ko-fi

Not today? A star on GitHub or a bug report helps too.

What a coffee pays for

  • The Apple Developer Program, so the apps can be notarized and the "Open Anyway" step goes away.
  • Evenings on bug reports, new macOS versions and Intel builds.
  • The next small tool.