Run Claude Code on AWS EC2. Chrome, VNC, MCP servers, session persistence. ~$0.08/hr, auto-stops when idle.
bash <(curl -sL https://raw.githubusercontent.com/grobomo/claude-portable/main/install.sh)The installer walks you through everything:
- Checks/installs Git, Python, AWS CLI
- Prompts for AWS credentials (if not already configured)
- Clones the repo
- Prompts for your Anthropic API key (from RDSEC portal) or auto-detects OAuth tokens from local Claude Code
- Auto-detects GitHub token from
ghCLI (or prompts) - Adds the
ccccommand to your PATH
Have everything ready? The whole thing takes ~2 minutes.
| Item | Where to get it |
|---|---|
| AWS Access Key | AWS Console > IAM > Security credentials > Create access key |
| Anthropic API key | RDSEC portal > Claude API > Generate Key |
| GitHub token | Already have gh CLI? Auto-detected. Otherwise: github.com/settings/tokens |
ccc --name devFirst launch: ~5-7 min (builds Docker on EC2). After that, stopped instances resume in ~30 sec.
ccc --name dev # Connect (starts if stopped)
ccc list # List instances
ccc vnc # Open Chrome via VNC
ccc scp file.txt # Copy file to instance
ccc stop dev # Stop ($0/hr while stopped)
ccc kill dev # Destroy permanently- Claude Code CLI (latest)
- Google Chrome + VNC
- AWS CLI, GitHub CLI, Python 3
- S3 conversation backup (auto-sync every 60s)
- Auto-shutdown after 30min idle
- Session logging + MCP servers
| Instance | $/hr | 8hr day |
|---|---|---|
| t3.large (default) | ~$0.08 | ~$0.67 |
Auto-stops when idle. Stopped = $0.
The dispatcher serves a real-time fleet monitoring dashboard.
http://<dispatcher-ip>:8082/dashboard
Two tabs:
- Tasks -- feature branches, task tables, submission form, completed tasks
- Infra Health -- per-worker CPU/memory/disk gauges, tasks/hour, error counts
Auto-refreshes every 15 seconds. Configurable via ?refresh=N URL parameter.
| Env var | Default | Description |
|---|---|---|
DISPATCHER_DASHBOARD_PORT |
8082 |
Dashboard HTTP port |
Also available at http://<dispatcher-ip>:8080/dashboard (health port).
bash install.sh uninstallMIT