A reverse proxy for sharing a single authenticated Claude Code session across multiple devices on a Tailscale network.
docker compose up -d minio- S3 API:
localhost:9000 - Web Console:
localhost:9001(login:minioadmin/minioadmin)
Custom credentials:
MINIO_ROOT_USER=myadmin MINIO_ROOT_PASSWORD=mypassword docker compose up -d minioOr use a .env file:
MINIO_ROOT_USER=myadmin
MINIO_ROOT_PASSWORD=mypassworddocker build -t proxy-claw .
docker run -d \
--name proxy-claw \
-p 9191:9191 \
-e MINIO_ENDPOINT=host.containers.internal:9000 \
-e MINIO_ACCESS_KEY=minioadmin \
-e MINIO_SECRET_KEY=minioadmin \
-v ~/.claude:/root/.claude:ro \
proxy-claw --port 9191 --secret YOUR_SECRETOn Docker (not Podman), use
host.docker.internalinstead ofhost.containers.internal. On Linux without Podman/Docker Desktop, use--network hostor the actual host IP.
pip install -r requirements.txt
export MINIO_ENDPOINT=localhost:9000
export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=minioadmin
python server.py --port 9191 --secret YOUR_SECRETOn each Claude Code device:
export ANTHROPIC_BASE_URL="http://<proxy-host>:9191"
export ANTHROPIC_API_KEY="YOUR_SECRET" # or a key created from the dashboard
claudeOpen http://<proxy-host>:9191/dashboard
The dashboard has four tabs:
- Dashboard — live stats, active streams, token status, recent requests, connected clients
- Request Logs — browse stored requests by date, click any row to view full request/response body and headers
- API Keys — create, disable, and delete proxy API keys. New keys are shown once on creation — copy immediately
- Storage — MinIO connection status and per-bucket usage
Clients authenticate with either the --secret value or any active API key created from the dashboard.
| Variable | Default | Description |
|---|---|---|
MINIO_ENDPOINT |
minio:9000 |
MinIO S3 API address |
MINIO_ACCESS_KEY |
minioadmin |
MinIO access key |
MINIO_SECRET_KEY |
minioadmin |
MinIO secret key |
MINIO_SECURE |
false |
Use TLS for MinIO connection |
python server.py [OPTIONS]
--port PORT Listen port (default: 9191)
--secret SECRET Shared secret for proxy auth (optional)
--max-body BYTES Max request body in bytes (default: 10MB)
Created automatically on startup:
| Bucket | Purpose |
|---|---|
proxy-logs |
Request/response pairs organized by date |
proxy-keys |
API key storage |
proxy-config |
Reserved for future use |
docker run -d \
--name proxy-claw \
-p 9191:9191 \
-e MINIO_ENDPOINT=host.containers.internal:9000 \
-e MINIO_ACCESS_KEY=minioadmin \
-e MINIO_SECRET_KEY=minioadmin \
-v ~/.claude:/root/.claude:ro \
ghcr.io/10xgrace/proxy-claw:latest --port 9191MIT