multiplayerclaude code.
you
$ cd my-project
$ ccshare host
─── ccshare ─── multiplayer claude code ───
7KQ 2FM
same wifi: ccshare join 7KQ2FM
direct: ccshare join 7KQ2FM --host 192.168.1.4:42518
browser: https://ideal-times-sing.trycloudflare.com/#7KQ2FM
\* friend connected
your friend, same wifi
$ ccshare join 7KQ2FM
ccshare: looking for the session on your network…
ccshare: connected (lan). Ctrl-\] to leave.
╭─ your claude session renders here, live
│ same screen. same prompt. both keyboards work.
╰─
---
how it works
01
host
`ccshare host` wraps claude in a real pty and prints a code. you keep using claude exactly as before.
02
share the code
say it out loud. on the same wifi that is the whole setup: discovery is a udp broadcast carrying a hash of the code, never the code itself.
03
join
`ccshare join 7KQ2FM` attaches read-write. no terminal handy? they open the browser link instead - same live session, from any device. `Ctrl-]` detaches without killing it.
---
the details
- smallest terminal winsthe pty resizes to the smallest connected terminal, tmux-style, so everyone sees the same frame. joiners get 256KB of scrollback replayed plus a forced repaint.
- tunnel anywherehosting opens a free cloudflare quick tunnel by default. cloudflared comes bundled, no account needed. friends on any network join through a random wss:// url that dies with your session. `--no-tunnel` keeps it lan-only.
- join from a browserevery session has a link like `https://….trycloudflare.com/#7KQ2FM` that opens a full live terminal in any browser - phone included. nothing to install, code prefilled, same screen and typing as the cli.
- approve each joiner`ccshare host --approve` holds every joiner - right code and all - until you click allow in a macos dialog. make it your default with `ccshare setup`.
- record the session`ccshare host --record` saves an asciinema .cast of everything everyone saw. replay it with `asciinema play` or upload it to asciinema.org.
- menu bar codeon macos, hosting puts your live code and joiner count in the menu bar: copy join commands or the browser link, open the anywhere-tunnel, end the session, get a ping when friends come and go. the icon turns into a globe when the anywhere link is ready.
- relay, if you'd rather self-hostrun `ccshare relay` on any box you own. it is a dumb pipe that pairs rooms by code and forwards frames. set `CCSHARE_RELAY` once and host/join fall back to it automatically.
- direct over tailscale`ccshare join CODE --host 100.x.y.z:42518` connects straight through. no relay, no extra server.
- read-only mode`ccshare host --read-only` lets friends watch a session without touching it. good for demos and rubber-ducking.
- not just claude`ccshare host codex`, `ccshare host opencode`, `ccshare host kimi` \- it is a pty mirror, so every terminal agent works. claude is just the default.
- 30-second onboarding`ccshare setup` (auto on first host) asks your name, finds the agents you have installed, and saves your defaults to `~/.ccshare/config.json`. flags always override.
- both directionsyou host and they join, or they host and you join. same command, either side.
---
security, plainly
the code is the only auth
anyone holding a live code can type into a real shell on the host's machine. share codes like you'd hand over your laptop, and only with people you trust. codes die when the session ends. lan traffic stays on your network; the default tunnel exposes your session behind a random unguessable url plus the code - use --no-tunnel to keep a session lan-only.