← All posts
Vibe Coding From Your Phone Without VPN Chaos

education

Vibe Coding From Your Phone Without VPN Chaos

May 4, 2026

You want to build with AI. The network keeps getting in the way.

VPN on: Claude works, the bank app locks you out. VPN off: the bank works, ChatGPT says it’s not available in your region. Google Maps thinks you’re in Singapore. Then you pick up the phone and do the same dance there.

At some point you’re not coding anymore. You’re remembering which tunnel is on.

The fix isn’t a better VPN. It’s a different shape of network, and it does two things a VPN can’t:

  1. Rules instead of a switch. Only AI traffic takes the detour. Everything else goes direct, from where you actually are.
  2. One private network for all your devices. Phone, computer and server can reach each other. The public internet can’t reach any of them.

That’s the whole article. The rest is why, and how.

Why a VPN is the wrong tool

A VPN is a switch. On means all of your traffic leaves through a server in another country. Off means none of it does.

flowchart TB
  phone["Your phone<br/>VPN on"]
  vpn["VPN server<br/>in another country"]
  ai["Claude / ChatGPT<br/>works"]
  bank["Bank app<br/>blocked: suspicious location"]
  maps["Maps, local search<br/>wrong country"]
  laptop["Your computer<br/>project, agent, dev server"]

  phone ==>|"everything"| vpn
  vpn --> ai
  vpn --> bank
  vpn --> maps
  phone -.-x|"no way in"| laptop

  classDef good stroke:#4ade80,color:#f5f5f5
  classDef bad stroke:#ef4726,color:#f5f5f5
  class ai good
  class bank,maps,laptop bad

You only needed one kind of traffic to look foreign. The VPN made all of it foreign. So you toggle it all day.

And look at the bottom of that picture. Even with the VPN on, your phone still can’t reach your computer. The VPN connects you outward, to the internet. It does nothing for the thing you actually need when you’re coding away from your desk: getting to your own project.

On iPhone it’s worse. iOS gives you one VPN slot. A commercial VPN and Tailscale can’t run at the same time, so you’re forced to choose.

What we build instead

One small VPS (about $5 a month). Tailscale on the VPS, the computer and the phone. That’s it.

flowchart TB
  subgraph mesh["Your private network (Tailscale)"]
    direction LR
    phone["Phone<br/>Moshi, browser"]
    laptop["Computer<br/>herdr, agents,<br/>dev server"]
    vps["Small VPS<br/>AI exit + Pi-hole"]
    phone <--> laptop
    laptop <--> vps
    phone <--> vps
  end

  ai["Claude / ChatGPT"]
  web["Everything else<br/>bank, maps, local sites"]
  internet["Strangers on<br/>the public internet"]

  vps -->|"rule: AI domains only"| ai
  phone -->|"direct, real location"| web
  laptop --> web
  internet -.-x|"no open ports, nothing to find"| mesh

  classDef good stroke:#4ade80,color:#f5f5f5
  classDef outside stroke:#737373,color:#a3a3a3
  class ai,web good
  class internet outside
  style mesh fill:#141414,stroke:#ef4726,stroke-width:2px,color:#f5f5f5
Your private network
phone + computer + VPS, reachable only by each other
Claude / ChatGPT
direct, real locationBank, maps, local sites
no open portsPublic internet can't get in

Two ideas. Each one fixes half of the chaos.

Idea 1: rules, not a switch

Tailscale has a feature called App Connectors. You give it a short list of domains, and only traffic to those domains goes out through the VPS. Something like this:

claude.ai
claude.com
anthropic.com
chatgpt.com
openai.com

That list is the whole policy. Claude and ChatGPT see a request from the VPS. Your bank sees you in Hong Kong, because for your bank you are in Hong Kong. Maps, local search, delivery apps: all direct, all normal.

Nothing to toggle. Tailscale stays on all day, on every device, and the rules decide per request.

Idea 2: one network, zero public doors

When a device joins Tailscale, it gets a private address that only your other devices can reach. The connections are encrypted (WireGuard) and go straight between your devices wherever possible.

So your phone can open a terminal on your computer. It can open the dev server the agent just started. It can grab a file off the VPS. It works from home, from a café, from the airport, and the computer can sit behind whatever router it’s behind.

What you don’t do matters just as much:

  • No open SSH port on the internet.
  • No dev server published “just for a minute”.
  • No cloud IDE panel with a login page anyone can find.

From the outside, your machines are invisible. There’s no door to knock on. The usual way people give their phone access to their computer is to open a port, and that’s exactly the door bots scan for all day. Here you never open one.

VPN vs proxy vs mesh

VPNProxyTailscale mesh + VPS
Only AI traffic goes abroadNo, everything doesSometimes, if every app is set upYes, by domain rule
Bank and maps keep your real locationNoDepends on the appYes
Phone can reach your computerNoNoYes
Anything exposed to the internetNothing extraNothing extraNothing
Daily effortTogglingPer-app configNone after setup

A VPN is fine when you want the whole device to look like it’s somewhere else. That’s not the problem here. The problem is that your phone, your computer, your agent and your AI accounts all live in different places. Only the mesh puts them in one.

The stack on top of the network

The network is the foundation. It gets your phone to your computer. What you run over it decides whether working from the phone is pleasant or painful. Here’s what I actually use every day:

LayerToolJob
NetworkTailscale + a small VPSOne private network, AI routed by rule
Phone terminalMoshiA terminal that survives Wi-Fi to 5G, and a push when an agent needs you
Agent workspaceherdrEvery agent in one place, with a live state: working, blocked, done
FilesTaildropScreenshots and builds straight to the phone

Each of the two middle layers got its own article, because each one changed how I work.

Moshi is the phone side. It uses Mosh instead of plain SSH, so the session doesn’t die when you walk out of the house or lock the screen. And it hooks into the agents: when one finishes or asks for permission, my phone buzzes. I approve, it keeps going.

herdr is the computer side. It runs all my agents in persistent workspaces, one per project. Close the laptop, the agents keep working. Open Moshi on the phone, attach, and the sidebar shows who’s working and who’s waiting on me.

(Termius, or any SSH app with tmux on the computer, also works. That’s where I started, and it’s fine for a first week. It’s just not what I use anymore: no agent notifications, and every network switch means reconnecting.)

So from the phone you can:

  • see which agent is waiting on you, and answer it
  • restart a dev server and read the logs
  • open the private preview URL and test the prototype on the real screen, before anything is deployed
  • get files and screenshots back through Taildrop

That preview one is the multiplier. Checking a button on mobile no longer means a deploy. The agent runs the site on your computer, you open it on your phone, inside your own network.

For me this easily saves five hours a week. Not in one big block. In small cuts: VPN toggles, wrong-country search results, locked bank apps, walking back to the desk, deploying just to look at something.

It stays boring

I don’t want to sell a setup that needs babysitting. Here’s the full change history of my Tailscale policy:

DateChange
2026-04-15Initial App Connector rules for Claude and ChatGPT
2026-04-19Added claude.com when Anthropic moved traffic off claude.ai

Two changes. Tailscale and Pi-hole on the VPS have been running since April 15, no restarts. That’s the standard: set it up once, fix the one real-world surprise, then forget it exists.

Cost

You stop paying for a VPN. You pay about $5 a month for a VPS that does more than a VPN ever did: it’s your AI exit, it’s always-on infrastructure your agents can use, and it runs Pi-hole, which blocks ads and trackers for every device on the network.

What the workshop covers

We set up, on your devices:

  • a small VPS
  • Tailscale on phone, computer and server
  • App Connector rules for OpenAI and Anthropic
  • Moshi on the phone, with agent notifications
  • herdr on the computer, so agents keep running when you disconnect
  • private preview URLs for local prototypes
  • Taildrop for files
  • optional Pi-hole

You leave with a working environment, not a prompt library. One private network where your phone, computer, server and AI agents behave like one system, and the rest of the internet can’t see any of it.

That’s when vibe coding from your phone stops being a stunt and becomes how you work.

Interested in this?

Learn about AI Education →