Live on PyPI: pipx install teammate-sync

PASS THE
BATON
ON YOUR
CODE.

Ask your teammate's Claude, not your teammate. Type a question, get their answer back in seconds, without pinging them or touching their machine. Read-only, and only if they allow it.

Install Now View on GitHub
Sam & Dario, teammates in the same org, on the same project
dario · claude-code
/connect sam
Request sent. Waiting for Sam to accept.
Sam accepted. He can ask the sessions you share. Read-only, and only what you allow.
Claude, rewrite the auth middleware...
sam · claude-code
/connect dario
Request sent. Waiting for dario to accept.
dario accepted. You can now /ask the sessions they share with you.
/ask dario what library did you pick for pagination?
He went with cursor-based pagination, because it "needed to handle high-volume writes on the feed table."

@dario · live (feed-service)
01 / The Status Quo

The Sync Problem

You and a teammate are both using Claude Code on the same project, on your own different laptops.

You need to know what they decided about the database schema, which file they just touched, or why they picked one library over another. Today, you have two bad options:

Option A: The Wait

Ping Slack & Wait

You: Hey, did you update the user schema?
Them (2 hrs later): Oh yeah, added a JSONB col for prefs. Claude did it, lemme find the prompt...
Option B: The Bloat

Paste the whole thread

Them: here’s the whole thread 👇
you: how should we paginate the feed?
claude: offset is simplest, but…
you: just do offset
claude: ok, though under load you may see dupes…
… 300+ more lines pasted …
Scroll it for ten minutes, or paste it into your own Claude until it chokes.
02 / Real World

"Why not just push to GitHub?"

T-0:90 MIN

Dario is debugging a recursive trigger in a Salesforce migration. He's been at it for 90 minutes. He hasn't pushed anything.

T-0:00 MIN

Sam hits the exact same problem in a related module.

Without CodeBaton, there is nothing on GitHub. Sam's choices are to ping Slack, wait for a PR that might take hours, or reverse-engineer the problem himself.

WITH CODEBATON
/ask dario what are you seeing on the recursive trigger right now?
Dario is currently dealing with a recursive update on the AccountTrigger.

His Claude instance just generated this SOQL query to bypass it:
SELECT Id FROM Account WHERE LastModifiedDate < :Trigger.new[0].LastModifiedDate

@dario · live (sf-migration) · answered 94s ago. Never hit GitHub.

1

Reasoning never reaches a commit.

The dead-ends, the architectural debates with Claude, the rejected libraries, all lost.

2

Commits show decisions, not intent.

A commit tells you a line changed. Live context tells you *why* Claude suggested changing it.

3

PR code is sanitized.

By the time code is reviewed, the messy context of creation is wiped clean.

GitHub captures the finished work that survives review.
CodeBaton captures the live reasoning that produced it.

03 / Setup

Install

Option 1: CLI (macOS/Linux/Windows)
$pipx install teammate-sync
$teammate-sync init
$teammate-sync up

Requires pipx + Python 3.11+

Option 2: Desktop App

Download for Mac (Apple Silicon). Drag to Applications. Sign in.

Download for Apple Silicon (.dmg)
04 / Flow

How it Works

1

Install & Authenticate

Via pipx or desktop app. Uses GitHub OAuth to verify organization membership.

2

Start Daemon

Runs quietly in the background. Your full sessions stay on your machine. Your own Claude reads them there to answer. Only the question and the answer travel.

3

Connect Teammate

Type /connect dario, you both confirm once. No content syncs; it just unlocks asking each other.

4

Query Context

Type /ask sam <question>, pick which shared session to ask, and their Claude answers. You get just the answer, cited.

05 / FAQ

FAQ

Is this a cloud agent?

No. The work is done by your teammate's own Claude Code, already running on their laptop. CodeBaton just carries the question over and brings the answer back.

Whose machine runs the answer?

Theirs. When you ask, their Claude reads their local session and answers, on their machine, using their own Claude account. That is why sharing is off until they turn it on.

What actually leaves the machine?

The question and the answer. The full session transcript never leaves. It stays on the owner's laptop and their Claude reads it right there.

Do you store anything on a server?

There is a small broker we host that passes questions and answers between machines. It does not store your transcripts. It does keep short summaries of decisions people choose to save, so you can still ask when a teammate is offline.

What about secrets in a session?

Queries are read-only and blocked from reading env and secret files. The answer is written from the rest of the session, so share a session the way you would screen-share it. Deeper redaction is on the roadmap.

Does asking interrupt them?

Never. It is read-only and async. No ping, their session untouched, their context window unaffected.