JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1078
  • Score
    100M100P100Q57178F

Package Exports

  • lobby-cli

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (lobby-cli) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

lobby

A multiplayer lobby for your Claude Code session. You open a lobby and send a six-character code; a friend joins from any laptop and lands in the same live Claude Code TUI — prompting the same agent, on your fully-configured machine. Like a game lobby, for AI pair programming.

No custom client, no daemon: tmux + tmate + SSH do the sharing. Full-trust by design — the host is present, and joiners are people you'd hand the keyboard to.

Prefer the browser? Lobby has a web version too — same room, joined from a tab: https://claudemultiplayer.com. This package is the terminal client.

Product rationale and journey live in the knowledge graph: knowledge/tech-pod/lobby/.

Install

npm install -g lobby-cli      # then: lobby open
# zero-install:   npx lobby-cli open
# from source:    npm install && npm run build && npm link

Hosts need tmux/tmate (auto-installed via Homebrew if missing). Friends need only SSH — or npx lobby-cli join <code> with nothing installed.

Usage

lobby open                    # fresh lobby + fresh Claude; dials out to the relay and
                              #   prints a 6-char code friends join from ANY network
lobby open --local            # keep the lobby on this machine (LAN / Tailscale), no relay
lobby join K7F2QX             # join a lobby by its 6-char code
lobby join ming@host          # join a --local lobby over LAN / Tailscale SSH
lobby invite                  # reprint the join command full-width + copy it
lobby who                     # who's in the lobby right now
lobby status                  # list running lobbies + collaborator counts
lobby close                   # end a lobby (occupied lobbies need --force)
lobby close --all             # sweep every lobby you have running

Every open starts a fresh lobby (lobby, lobby-2, …) running a fresh claude — resume a past conversation with /resume inside the session. --name <lobby> rejoins a specific lobby; --cmd "<command>" overrides what runs; --no-panel / --no-attach / --no-install are for scripting.

Sending a code (the default)

lobby open runs the session on tmate — both laptops dial out to Lobby's relay (relay.sharewithlobby.dev), so it works behind any NAT: no port-forwarding, no Remote Login, no key exchange. It registers a short code with the control-plane and copies it to your clipboard:

lobby join K7F2QX                           # your friend, from any laptop
https://sharewithlobby.com/j/K7F2QX         # …or a clickable link to paste in Slack / DM

The code is the credential — treat it like a secret; lobby close invalidates it (codes also expire on their own). Plain SSH works too for friends without the CLI — the join link shows the exact command. Add --read-only when joining to spectate.

The presence pane

open splits a narrow sidebar: live collaborator count, joiner names (each lobby join self-registers via the control-plane presence layer), the shared grid size, and the invite hint. Pure tmux, no daemon. --no-panel to disable; lobby who is the on-demand roster.

How it works

Piece Mechanism
Shared view + input one tmux session, multiple attached clients
Cross-network reach (default) tmate relay — both sides dial out, works behind NAT
Short codes a control-plane maps a 6-char code → the relay target
LAN / Tailscale (--local) direct SSH to the host's tmux
Read-only tmux attach -r / tmate's ro-… token

Layout

src/
  cli.ts            entry: parse argv + dispatch
  commands/         one file per verb: open, join, close, status, invite, who, panel
  lib/              proc, args, config, controlplane, cpstate, deps, tmux, tmate,
                    roster, termsize, clipboard

Develop

npm run dev -- open --no-attach    # run from source via tsx
npm test                           # unit tests
npm run typecheck