- TAILSCALE_KEY: from tailscale.com/admin/settings/keys
January 4, 2026 · View on GitHub
Always-on AI agent orchestration in the cloud.
Deploy Gas Town to a VPS. Access from your phone via Tailscale. ~\$4/month.
The Problem
You want AI agents working for you 24/7, but:
- Laptop dependency — Agents die when you close your laptop
- No mobile access — Can't check on agents from your phone
- Complex setups — Docker, Kubernetes, container orchestration overkill
The Solution
gastown-remote gives you an always-on AI workshop in the cloud. SSH in from anywhere, pick up where you left off, and let your agents keep running while you sleep.
┌─────────────────────────────────────────────────────────────────┐
│ YOUR PHONE (Tailscale) │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ HETZNER VPS (~\$4/mo) │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────┐ │ │
│ │ │ tmux: main │ │ │
│ │ │ ├── Claude Code (your AI assistant) │ │ │
│ │ │ └── Gas Town (gt/bd - agent orchestration) │ │ │
│ │ └─────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ssh gastown@your-server → tmux attach → claude │ │
│ └───────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
Three Ways to Deploy
Choose what works for you. All three get you to the same destination.
| Method | Best For | Requirements |
|---|---|---|
| Web Wizard | Everyone, phone-friendly | Just a browser |
| GitHub Actions | Automated deploys | GitHub account |
| CLI Script | Power users | Laptop + terminal |
Web Wizard
No laptop needed. No tokens shared with us.
The wizard generates a cloud-init config entirely in your browser. You paste it into Hetzner's console. Your credentials never touch our servers.
→ gastown.dev ←
or run locally: cd web && npm run dev
How It Works
- Enter your details — Server name + Tailscale auth key
- Copy the config — Generated client-side in your browser
- Paste into Hetzner — Cloud config field when creating server
- Wait 3-5 minutes — Server boots, installs everything, joins Tailscale
- Connect —
ssh gastown@your-server
GitHub Actions
Phone-friendly via GitHub mobile app.
Fork once, add secrets, trigger deployments from anywhere.
Setup
# 1. Fork this repo
gh repo fork numman-ali/gastown-remote --clone=false
# 2. Add secrets (Settings → Secrets → Actions)
# - HETZNER_TOKEN: from console.hetzner.cloud
# - TAILSCALE_KEY: from tailscale.com/admin/settings/keys
# 3. Trigger workflow (Actions → "Deploy Gas Town" → Run workflow)
From Your Phone
- Open GitHub app
- Navigate to your fork
- Actions → Deploy Gas Town → Run workflow
- Wait for completion, connect via Tailscale
CLI Script
Full control for power users.
# Clone
git clone https://github.com/numman-ali/gastown-remote.git
cd gastown-remote
# Deploy
./deploy/hetzner/deploy.sh \
--tailscale-key tskey-auth-xxxxx \
--hetzner-token xxxxx
# Connect (after ~3 minutes)
ssh gastown@gastown
Options
./deploy/hetzner/deploy.sh \
--name my-gastown \ # Tailscale hostname (default: gastown)
--type cx32 \ # 8GB RAM (default: cx22 / 4GB)
--location ash \ # US East (default: nbg1 / Germany)
--tailscale-key xxx \
--hetzner-token xxx
First-Time Setup
After your server is running, authenticate your tools:
# Connect
ssh gastown@gastown
# Claude Code (one-time)
claude
> /login
# Follow browser link, paste code
# GitHub CLI (one-time)
gh auth login
# Initialize Gas Town
gt install ~/gt
# Add your first project
gt rig add myproject https://github.com/you/repo.git
What You Get
| Component | Purpose |
|---|---|
| Tailscale | Secure access from anywhere (phone, laptop, tablet) |
| tmux | Persistent sessions that survive disconnects |
| Claude Code | AI coding assistant |
| Gas Town (gt/bd) | Agent orchestration framework |
| systemd | Auto-restart on reboot |
Stack
Ubuntu 24.04 LTS
├── tailscaled ← Secure networking
├── systemd
│ └── gastown-tmux ← Persistent tmux session
├── ~/gt/ ← Gas Town workspace
│ └── <your-rigs>/ ← Your projects
└── ~/.claude/ ← Claude authentication
Mobile Access
Recommended Apps
| Platform | App | Notes |
|---|---|---|
| iOS | Blink Shell | Best iOS terminal, Tailscale built-in |
| iOS | Termius | Free tier works well |
| Android | Termux | Install Tailscale via F-Droid |
| Android | JuiceSSH | Simple, works with Tailscale |
tmux Tips
Config is optimized for mobile:
- Prefix:
Ctrl-a(easier thanCtrl-bon phone keyboards) - Mouse: Enabled
- Scrollback: 50,000 lines
Cost
| Provider | Plan | Specs | Monthly |
|---|---|---|---|
| Hetzner | CX22 | 2 vCPU, 4GB RAM, 40GB SSD | ~$4 |
| Hetzner | CX32 | 4 vCPU, 8GB RAM, 80GB SSD | ~$8 |
| DigitalOcean | Basic | 1 vCPU, 2GB RAM, 50GB SSD | ~$12 |
CX22 is plenty for most Gas Town workloads.
Bring Your Own VPS
Run on any Ubuntu 22.04+ server:
# SSH to your VPS
ssh root@your-server
# Create user
adduser gastown
usermod -aG sudo gastown
su - gastown
# Install Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up --ssh
# Clone and install
git clone https://github.com/numman-ali/gastown-remote.git
./gastown-remote/install.sh
Updates
# Pull latest
cd ~/gastown-remote && git pull
# Re-run install (idempotent)
./install.sh
# Update Gas Town
go install github.com/steveyegge/gastown/cmd/gt@latest
go install github.com/steveyegge/beads/cmd/bd@latest
Troubleshooting
Can't connect via Tailscale
# Check status (via Hetzner console)
tailscale status
# Re-authenticate
sudo tailscale up --ssh --reset
tmux session lost
sudo systemctl status gastown-tmux
sudo systemctl restart gastown-tmux
Claude Code auth issues
claude
> /logout
> /login
Project Structure
gastown-remote/
├── install.sh # Main install script (runs on VPS)
├── deploy/
│ └── hetzner/
│ ├── deploy.sh # CLI deploy script
│ └── cloud-init.yml # Server bootstrap config
├── .github/
│ └── workflows/
│ └── deploy.yml # GitHub Actions workflow
├── web/ # Web wizard (Next.js)
│ ├── app/
│ │ ├── page.tsx # Landing page
│ │ └── wizard/page.tsx # Config generator
│ └── lib/
│ └── generate-config.ts # Cloud-init generator
└── scripts/
├── attach.sh # tmux attach helper
└── setup-auth.sh # First-time auth guide
Philosophy
No Docker. No Kubernetes. No complexity.
Just a VPS with tmux and systemd. Simple infrastructure that you can understand, debug, and trust. Your AI agents run in persistent sessions that survive disconnects, reboots, and network hiccups.
The goal is zero friction between you and your agents. SSH in, you're there. Close your phone, they keep working.
Related Projects
- Gas Town — The agent orchestration framework
- n-skills — Universal AI agent skills marketplace
- cc-mirror — Multi-provider Claude Code variants
Contributing
Issues and PRs welcome. This project is open source and free to use.
See CONTRIBUTING.md for guidelines.
License
MIT — see LICENSE
Built by @numman-ali · @nummanali