ai · deploy · tutorial
How to Ship to a VPS From Claude Code (Phone Included)
Prompt on your couch, deploy to a $5 VPS: Tailscale SSH, one git push, zero-downtime reload. The exact mobile-to-prod loop.

Your agent lives on your laptop, your users live elsewhere
The levelsio phone-shipping post broke brains for a reason: half his coding now happens from a phone, Termius open to a VPS, prompting Claude Code "like a goon." The replies are full of founders who tried it on normal codebases and ate it — one hallucinated migration, one leaked secret, one 2am checkout outage with no laptop in reach. The gap isn't the phone or the agent.
It's guardrails: vibe-coded apps break live users (why mobile shipping terrifies founders), while convention-locked ones absorb phone prompts safely.
The loop: couch → VPS → users in four moves
1. One private pipe. Tailscale on the VPS + phone gives you a WireGuard mesh with a stable 100.x.y.z address. Close port 22 to the public internet entirely — SSH only rides the mesh. Termius on iOS connects in one tap. No bastion, no key juggling on a touchscreen.
2. Claude Code lives on the server. SSH in once, run the agent there — not on the phone, not on the laptop. The repo it sees is the production checkout; context stays warm between sessions; big compiles use server RAM instead of dying on mobile. Prompt from the couch like everyone jokes about — the work happens on hardware that can take it.
3. Guardrails do the worrying. This is the BoringPush shape, and it's why the loop is safe from a phone: additive-only migrations (columns can never drop), thin routes (about 40 lines, access check first), a zero-warning lint gate before anything leaves. The agent can implement entire features end-to-end because the repo's written rules fence every decision that matters. Ship from anywhere on this Next.js stack — the rules travel, so the session can't go feral.
4. One push, zero downtime. When the agent says done (and the gate agrees):
Run bp deploy. It checks your code, builds, ships and waits for a health check before it finishes. Users keep getting pages while the new version comes up, and you are still on the couch.
Rollback is one command from the same phone (bp rollback --yes), and the Telegram/Discord ping tells you before users do. That closed loop — prompt, gate, push, ping, rollback — is what turns "coding from my phone" from a stunt into a daily driver, exactly as the mobile shippers describe it.
The Tuesday test drive: earn trust in one day
Don't migrate your life on day one — run the loop on something harmless:
- Morning, couch: Tailscale up, Termius connected,
tailscale statusshows the VPS on its100.x.y.z. Close port 22 publicly (ufw delete allow OpenSSH, allowtailscale0only). The box is now invisible to scanners and reachable from your pocket. - Afternoon, real fix: pick one tiny production annoyance — a typo, a pricing tweak, a missing index. Prompt it, watch the gate run,
git push production main, confirm the zero-downtime reload inpm2 logs. Time it. Most founders report under ten minutes door to door. - Evening, fire drill: break something on purpose in a scratch branch — bad import, dropped column attempt. Watch the gate refuse it: lint fails, additive-migration rule blocks the drop, push never leaves. That refusal is the whole product. When you've seen the guardrails catch a live grenade, the phone stops feeling reckless and starts feeling like the fastest terminal you own.
One day, one small fix, one staged failure. After that the debate ends and the habit starts.
What the loop costs (the whole budget)
The entire mobile-to-prod loop adds exactly one bill to your life: the $5/mo VPS, and only if you don't already have one. Tailscale personal mesh is free, Termius has a free tier that covers SSH, your existing Claude subscription is the agent, and every script in this post — mesh setup, zero-downtime deploys, incident pings, nightly backups — ships inside the BoringPush repo you buy once.
No per-seat deploy tax, no CI minutes, no "phone tier." The cheapest production workflow in this price range is also the one that works from a hammock.
FAQ
Do I need Termius specifically?
No — any Tailscale SSH client works (Blink, Prompt, plain ssh from a laptop). Termius wins on iOS for key handling and snippet shortcuts for the deploy commands.
What if the agent breaks prod while I'm away from my laptop?
Three nets: the pre-push gate blocks bad code locally, PM2 keeps the old process until the new one passes, and the rollback is one pasted command. Worst case is a revert, not an outage.
Does this work over hotel/cafe wifi?
Yes — Tailscale punches a WireGuard tunnel out; you never expose inbound ports, and the mesh IP doesn't care what network you're on.
Why run Claude Code on the VPS instead of my Mac?
Warm production context, server-grade RAM for builds, and zero "works on my machine" drift — the agent edits the exact tree that deploys. Your Mac stays a thin client.
Is phone deployment actually faster, or just cool?
Both, for small fixes: support ticket → prompt → push → ping in minutes, no laptop boot, no context switch. For deep architecture work, the desk still wins — the loop doesn't care where you sit.
+ all the boring stuff (analytics, auth, SQLite ↔ Supabase, full marketplace, webhooks)
Command from your phone.
Built so autonomous AI agents build what you want without breaking what's already paying you.
- Built-in analytics — cookie-free mode, $0 forever, no PostHog bill
- SQLite ↔ Supabase: one setting, same field names
- Full digital marketplace & feedback boards included
- 3 payment rails: Stripe, LemonSqueezy & Dodo Payments
- Agent fences: lint gate, read-only data access, auto-rollback
- Ship from your phone via SSH & WireGuard/Tailscale in under a minute
$199
Get BoringPushOne-time payment · Lifetime updates · Unlimited projects.
Keep reading


