npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

team-coding

v0.1.7

Published

Multi-participant collaborative coding sessions — share a Claude Code session with your team

Readme

team-coding

Multi-participant collaborative coding sessions powered by Claude Code.

What Is This

A shared terminal where multiple people can chat, whisper privately, prompt a shared Claude together, and optionally run their own private Claude for brainstorming — all in real-time with end-to-end encryption.

hello!              → group chat, everyone sees it
@claude fix auth.ts → sent to shared Claude, everyone sees the response
@bob check line 42  → whisper, only bob sees it
/think what does…   → private prompt to your own local Claude
/agent-mode         → your local Claude auto-responds to chat on your behalf

Features

  • Multi-participant — Up to 10 participants (configurable), each identified by name
  • Group chat with ordering — Server-assigned sequence numbers for consistent message order across all clients
  • Whispers — Direct messages via @name message; typing indicators are targeted to the recipient only
  • Shared Claude Code — Host runs a headless Claude instance; participants prompt it with optional approval gate
  • Private local Claude — Join with --with-claude for a private Claude that never touches the server
  • Agent mode/agent-mode lets your local Claude auto-respond to chat and whispers on your behalf, with loop prevention and rate limiting
  • Context control/context-mode full|prompt-only manages what chat history Claude receives; agent mode inherits this setting and includes shared Claude responses in context
  • Session resume — Host can --continue or --resume <id> to pick up a previous Claude Code session
  • E2E encryption — NaCl secretbox (XSalsa20 + Poly1305) with scrypt key derivation
  • Multiple connection modes — WebSocket (LAN/tunnel/relay) and WebRTC P2P

Quick Start

Requires Claude Code installed on the host machine.

# Host a session
npx team-coding host --name alice

# Join a session
npx team-coding join <session-code> --password <password> --name bob

# Join with your own private Claude
npx team-coding join <session-code> --password <password> --name charlie --with-claude

CLI Reference

team-coding host                           # Start a session (WebRTC P2P by default)
team-coding host --tunnel cloudflare       # Remote access via Cloudflare tunnel
team-coding host --tunnel localtunnel      # Remote access via localtunnel
team-coding host --no-approval             # Trust mode — skip prompt review
team-coding host --continue                # Resume most recent Claude Code session
team-coding host --resume <id>             # Resume a specific session by ID
team-coding host --max-participants 20     # Raise participant limit (default: 10)
team-coding join <code> --password <pw>    # Join a session
team-coding join <code> … --with-claude    # Join with a private local Claude
team-coding relay                          # Run a self-hosted relay server
team-coding config                         # View/manage saved configuration

In-Session Commands

| Input | Effect | |-------|--------| | hello! | Group chat | | @claude fix the bug | Prompt shared Claude (all see the response) | | @bob check line 42 | Whisper to bob only | | /think what does this do? | Private prompt to your local Claude | | /private <prompt> | Alias for /think | | /agent-mode | Enable: local Claude auto-responds to chat and whispers | | /agent-mode off | Disable your own agent mode | | /agent-mode off <name> | (host) Disable a participant's agent mode remotely | | /context-mode full\|prompt-only | Set context Claude receives for prompts | | /who | List all participants | | /kick <name> | (host) Disconnect a participant | | /trust | (host) Switch to trust mode (no approval) | | /approval | (host) Re-enable approval mode | | /status | Show session info and duration | | /help | Show all available commands |

How It Works

┌─────────────────────┐
│  Host               │◄── WebSocket ──► Participant A  (+ local Claude)
│  · Claude Code      │◄── WebSocket ──► Participant B  (+ local Claude)
│  · Chat server      │◄── WebSocket ──► Participant N  (+ local Claude)
│  · Approval gate    │
└─────────────────────┘
  • Host runs a headless Claude Code process and a WebSocket server
  • Participants connect via WebSocket (or WebRTC P2P for direct connections)
  • Messages flow through the host with monotonic sequence numbers for total ordering
  • Shared Claude prompts are approval-gated by default; the host can switch to trust mode
  • Private Claude runs entirely on the participant's machine — responses never leave it
  • Agent mode auto-forwards incoming chat/whispers to the participant's local Claude and posts responses back; includes shared Claude replies in context, applies rate limiting (5 s), and prevents response loops

Security

  • E2E encrypted — All WebSocket traffic is NaCl secretbox encrypted with a scrypt-derived key
  • Approval mode — Host reviews participant prompts before they reach Claude (on by default)
  • Host-controlled — Claude runs on the host's machine using the host's API key
  • Agent safeguards — Loop prevention (isAgentResponse flag), 5-second rate limit, host remote-disable

Connection Modes

| Mode | How | |------|-----| | P2P (default) | WebRTC direct connection, no server needed | | Cloudflare tunnel | --tunnel cloudflare — works anywhere, no port forwarding | | localtunnel | --tunnel localtunnel — quick LAN/remote sharing | | LAN | Share the local IP directly on the same network | | Relay | --relay <url> with a self-hosted relay server |

Development

git clone https://github.com/m3nadav/team-coding.git
cd team-coding
npm install
npm run build   # compile TypeScript
npm test        # run test suite (vitest)
npm run dev     # watch mode

Requires Node.js 18+.

License

MIT

Forked from claude-duet by EliranG.