Documentation

Everything to install CodeBaton and query a teammate's live Claude Code session.

# What it is

CodeBaton lets you query a teammate's live Claude Code session — the one running locally on their own laptop — and get a cited answer in seconds: what they're building, what they decided, what they ruled out. No pasted transcripts, no cloud sandbox, no interrupting them.

It ships two ways: a desktop app (a tray + dashboard, everything bundled) and a CLI (for terminal-first devs). Both run the same engine and expose the same four slash commands inside Claude Code.

# Install

Desktop app (macOS)

Download the .dmg, drag CodeBaton to Applications, and open it. It bundles its own Python runtime — no prerequisites. Apple Silicon, beta, currently unsigned (right-click the app → Open the first time to bypass Gatekeeper).

Download for Mac ↓

CLI (macOS · Linux · Windows)

 pipx install teammate-sync
 teammate-sync init   # GitHub sign-in
 teammate-sync up     # start the background daemon

Then restart Claude Code so it picks up the new hooks, MCP server, and slash commands. Requires pipx and Python 3.11+.

No Anthropic API key needed. Your own Claude Code does the reasoning over a teammate's context — CodeBaton just delivers it.

# First-time setup

teammate-sync init (run once) does all of this:

  • Opens your browser to GitHub OAuth. On the org-access screen, click Grant for the org you want as your workspace.
  • Saves your token to ~/.teammate-sync/auth.json (mode 0600, never synced).
  • Asks which GitHub org is your workspace (teammates are discovered from there).
  • Installs the /connect /ask /shared /disconnect slash commands.
  • Wires session hooks into ~/.claude/settings.json and registers the MCP server.
In the desktop app, sign-in currently opens a Terminal to run init (browser OAuth + a one-time org pick). A fully in-app sign-in is on the way.

# The four commands

Type these inside any Claude Code session.

/connect <teammate>Share this session with a teammate. They /connect you back — mutual means trusted. Per session, you choose what's visible. No args lists workspace status.
/ask <teammate> <question>Query their live session in plain language. Cited answer in seconds. Comma-separate handles to ask several at once.
/sharedAudit what you're sharing right now, and with whom.
/disconnect [<teammate>]No args wipes every connection. Pass a handle to remove just that one.

Sharing is per session: every new Claude Code session starts un-shared, even with people you're connected to. Re-run /connect <teammate> in each session you want visible. When a session ends, its share auto-revokes.

# Daemon & app

A small background daemon syncs only the sessions you've connected. Manage it from the CLI:

teammate-sync upStart the daemon in the background (no terminal to keep open).
teammate-sync downStop it.
teammate-sync logs -fTail the daemon log.
teammate-sync upgradeOne-shot: stop → upgrade → refresh commands → restart.
teammate-sync dashboardOpen the desktop dashboard window (connections, sessions, activity, settings).
teammate-sync appmacOS menu-bar tray. Add --install-launchagent to auto-start at login.

The desktop .dmg bundles the tray + dashboard, so you don't run these by hand. The CLI path uses up/down and is fully headless unless you opt into app.

# Team setup

Everyone installs CodeBaton and signs in to the same GitHub org. To query a teammate, both of you connect:

# on your laptop, in Claude Code
 /connect dario
# on dario's laptop
 /connect <your-handle>
# now either side can ask
 /ask dario what did you decide about pagination?

Mutual /connect auto-accepts — no separate approval step. If only one side connects, the other sees a pending invite.

# Privacy

  • Default: nothing is shared. The daemon runs but stays idle until you /connect.
  • Per-session, per-recipient. You opt one session in, to specific people you name. Other sessions never leave your machine.
  • Org-scoped. Only members of your GitHub org can connect at all.
  • Auto-revoke. Ending the session — or running /disconnect — wipes the shared copy immediately.
  • Token stays local. Your GitHub token lives in ~/.teammate-sync/auth.json and is never uploaded.

# Troubleshooting

Slash commands don't appear

Fully restart Claude Code — custom commands load at session start.

/ask returns "not found" or empty

The other side's daemon may not be uploading. Check teammate-sync logs on their machine. Also confirm they ran /connect <your-handle> in the session you're trying to read — trust persists, but sharing is per session.

/mcp shows "Failed to connect"

The MCP entry points at a binary that's moved (e.g. after a reinstall). Re-run teammate-sync init.

Daemon won't stay running

teammate-sync logs for the error, then teammate-sync down && teammate-sync up. First request after idle can be slow (backend cold-start, ~5–10s).

The app shows the "Apple cannot verify" warning

The beta build is unsigned. Right-click the app → Open once to allow it.

# Uninstall

 teammate-sync down
 pipx uninstall teammate-sync
 claude mcp remove teammate-sync --scope user
 rm -rf ~/.teammate-sync
# also remove the slash commands + the hooks block in ~/.claude/settings.json