https://github.com/ofershap/clawgether
Multiplayer coding rooms with Claude. Multiple developers, one AI agent, real-time collaboration.
https://github.com/ofershap/clawgether
Last synced: 3 months ago
JSON representation
Multiplayer coding rooms with Claude. Multiple developers, one AI agent, real-time collaboration.
- Host: GitHub
- URL: https://github.com/ofershap/clawgether
- Owner: ofershap
- License: mit
- Created: 2026-03-02T07:37:10.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-03-07T19:56:38.000Z (3 months ago)
- Last Synced: 2026-03-08T07:53:36.984Z (3 months ago)
- Language: TypeScript
- Size: 1.19 MB
- Stars: 7
- Watchers: 0
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
clawgether
Multiple developers. One AI agent. Same conversation.
Your teammate is talking to Claude. You're talking to Claude.
Same project. Neither of you knows what the other asked.
clawgether puts everyone in the same room.
---

---
## One Agent, Multiple Devs
Every tool in this space runs multiple AI agents in parallel. More agents, more tokens, more cost, more conflict.
clawgether does the opposite. Two or more developers open a browser, join the same room, and talk to Claude together. Everyone sees every message. Responses stream in real-time. When Claude edits a file, everyone sees the diff. When it runs a command, everyone sees the output. Claude knows who said what and tracks context per person.
A shared AI session. Google Docs for coding conversations.
```
Dev A (browser) ──┐
Dev B (browser) ──┤
Dev C (browser) ──┤── WebSocket ──► Server ──► Claude Agent SDK
... ┘ │
▼
Your project folder
(read, write, terminal)
```
The server runs on your machine. Claude operates on a real project folder with full filesystem access. Not a chat wrapper.
---
⚡ Quick Start
```bash
git clone https://github.com/ofershap/clawgether.git
cd clawgether
npm install
npm run dev
```
Open `http://localhost:3847`. Create a room, share the link.
Teammate is remote? One more line:
```bash
npx ngrok http 3847
# Share the https://abc123.ngrok-free.app URL
```
They open the link, type their name, they're in.
---
## What You Actually Get
### The Chat
| | |
|---|---|
| **Live streaming** | Claude's responses stream to everyone simultaneously |
| **Message queue** | Send a message while Claude is mid-thought. It gets queued, not lost |
| **Typing indicators** | See who's composing. The bouncing dots |
| **@mentions** | Tag a teammate. Autocomplete kicks in after `@` |
| **Reactions** | Quick emoji on any message. The small things matter |
| **Notifications** | Tab title changes, browser notifications when you're alt-tabbed |
| **Markdown** | Full rendering with syntax highlighting. Code blocks look good |
### The Agent
The Claude Agent SDK with full capabilities, not a REST wrapper.
| | |
|---|---|
| **File operations** | Read, write, create, delete. Your project, live |
| **Terminal** | Runs shell commands, you see the output |
| **Git awareness** | Branch, uncommitted changes, one-click undo |
| **Code / Ask modes** | Full agent or discussion-only. Toggle in the sidebar |
| **Auto-lint** | Runs your linter after changes |
| **Repo map** | Extracted symbols from your codebase. Claude sees structure |
### The Sidebar
| | |
|---|---|
| **Participants** | Who's online, who's offline |
| **Git status** | Branch, ahead count, last commit |
| **File context** | Which files Claude touched, color-coded by action |
| **Cost tracking** | Per-message estimates. Know what you're spending |
| **Session export** | Download the full conversation as JSON |
| **Claude Code import** | Had a session in Claude Code? Import it into the room |
| **Auto-summary** | One click to summarize the conversation so far |
### Authentication
| Method | How |
|--------|-----|
| **OpenRouter** | One-click OAuth login. Free account, access Claude |
| **API Key** | Paste `sk-ant-...` or `sk-or-...` directly |
Keys live in server memory. Never touch disk.
---
## Why Not Just Share a Screen?
You've tried the alternatives:
- **Screen share** while one person drives. Everyone else watches, gets bored, checks Slack
- **Take turns**. Lose context every handoff. "Wait, what did you ask it?"
- **Separate sessions**. Everyone talking to Claude about the same project. Duplicate work, contradicting instructions, wasted tokens
clawgether fixes this because the conversation is the collaboration. Everyone contributes. Everyone sees what's happening. One agent, no conflict, no duplication.
---
## Architecture
| Component | Purpose |
|-----------|---------|
| `server.ts` | HTTP + Socket.io server on top of Next.js |
| `src/server/room-manager.ts` | Room lifecycle, participants, message queue |
| `src/server/agent-session.ts` | Claude Agent SDK, streaming, tool calls |
| `src/server/git-service.ts` | Git status, diff, undo |
| `src/server/cc-sessions.ts` | Parse Claude Code session history |
| `src/components/` | React UI: chat, sidebar, modals |
| `src/lib/store.ts` | Zustand client state |
**Stack:** Next.js 16 · Socket.io · Claude Agent SDK · Zustand · Tailwind · TypeScript (strict)
---
## Self-Hosting
The agent spawns a long-lived process and needs filesystem access. Serverless won't work.
| Platform | Notes |
|----------|-------|
| **Your laptop + ngrok** | Fastest. Zero setup |
| **Railway** | Persistent containers. $5/mo free credit |
| **Fly.io** | Long-running VMs, persistent volumes |
| **Any VPS** | Full control |
```bash
npm run build
npm start
```
---
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md).
## Security
See [SECURITY.md](SECURITY.md).
## Author
[](https://gitshow.dev/ofershap)
[](https://linkedin.com/in/ofershap)
[](https://github.com/ofershap)
## License
[MIT](LICENSE) © [Ofer Shapira](https://github.com/ofershap)