Comment by analogpixel
3 days ago
So this is the 4th+ article I've seen on using a VPN to vibe code on your phone. Would an email interface to Claude code work better?
- Email Claude to start the coding
- Claude emails you with any thing it needs acked on.
- you reply back to emails telling it what to do.
- maybe Claude can run your program and send back screen shots.
seems easier then getting a vpn working. What is the downside to using email?
Claude Code recommended a Telegram bot over email for this very workflow. I've configured my basement RPi to use my "spare tokens" during off hours. At 5PM it messages me to ask if I want the agent to work this evening. If there's no task in the queue I can add one then using the bot. There's also a set of commands to check on status etc. I'm working on the next step to make it a more automated and if there's no specific task, it will create it's own.
> Would an email interface to Claude code work better?
No.
> What is the downside to using email?
Email is clunky and feedback is not immediate.
> seems easier then getting a vpn working.
Tailscale is easy for a dev to get going and very reliable. The author uses the Termius SSH app with Mosh, so it keeps the same SSH session going across device sleeps and disconnects. Tmux is helpful, too.
I do exactly what the author is doing, except I use a $5 Linode VPS, instead of a Mac at home.
He doesn't seem to be credited on this page, but I believe Pieter Levels (@levelsio) actually popularized this scheme. The author documents a nearly identical scheme.
I'm fairly sure that levelsio didn't popularize SSHing into a computer from your phone to run a program. We were all doing it before LLMs.
I agree, I'm failing to see what's novel here... Running an ssh client from a phone has been a thing forever
2 replies →
I did this on my Nokia phone over GPRS in 2005, my program of choice was irssi. We did have a Markov chain bot though.
1 reply →
By “this scheme” I meant combining these several technologies for vibe coding on an iPhone with Claude Code. It’s been a bit of a viral meme on X this week.
1 reply →
New ideas build on existing ideas. He said SSH into a computer to run Claude Code on that computer.
6 replies →
>Email is clunky and feedback is not immediate.
You're vibe coding on a smartphone into an external computer. You already abandoned "Immediate feedback" and "cohesion".
People have all kinds of bad experiences with tech. The kids write off any thing they didn't invent or adopt as inadequate.
It usually comes from the bad experience or poor exposure.
Its hard to hate on them when it comes from a position of limited exposure.
1 reply →
While I don't use the AI part I have a very similar scheme and it is one of the reasons I encourage people to live in the terminal.
The idea is to create a modern "terminal"[0]
My main computer is a Macbook Air, which I carry around with me. It's purpose is for: internet, using Microsoft products when I'm forced to, Zoom/meetings, and SSH (or Mosh).
Most of my work is not done on this Macbook, instead I use it mostly as a terminal. I have a desktop that's sitting behind my TV so that it can be my TV and gaming system (yeah I know Monitor > TV. I'm a filthy casual and I don't care). I have a mouse connected to that computer and instead of using a keyboard I use ydotool (Wayland xdotool) with a shortcut on my iPhone or a script on my android phone or from my Macbook. I don't have to get up from the couch and I don't need a clunky wireless keyboard to clutter my livingroom.
Additionally I have a few pis and an old android phone with Tailscale installed on them. That's come in handy before as a machine's been disconnected and so I couldn't ssh from outside. Also makes it really easy to do a jump if you want to keep a machine off Tailscale or you don't have full control (like my 3D printer).
This setup is very natural feeling if you live in the terminal. I actually started doing this when I started doing HPC work. In a setting like that you're never sitting in front of the computer you're doing most of your work on so it kinda clicked "why was I restricting myself outside work?" Plus there's the side benefits of I always have access to my media, tools, and other stuff. You can do exactly the same thing with a phone but I like having a keyboard and the air is very lightweight and has a long battery life. Any netbook would have done the job tbh.
[0] There's a reason they're called "terminal emulators" rather than just "terminals".
Yeah thin clients [0] make a lot of sense with this kind of workflow. If you only really need text, living in the terminal and browser, it might make sense to use eink for eye comfiness and outdoor readability, something like this hack: https://maxogden.com/kindleberry-wireless. Or one of those eink android tablets.
[0] https://en.wikipedia.org/wiki/Thin_client
2 replies →
> ... I encourage people to live in the terminal.
I've done this for decades. screen or tmux (although I still confuse the keybindings between the two).
When coding on the move (mostly when I had a long commute or was away from the office visit clients) I'd use the Linux console (Ctrl+Alt+F1-F6) rather than X.
Even in the office I had an old amber/green terminal that connected to my Linux desktop via a serial port.
Nowadays I have a 14" USB-C monitor (ASUS Zenscreen) that sits beneath my main monitors which runs a terminal full screen.
If you've got a Mac in the mix, you should be aware that it can use an Apple TV as a monitor, so you can have a wireless extended desktop to anything that takes HDMI.
2 replies →
Similar, except I use a 10 year old surface pro 3. But I have to have a mechanical keyboard, so it's not exactly portable, but I can work from anywhere
I have no interest in LLM, or vibe code. Even though I miss the capabilities of intellij, nvim can fill the roll in the terminal very nicely, except rust analyzer filling up storage fast,
I also have a spare mobile, which I use to wake the computer up. And I have a python script running on it, to shutdown the computer in case of power failure.
After initial hiccups it working pretty well, except cats turning off the router, well how many can use the excuse that I couldn't finish the work because cat controls your network. LoL
How do you type? I get the ydotool usage but do you have a shortcut for each key then on your phone?
1 reply →
Things are trending this way. I call it the PC counter-revolution.
> Tmux is helpful, too.
Yes. tmux is essential. It's great to be able to monitor a session from desktop, or to pick up an existing conversation i'm having on the computer on my phone. In my shell, I have gemini flash wrapper that I use to manage my sessions so I can quickly connect to an existing one, or create a new one with natural language.
> He doesn't seem to be credited on this page, but I believe Pieter Levels (@levelsio) actually popularized this scheme. The author documents a nearly identical scheme.
I've been doing this (tailscale + termius + tmux + ssh) for at least a year and a half. First with Aider in this exact setup, and now with Claude Code and Codex.
So what about setting up a discord server for you and your LLM? Gets the notification benefit of E-mail but retains the immediate-resposne, no? That's how all my UptimeKuma notifs are setup atleast...
I can no longer edit this comment but it wasn’t meant to criticize the author. This is a great post. They are sharing their experiences and more importantly, teaching others.
Sorry if anyone, especially the author, took it this way.
It wouldn't shock me if multiple people came up with this idea independently. I've certainly experimented with it over the last couple years.
I've been using Claude Code in their iOS app (on a Pro account). I just point it at my GitHub repo, and tell it to work on one of the issues I created. It required very little setup beyond what I did for Claude Code CLI.
i've seen that work well on existing codebases, but bootstrapping a codebase that way is like pulling teeth in my past experiences.
so it really sort of falls back to what you're doing with the llm. code maintenance isn't novel development, which isn't polishing.
> So this is the 4th+ article I've seen on using a VPN to vibe code on your phone.
and all of them mentions Tailscale. I would not be surprised if we hear in a few days it got next big fund and all of this is just a preparation for it
a fully open source alternative would be netbird, it's based on wireguard as well, has 0 closed components but lacks some features (like IPv6 or internal CA). https://github.com/netbirdio/netbird
I did this on my own without reading any of these articles - I already had a terminal program on my Android phone and was already using Tailscale for shared projects in Ghidra so... Maybe it's just a path of least resistance.
Right. For a simple setup I think using plain boring Wireguard is the better option. Boring is good.
Tailscale has been a HM darling for a long time, this isn’t very surprising!
Why not use a browser?
OpenCode has a webUI, you can simply host that on your machine at home and VPN to it.
https://opencode.ai/docs/server/ (sadly no screenshots, but its a pretty good GUI, looks like their desktop app)
You need tmux to be able to resume the same session from anywhere, mosh-server to make ssh resilient to sketchy mobile connections, and blink shell https://blink.sh/ to have a high quality iOS shell with a mosh and ssh client built right in to resume at any time.
Far more resilient and performant than a web client.
Well the beauty is the logic lives on the server. The client is just a client.
If it disconnects you just reload the page. It can work just fine in the background because it’s not running on your phone.
Just like you can refresh the ChatGPT website, but OpenCode lives on your pc at home, not OpenAI servers.
2 replies →
> and blink shell https://blink.sh/ to have a high quality iOS shell with a mosh and ssh client built right in to resume at any time
I really like Termius, have you tried it? I think I tested out Blink when I was trying various SSH/shell apps and chose Termius over it, but it’s been so long now that I completely forget why.
EDIT: does Blink give you a local shell as well like vs only SSH/mosh?
tried tmux but realized claude/gemini/codex's --resume works great and have since started using a single chat for all small work projects
From that page:
> The opencode serve command runs a headless HTTP server that exposes an OpenAPI endpoint…
Unless I missed it, there’s no mention of a web UI?
The docs are very behind, there is indeed a full blown webui and with opencode serve you can access it
`opencode web` runs the web ui. It's very good.
Email might work, however if you're a Telegram user you could write a bot that runs on your home system that runs the cli commands on your behalf and then sends the output as a response to you. No need to open up any ports on your router.
I didn’t know until I read this comment, but this is exactly what I want. A telegram bot with Claude on the other side and GitHub app to check out the code
I've replied with this in another comment, but this seems more pertinent ;)
Thats exactly the approach I took with https://github.com/cloud-atlas-ai/miranda, Telegram bot, PR is the human review point, tests + CodeRabbit catch most issues.
Bot intercepts Claude's AskUserQuestion calls via a hook, sends me an inline keyboard, injects my answer back into the session. Claude keeps working, PR still happens—but I can unblock it from my phone in 5 seconds instead of rejecting a PR based on a wrong guess.
That looks really cool I'll have to check it out.
I have custom scripts I use at home to keep track of various personal data, assisted by an LLM. The idea of using Telegram as a way to have a global, quick, and personal interface from my phone or tablet, is perfect and easy to set up.
Claude is making it easier to have bespoke data and dashboards for anything. We're going to make a lot of them, for all reasons. I've also made apps with Django interfaces, but quick, global interfaces are going to become in demand.
I concur, but I also think that Home Assistant could be used as a rock bed to build many of those dashboards easily. They just need to revert the "go all in on UI first configuration" and keep YAML declarations as first-class citizen to let LLMs easily compose dashboards based on user's desires.
I've been using Telegram bot to talk to a Claude SDK agent who talks to my Claudes via tmux commands (all running on a DigitalOcean VPS)
Can you do it with signal?
Cloudflare worker would work, too
I have read of people doing remote coding with clause but through having Claude create pull request. The user then looks through the requests, and either approves or sends it back with edits. Seems like a good way to interact with Claude code, especially once one sets up a test suite and those proposed pull requests have proven not to regress.
Same approach here. PR is the human review point, tests + CodeRabbit catch most issues -> https://github.com/cloud-atlas-ai/miranda.
The gap I wanted to fill: when Claude is genuinely uncertain ("JWT or sessions?" "Breaking change or not?"), it either guesses wrong or punts to the PR description where you can't easily respond.
Built a Telegram bot that intercepts Claude's AskUserQuestion calls via a hook, sends me an inline keyboard, injects my answer back into the session. Claude keeps working, PR still happens—but I can unblock it from my phone in 5 seconds instead of rejecting a PR based on a wrong guess.
Works in tandem with a bunch of other LLM enhancers I've built, they're linked in the README or that repo
This pretty much sounds like my dream vibe coding dashboard - basically a personal Github populated by AI agents I can assign tasks to. Does this exist yet? Or can something like gitea be setup to behave this way?
In terms of issue tracking and agentic "developers", with a mobile focus -
You can connect Linear to Cursor's web agent, which makes Linear issues assignable to the agent directly and kicks off Cursor's take on remote coding agent. You can then guide it further via Cursor's web chat.
If Claude Code on iOS supported Linear MCP (as it does on desktop), you can run a similar issue handoff to agent to issue update workflow, albeit without direct issue assignment to the agent "user". Easy to use labels aka tags for agent assignment tracking, as well.
For my hobby projects, I've been using Linear + agentFlavorOfTheMonth quite happily this way. I imagine Github issues, Asana, whatever could be wired up in place of Linear.
Gastown, by Steve Yeggs is that, via tmux. It's rather opinionated and still in development, but it's worth a look if that's what you're looking for.
2 replies →
This is how I do mobile device coding. Android terminal w. git and gh installed and authenticated. Claude manages the feature branching and PR process; I review the PR in the GitHub mobile app.
Claude Code does a very decent UI, somehow the text mode is much more attractive. As if there is once in a lifetime opportunity to make the console great again.
> What is the downside to using email?
If true to the post, it lacks "real time". Doom scrolling by nature is while chat is async. Refreshing Gmail constantly is not fun.
You don't need a VPN to vibe code on your phone. I've been happily doing thumb-driven development for the last 4 months now using GitHub Copilot on github.com from my phone. It even has real-time chat with copilot as it works. Having your PRs deploy to an environment allows you to check it. I also have playwright tests that record screenshots and traces that get uploaded as artifacts I can check too.
I’ve been doing some of this through a term on my phone, but it honestly sucks. Other interfaces (telegram, web ui, email) are gonna be much better experiences on your phone.
ive tried slack before, but a challenge is how well you can get results returned back in a way where you can actually see what it did and give proper next steps
getting a PR back and being able to put comments on it is fine, but ive had middling success getting qcli at least to actually match the comments with the code that was commented on. i get the sense that there isnt any training with the comments inlined well on a diff:/
it doesnt have to be a vpn though, i was on an oauth webbrowser terminal, and things like coder[0] let you run vscode on the browser, including on your phone browser. there's also happy coder[1] which i tried using to connect between the new builtin android linux vm, and skip all the remote stuff entirely, but the phone would inevitably kill the terminal runbing claude, killing the whole thing. you can currently just run claude from your phone in that, which only has the problem that when the vm crashes, all you can do is wipe the partition.
[0] https://coder.com/ [1] https://happy.engineering/
If setting up a VPN is that difficult for you you may have bigger problems my friend. (I joke). But really I am surprised that a VPN is the part you take issue with.
No syntax highlighting, I do like to review snippets of code. Also the interactive questions / answers during planning would be a pain over email. And what about text wrapping? Headache.
Edit: also setting up an email interface API to Claude Code seems like a lot more work than just setting up a VPN.
I see no downsides. Seems like an actually useful udea.
that would be perfect.
This is genius! The tailscale vpn was stupid easy to setup (I'm a near novice and figured it out). An email interface with progress updates would be even better than doom coding.
I'd rather have an DM interface and each task has its own little icon or face. You still have to set up one of the text servers and also do VPN but if you're already vibe coding that stuff why not make it more pleasant than TUI on your phone?
it looks like some kind marketing push or 'growth hack', just to get some viral thing around which justify why do you extra reason to pay for Claude or Tailscale subscription.
I personally not even convinced that Claude Code any better on average than something like Aider+Gemini 3 or other good model. May be in some specific cases it actually better but in those Aider+'Antropic Model via API' most likely will work too.
So basically back to the chat-interface. You could also replace e-mail with WhatsApp, Telegram, Slack, Mattermost or whichever you prefer, it would be all the same.
Email is funny - maybe as a backup. Prompting is chatting.
Okay, IRC then!
I’d love this, if only for improved diff reviews possible compared to a terminal window! Would also work better for intermittent connectivity.
> What is the downside to using email?
Make sure you authenticate somehow to prevent external abuse.
then run the mail servers locally?
How about leveraging the git email workflow? hey - Claudio submitted a patchset
I code from my phone via GitHub and the Claude actions plugin.
interesting. email. Simple multiple sessions support to reply vs tabbing here there get threaded. clever
with vpn vps if want to interact? how would that work?
E-mail is not secure (sent in plain text)
You're vibe coding. Clearly what you're working on isn't of enough value to secure anyway.
Unless you set up pgp in your email client...
or text messages? Could be more convenient to reply to a text
It's amazing to me this is called coding at all. Who knew all project managers and business analysts coming up with business requirements were actually just coding gods sent from the future.
Inspiring me to do this in Telegram
“Why not Telegram”
all the crypto bros are already there, and maybe some e-commerce
> seems easier then getting a vpn working
it could not possibly be easier to get Tailscale up and running on your mac or linux machine, install tmux and mosh on your mac or linux machine, connect to it with Blink Shell https://blink.sh/ on your iOS device that you've also installed tailscale to, and start vibe-coding from anywhere, on a performant, resilient, instantly resumable terminal connection.
seriously, it's a game-changer
But I already have email.
> Would an email interface to Claude code work better?
This might be the most "when your only tool is a hammer all your problems look like nails" suggestion I've ever read.
Email driven automation isn't a terrible solution to everything - it works very well for support tickets, for example - but it's really lacking in the immediacy required from a serious software development environment.
I'll go further: I think coding on my phone is a fun, neat, idea, and an interesting curiosity, but I don't actually want to do it. There are few situations where I'd feel comfortable getting my phone out to code where I don't also have my laptop with me, and that's going to provide a way better software development experience, so I'm always going to use that for anything serious.
My thoughts went into a different direction: "Maybe I should buy a small tablet so that I can read code properly without carrying a full laptop?"
(Sure, there might be small laptops of similar dimensions ... But as the name "laptop" suggests these are made for a different UX... and they require more effort to turn on/off)