by EliranG
Two devs, one Claude. Share a Claude Code session in real-time with E2E encryption.
# Add to your Claude Code skills
git clone https://github.com/EliranG/claude-duetTwo devs. One Claude. Pure vibes.
Share your Claude Code session with a friend — real-time collaboration for AI pair programming.
<img src="docs/assets/demo.gif" alt="claude-duet demo" width="700"> </div>Assumes you already have Claude Code installed.
# Start a duet session (run from your terminal, NOT inside Claude Code)
npx claude-duet host --name Alice
# Your partner joins (copy the command from your terminal)
npx claude-duet join <offer-code> --password abc123
Send the join command to your partner via Slack, Discord, whatever works.
P2P mode (default): After your partner runs the join command, they'll get an answer code to share back with you. Paste it into your terminal — that's it, you're connected directly peer-to-peer via WebRTC. No server needed.
/exit)npx claude-duet host — fresh sessionnpx claude-duet host --continue — resume your most recent Claude Code conversationNo comments yet. Be the first to share your thoughts!
@claude <prompt> sends to ClaudeContext is preserved. Because claude-duet wraps Claude Code in headless mode, your Claude Code conversation history carries over. Use
--continueto pick up where you left off, and after the duet session ends, runclaude --continueto keep going solo. Claude remembers everything — before, during, and after the duet.
Heads up: claude-duet gives your partner the ability to run prompts on your machine through Claude Code. Approval mode is on by default so you review every prompt — but only share sessions with people you trust. Think of it like handing someone a terminal.
A shared terminal session where two people can chat with each other and invoke Claude together using @claude <prompt>.
Just type normally to talk to your partner. Prefix with @claude to send a prompt to Claude. Both of you see everything in real time.
⟩ hey, do you see the bug in auth.ts? ← chat (just between you two)
⟩ @claude look at src/auth.ts and fix the bug ← sent to Claude (both see the response)
That's the whole idea. You decide when to bring Claude in.