Selectively relay Claude Code sessions between machines via Google Drive.
"Relay race baton pass" — hand off session context to the next machine.
Claude Code sessions live in ~/.claude/ and can't move between machines. ccrelay lets you push a specific session from machine A and pull it on machine B, then claude --resume to continue.
- Python 3.10+
- Google Workspace CLI (
gws) - Google Cloud SDK (
gcloud) — for initial setup only
# 1. Install gws
brew install googleworkspace-cli
# 2. Install gcloud (for initial OAuth setup)
brew install --cask google-cloud-sdk
export PATH="/opt/homebrew/share/google-cloud-sdk/bin:$PATH"
# 3. Setup & authenticate (opens browser)
gws auth setup --login
# 4. Add yourself as a test user in Google Cloud Console
# https://console.cloud.google.com/apis/credentials/consent
# → Test users → Add users → your email
# 5. Login with Drive scope
gws auth login -s drive# Push a session to Google Drive (from project directory)
python3 ccrelay.py push
# Pull a session from Google Drive
python3 ccrelay.py pull
# List sessions on Google Drive
python3 ccrelay.py list
# Specify a different project
python3 ccrelay.py push --project cclanes
python3 ccrelay.py list --project cclanesAfter pulling, resume the session:
claude --resume <session-uuid>- push: Bundles session files (
{uuid}.jsonl+subagents/) into atar.gz, uploads to Google Drive underccrelay/{project-path}/ - pull: Downloads
tar.gzfrom Drive, extracts to~/.claude/projects/, creates session index forclaude --resume - list: Shows sessions stored on Drive
Sessions are matched by UUID — re-pushing updates the existing file.
The session picker shows human-readable labels with a 3-tier fallback:
- custom-title — set via
claude --name "description"at session start - First user message — extracted from the JSONL file
- UUID only — if neither is available
Sessions for -Users-woojin-home-cclanes:
[1] 36900364-...
"내 깃 잘 연결 되어있는지 점검."
23.8 KB | 2026-03-21 01:41:55
[2] 9f2fc8f2-...
"이슈 16 진행"
3849.3 KB | 2026-03-20 16:09:08
ccrelay can be used as a Claude Code slash command for a conversational experience.
# From the ccrelay repo directory:
./install-command.shThis copies commands/relay.md to ~/.claude/commands/relay.md.
/relay push # Select and push a session
/relay pull # Select and pull a session, auto-resume
/relay list # List sessions on Drive
/relay push --project cclanes # Push from a specific project
Stored at ~/.config/ccrelay/config.json:
{
"drive_folder_id": "..."
}Auto-created on first run.
python3 -m unittest discover -v135 tests (unit + e2e).