Update — August 9, 2026: Same Hetzner + Tailscale + Cloudflare Tunnel ingredients, inverted — a Berlin engineer replaced the VPS with a rooted CMF Phone 1 running Termux.
On June 28, 2026, Pieter Levels posted a thread that became one of the year's most-cited agent-dev manifestos — ~1.2M views by mid-July — describing almost a year of coding solely on a VPS with Claude Code. No laptop open. No battery drain. Switch phone or any device. Agents keep going overnight with /goal. Hacky projects start on the server and go live in seconds because the code already sits on production infrastructure.
Two weeks later, Levels extended the same stack for Nomads iOS — Termius from iPhone, Xcode on rented macOS — in our companion VPS + SSH iOS guide. This post is the June 28 manifesto: deploy evolution, live production edits, solo vs team staging, and the Hetzner + Tailscale + Cloudflare checklist Levels shared in replies.
TL;DR — levelsio VPS Production Manifesto
| Question | Answer |
|---|---|
| How long on VPS-only? | ~12 months of Claude Code as primary dev environment (Jun 28, 2026) |
| Why not a laptop? | No lid open / battery drain; any device (Termius, etc.); overnight /goal runs |
| Deploy stage now? | Claude Code on VPS live-edits production — 2 outages (~10 sec each) in a year |
| Solo vs team? | Solo OK on prod; teams need staging server |
| Infra named? | Hetzner VPS, SSH, Tailscale + Cloudflare Tunnels, firewall blocks inbound |
| Industry bet? | Agrees with Theo: ~6 months until most devs move agents off laptops |
| Karpathy angle? | Cloud/Slack agents — server-first orchestration (see Karpathy → Anthropic) |
| Backups? | 3-2-1 — on-site + off-site |
| iOS extension? | July 8 Nomads thread — same VPS brain, macOS hop for Xcode |
What changed — three stages of deploy evolution
Levels did not jump straight to live production edits. His thread sketches a deliberate regression toward speed — each stage traded safety ceremony for seconds saved.
| Stage | Flow | Typical latency | Community reaction |
|---|---|---|---|
| 1 — Classic | Laptop → test local → GitHub → auto-pull deploy on server | ~1 minute | Sensible default most teams still use |
| 2 — Skip local | Lazy on new MBP: skip local Nginx, push straight to prod | ~3 seconds | "People called me crazy" |
| 3 — Agent on prod (now) | Claude Code on VPS edits production live — no push step | Immediate | 2 site-down incidents in 12 months (~10 sec each) |
explainx.ai's read: Stage 3 only works when you treat the VPS as a disposable agent harness host, not sacred infrastructure. Levels' two ten-second outages are the honest error budget — not zero, but acceptable for a solo builder shipping fast. Teams with SLAs should stop at stage 1.5: agent edits staging, human or CI promotes to prod.
The opposite philosophy — local-first, repo upload, no cloud credentials on a shared box — is what Grok Build open source advocates. Both camps agree the laptop is leaving the critical path; they disagree on whether production should be one SSH session away from rm -rf.
Why VPS-only feels like "living in the future"
Levels listed benefits that map cleanly to how long-running agents behave in 2026:
- No laptop open / no battery drain — the harness runs on wall power in a datacenter
- Device agnostic — phone, tablet, hotel PC; SSH is the UI (July iOS thread made Termius explicit)
- Overnight continuity —
/goaland tmux survive your sleep; wake up to a diff, not a dead process - Instant hacky deploys — spin a project on the same machine that serves traffic; no "works on my machine" transfer
- Blast-radius separation — after Codex $HOME deletion reports, a wiped
/home/devon a €5 VPS beats a wiped laptop home directory
That last point is why solo builders tolerate stage 3 live prod edits. The VPS is already the sandbox — until it isn't, because production databases and customer sessions live on the same disk.
Solo on prod vs teams on staging
Levels drew an explicit line in the thread:
| Profile | Levels' recommendation | Why |
|---|---|---|
| Solo indie | Live prod edits acceptable | You own the error budget; 10-second outages are survivable |
| Team / company | Staging server required | Concurrent agents, review gates, and customer trust need promotion workflow |
| Regulated / enterprise | Staging + change control + audit | Live agent shell on prod violates most compliance baselines |
Staging pattern that preserves speed:
[Claude Code on staging VPS] → git push / rsync → [prod VPS auto-pull or blue-green]
Agents get full shell freedom on staging; production receives only reviewed artifacts — aligned with thin prompts, thick artifacts: chat stays thin, git carries truth.
For harness mechanics — permission modes, tool loops, checkpoint restore — see What is an agent harness?.
Hetzner + Tailscale + Cloudflare — setup checklist
Levels' setup reply on the June 28 thread named a concrete stack. This is explainx.ai's expanded checklist — official docs linked where noted; no competitor product URLs.
1. Provision Hetzner VPS
- CX or CPX tier: 2+ vCPU, 4+ GB RAM for comfortable Claude Code + build tools
- Ubuntu 24.04 LTS, single non-root
devuser - Enable Hetzner Cloud Firewall: block all inbound by default
2. SSH hardening
# As root on fresh VPS — create dev user
adduser dev
usermod -aG sudo dev
mkdir -p /home/dev/.ssh && chmod 700 /home/dev/.ssh
# Paste Ed25519 public key → authorized_keys (chmod 600)
# Disable password auth in /etc/ssh/sshd_config
# PasswordAuthentication no
# PermitRootLogin no
sudo systemctl reload sshd
3. Install Claude Code + tmux
# As dev — persist sessions for phone reconnect
sudo apt update && sudo apt install -y git tmux build-essential
tmux new -s code
# Install Claude Code per official Linux docs
# ANTHROPIC_API_KEY in ~/.config/agent/env (chmod 600) — never in prompts
4. Tailscale (private mesh)
- Install Tailscale on the VPS and every client device
- SSH via Tailscale IP or MagicDNS hostname — no public SSH port required
- Prefer Tailscale SSH or key-based auth; disable exposure of port 22 to the public internet
5. Cloudflare Tunnel (optional public HTTPS)
- Run cloudflared on the VPS for web preview or admin UIs
- Tunnel terminates TLS at Cloudflare; origin stays off the public internet
- Pair with Cloudflare Access if you expose anything beyond localhost
6. Firewall summary
| Rule | Action |
|---|---|
| Inbound 0.0.0.0/0 | Deny (Hetzner firewall + ufw) |
| Tailscale interface | Allow SSH, agent ports as needed |
| Cloudflare Tunnel | Outbound-only — no open inbound ports |
7. Agent session hygiene
tmux attach -t code || tmux new -s code
cd ~/your-product
claude # harness runs here; /goal for overnight tasks
# Ctrl-b d to detach — iPhone Termius reconnects to same pane
For OpenCode on a VPS with local models instead of cloud API keys, see run open-source models in OpenCode. For visual session tabs instead of tmux, compare OpenCode Desktop worktrees.
Theo's six-month thesis — agents leave the laptop
Levels agreed with Theo (~Theo — builder and commentator in the agent-dev space): roughly six months until most developers move coding agents off laptops onto servers or cloud sandboxes.
Evidence in the thread and adjacent coverage:
- Karpathy reportedly runs Claude via cloud/Slack — agents operate server-first, not IDE-first (Anthropic pre-training hire)
- Community sandboxes — kayhe's sandbox setups, Phil Freo's Docker dev environments, peetzweg's 160k GitHub contributions from agent-assisted workflows
- Peter Yang asked whether dedicated Claude Code / Codex desktop apps matter if the harness lives on a remote box — the answer trending toward no, SSH + tmux +
/goalis enough UI
explainx.ai tracks the same shift in phone agent guides: the supervisor is mobile; the worker is always-on infrastructure.
Safety, backups, and when NOT to live-edit prod
3-2-1 backups (Levels' recommendation)
| Copy | Where | Purpose |
|---|---|---|
| 3 copies of data | Prod + local/staging snapshot + off-site | Survive single-disk failure |
| 2 different media | NVMe on VPS + object storage | Correlated failure resistance |
| 1 off-site | Hetzner Storage Box, S3-compatible, or git remote | Fire/fraud/ransomware hedge |
Automate daily DB dumps and pre-agent snapshots before destructive refactors. Treat snapshots as cheap rollback — not a substitute for git.
Hook-level guards
Even on a VPS, agents run shell. Layer defenses from Destructive Command Guard:
- Block
rm -rf /,git reset --hard, masschmod - Run harness as unprivileged user — not root
- Never enable full access on hardware you cannot wipe — see Codex $HOME chain
When NOT to live-edit production
Do not let Claude Code touch prod directly when:
- Customers pay for uptime and a 10-second outage has real cost
- Multiple engineers share one VPS without branch isolation or worktrees
- PCI, HIPAA, SOC2, or similar requires segregation of duties
- No staging mirror exists — you cannot diff before traffic hits changes
- Backups are untested — you have never restored from them
- Secrets live in the repo the agent reads —
.env, signing keys, prod DB URLs - Database migrations need rollback plans agents cannot infer
In those cases: staging VPS + git promotion + CI smoke tests. Solo indie? Levels' error budget is instructive — two ten-second incidents in twelve months — not a guarantee for your stack.
Community replies — what builders are actually running
The June 28 thread spawned practical forks without changing the core thesis:
| Voice | Idea | explainx.ai mapping |
|---|---|---|
| Peter Yang | Do we need CC/Codex desktop apps if VPS SSH suffices? | Terminal + /goal + harness guide |
| kayhe | Sandboxed agent environments | Staging VPS = disposable sandbox |
| Phil Freo | Docker dev envs on server | Containerize services; agent edits mounted volumes |
| peetzweg | 160k GH contributions with agent assist | Thick artifacts in git |
Local-first counterweight: Grok Build keeps inference and repo on hardware you own — opposite deployment, same agent loop.
How June 28 and July 8 fit together
| Date | Thread | Role |
|---|---|---|
| Jun 28, 2026 | ~1.2M views — VPS-only year, live prod, deploy evolution | Manifesto (this post) |
| Jul 8, 2026 | ~322.5K views — Termius, MacinCloud, Nomads iOS | iOS extension — read the guide |
Same VPS brain; July adds second SSH hop to macOS for Xcode. Start here for why; read July for how on iPhone.
Summary
June 28, 2026: Pieter Levels documented ~12 months of VPS-only Claude Code — overnight /goal runs, three-stage deploy evolution ending in live production edits, and two ~10-second outages in a year. Solo on prod; teams on staging. Stack: Hetzner, SSH, Tailscale, Cloudflare Tunnels, inbound firewall deny.
explainx.ai's read: this is the server-first agent harness thesis Theo and Karpathy echo — your laptop becomes a terminal remote, not the source of truth. Pair speed with 3-2-1 backups, DCG hooks, and honest when-not-to rules. For Nomads iOS and Termius, continue to the July 8 companion post.
Related on explainx.ai
- CMF Phone 1 Termux home server — VPS replacement (Aug 2026) — skip Hetzner; rooted Android as the box
- Claude Code VPS + SSH — iOS and MacinCloud (Jul 8) — sibling extension: Termius, Xcode hop
- Codex $HOME deletion — full access sandboxing — why disposable VPS beats laptop prod
- /goal command — long-running agents — overnight runs Levels cited
- Grok Build open source — local-first vs cloud — opposite deployment philosophy
- Andrej Karpathy joins Anthropic pre-training — server/cloud agent orchestration context
- Thin prompts, thick artifacts — Thariq — git as promotion artifact
- What is an agent harness? — permission modes and tool loops
- OpenCode Desktop tabs — worktrees — visual parallel to tmux
- Run open-source models in OpenCode on VPS — no cloud API keys on box
- Destructive Command Guard — hook-level shell protection
- Run AI coding agents from your phone — mobile supervisor patterns
Official infra docs: Hetzner Cloud · Tailscale install (Ubuntu) · Cloudflare Tunnel
Context: Pieter Levels X thread, June 28, 2026 (~1.2M views, edited 2:52 PM) · Companion July 8, 2026 Nomads iOS thread (~322.5K views)
Thread view counts, agent CLI behavior, and Hetzner/Tailscale/Cloudflare docs reflect community reports through July 16, 2026. Live production editing carries real outage risk — verify backups and staging before copying a solo-indie error budget. Published June 28, 2026 (story date); last updated July 16, 2026 with July 8 iOS cross-links and Codex safety context.
