CC Relay streams every Claude Code tool call, file edit, and AI conversation turn to your relay server in real time. When a teammate picks up where you left off, Claude already knows the full story. Zero re-explaining. Your infra, forever.
Run ccrelay start in your project directory. The daemon hooks into Claude Code via PreToolUse/PostToolUse and streams every tool call, file change, and AI message to your relay server in real time. Claude Code looks and behaves exactly the same.
$ ccrelay start ✓ Session started · id: xyz123 streaming context to team... [session active · 0 participants]
Nothing changes about how you use Claude Code. Type prompts, review diffs, run tools. Every action auto-syncs: tool calls, file edits, git commits, AI responses. 17 event types streamed live.
$ claude implement rate limiting ✓ Read(router.go) ✓ Write(middleware/rate_limit.go) ✓ 14 tests pass [session:xyz123 · 42 events ↑]
Run ccrelay handoff --to @alice. Alice runs ccrelay attach. Claude on her machine has the full context — 14 conversation turns, 3 files changed, every decision made. She types her first message like Bob never left.
$ ccrelay handoff --to @alice ⚡ 14 conversation turns ⚡ 3 files · 127 lines ⚡ context transferred · 0ms # alice's machine · 0ms later: $ ccrelay attach ✓ Claude already knows.
$ ccrelay attach --session-id=xyz123| CC Relay | Screen share | Loom video | Slack / notes | |
|---|---|---|---|---|
| Context transfer time | 0ms | 30 min+ | send a link | type it out |
| Claude gets full history | ✓ all turns | ✗ | ✗ | ✗ partial |
| Works async | ✓ | ✗ sync only | ✓ | ✓ |
| Self-hosted | ✓ | depends | ✗ | ✗ |
| Cost | $0 forever | varies | $8+/mo | $0 |
| Degrades over time | never | yes | yes | yes |
ccrelay handoff --to @alice · 0ms
git clone https://github.com/xlncbasit/claude-shared-session cd claude-shared-session cp .env.example .env docker compose up -d
Server runs at http://localhost:8080 · Dashboard at /ui/
ccrelay on every machine that will join Claude Code sessions.npm install -g @bytlabs/ccrelay
ccrelay login --server http://your-server:8080 ccrelay init ccrelay start
AGPL v3 · free forever · your infra · github.com/xlncbasit/claude-shared-session
CC Relay was built using CC Relay. The rate limiter, the WebSocket hub, the checkpoint service, the lease system — all built with Claude Code sessions shared across machines using this same daemon. handoffs completed during build: 23 context deaths: 0
AGPL v3. Every line of the relay server, the CLI, and the database migrations is public. Star it to follow the build, fork it to customize, deploy it to own it.
$ open github.com/xlncbasit → star ★ccrelay, run ccrelay start in your project directory, and keep using Claude Code exactly as you do now. The daemon runs in the background watching Claude's output. You type the same prompts, review the same diffs, run the same tools. The only thing that changes: your teammate can pick up exactly where you left off.ccrelay handoff --to @alice, Alice's machine already has the full event stream because it was syncing in real time while you were working. There's no upload step — the context was never lost. Alice runs ccrelay attach and Claude has every conversation turn, every file change, every tool result. The "0ms" is because there's no transfer: only attachment.ccrelay CLI on each developer machine (install via npm install -g @bytlabs/ccrelay or the curl one-liner). Claude Code on each machine. That's it.prompt_submitted event, every response as an assistant_message event, every tool call with its actual inputs and outputs. Claude receives this as operational history, not text to interpret.Restart=on-failure in your systemd unit to handle transient crashes automatically.