claude-colab
claude-colab
Give Claude Code GPU access via Google Colab.
AI coding agents can read files, run bash, and edit code — but they have zero GPU access. claude-colab bridges that gap using Colab's free T4 GPU.
How It Works
Colab (T4 GPU) Your Mac / PC
┌─────────────────────────┐ ┌──────────────────────┐
│ Flask API │ │ claude-colab CLI │
│ /exec, /python, │◄── HTTPS ──────►│ or │
│ /upload, /download │ (cloudflared) │ MCP Server │
│ │ E2E encrypted │ (Claude Code tools) │
│ Bearer token + Fernet │ │ │
└─────────────────────────┘ └──────────────────────┘Open one Colab notebook, hit "Run All"
Copy the connection string
Claude Code gains GPU access
Quick Start
Install
pip install claude-colabStart the Colab server
Open notebooks/claude_colab_server.ipynb in Google Colab. Set runtime to T4 GPU. Run all cells. Copy the connection string.
Connect
claude-colab connect cc://TOKEN:KEY@your-tunnel.trycloudflare.comUse it
claude-colab status # GPU info
claude-colab exec "nvidia-smi" # Run shell commands
claude-colab python -c "import torch; print(torch.cuda.get_device_name(0))"
claude-colab upload model.py /content/model.py
claude-colab download /content/results.csv ./results.csvMCP Server (Claude Code Integration)
Add to ~/.claude/settings.json:
{
"mcpServers": {
"claude-colab": {
"command": "claude-colab",
"args": ["mcp-serve"]
}
}
}Claude Code now has 5 GPU tools:
Tool | What it does |
| GPU info, VRAM, disk, uptime |
| Run shell commands |
| Execute Python code |
| Upload files to Colab |
| Download files from Colab |
Example
You: "Benchmark this model on the GPU"
Claude:
1. colab_status → Tesla T4, 15GB VRAM
2. colab_upload → sends model.py
3. colab_exec → "pip install torch transformers"
4. colab_exec → "python model.py"
5. colab_download → fetches results.jsonConnection Safety
The connection string contains your auth token and encryption key. Three ways to connect:
# Direct (convenient, visible in shell history)
claude-colab connect cc://TOKEN:KEY@host
# Interactive prompt (nothing in history)
claude-colab connect
# Pipe from clipboard (nothing in ps aux or history)
pbpaste | claude-colab connect -Security
E2E Encryption
All request and response bodies are encrypted with Fernet (AES-128-CBC + HMAC-SHA256). The encryption key is generated per Colab session and is separate from the bearer token.
Actor | Can see | Cannot see |
Random user | Nothing (no token) | Everything |
Cloudflare | URL paths, timing, token | Request/response bodies |
Google (Colab) | Everything on the VM | Your local files |
What we don't protect against
Google seeing data on the Colab VM — it's their hardware
Arbitrary code execution on Colab — intentional, it's your session
Local machine compromise exposing
~/.claude-colab.json
Limitations
Session timeout: Free Colab dies after 90min idle / 12hr max. You'll need to restart and reconnect.
No streaming: Long-running commands return nothing until completion. Redirect to file:
colab_exec "python train.py > output.log 2>&1"50MB file limit: For larger files, use
colab_execwithwgetorgdown.No persistent state: Each
/pythoncall runs in a fresh namespace.
License
MIT