> 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.
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.
I started doing this before it was viral - it's basically obvious and I'm sure many people simultaneously did it since it was so obvious and easy to do - I even have the same tech combination.
Yeah, I've never read anything levelsio wrote and I sshed into my computer to run Claude Code five minutes after I installed Claude Code and had to leave the house for a bit.
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.
Has the refresh rate on eink devices reached like 30-60fps?
It definitely looks cool and I might give it a try, but I do love my dark mode and color syntax. My understanding is that color on eink is pretty limited. It also isn't worth it to me if I'm going to be spending $500+ on a "monitor". But I'd definitely love if things moved in that direction.
Honestly if Apple wasn't so insistent on making the iPad not a general purpose computer I'd use that as my thin client.
They are still not great for high refresh rate, but I have a boox note air4C that can do fast-enough for video. It gets some ghosting (although it should be minimal for typing as you are fully changing from white to $color, backspaces might be a problem though). You will need a full refresh when scrolling but that is fast enough.
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.
Are there any benefits besides a nice GUI? I'm fairly comfortable with my linux desktop as an interface. TBH the most frustrating part is the iPhone shortcut app I made which I strongly believe is less about me and more than Apple is actively trying to be annoying (I recently had an update that required a minor change because the dictionaries in Shortcuts is idiotic)
Also, I heard that you can install Tailscale on it[0], so that can act as a gateway which is nice.
It's something to be aware of if you already have the mac. It's nice to be able to have people over and they can share what's on their laptop with everybody without everybody having to huddle around one machine.
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
For my iPhone I made a dumb script using the Shortcuts app. It's a horrendous app that combines all the worst parts of a scripting language with all the worst parts of a visual language. But I'm not sure how else to do it besides learning swift (I'm not confident I made the right decision btw. It is that bad)
So I just press a button from my quick select and then it'll send my text followed by a carriage return (depending on which option I use).
On Android I did something very similar using termux but it only took 2 minutes to write and is much easier to understand and use
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.
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.
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.
> 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.
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.
yes but I've never seen a terminal interface embedded in a browser that is as good as a native terminal app interface, and blink shell has been well worth the upfront cost to me (way better than Termius, which was suggested in the writeup)
I usually pair Claude with tmux, so you can move the cursor around the Claude output and copy, scroll, etc. that buffer is definitely the way to go. And within the chat box, Claude respects known eMacs/GNU shortcuts for cursor movement, so I like that more than Copilot.
It's not. When using Claude Code (or similiar)you get a lot of problems in every shell about flickering, not being able to copy, not being able to move text cursor and so on. It's bad UX
If using TMUX you can "ctrl + b [" to enter copy mode and then you can move cursor as you wish. I wrote about this stuff too on https://mjqs.blog/meta/
> 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?
Yes, Blink gives you a local shell with some tools (not extendable), including Vim. It is even possible to mount a remote repository (we call it a Bookmark), and edit locally.
Give it another chance if you want to, I’m always happy to help.
Is Blink’s shell different from something like iSH which gives you a local shell inside an Alpine Linux VM? Is it some kind of native iOS shell or is it also a Linux VM of some kind?
Yes, but you can't leave it running and working on something and then resume from wherever that left off that way from wherever you are.
Or are you saying you can resume a conversation that is still open in another terminal? What happens to the old terminal if you accidentally type into it? Will it overwrite the conversation?
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.
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.
Steve Yegge is building awesome things in this space, but I've found them too heavy, started using bd when it was small, but now its trying to do too much IMO, so made a clone, tailored to my use case -> https://github.com/cloud-atlas-ai/ba
durch - just starred this repo! Looking forward to testing it out as I learn how to build with multiple agents.
I'm just starting out with building with Claude - after a friend made this post he sent me a Steve Yegge interview (https://m.youtube.com/watch?v=zuJyJP517Uw). Absolutely loved it. I come from an electrical/nuclear engineering background - Yegge reminds me of the cool senior engineer who's young at heart and open to change.
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.
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
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.
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 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.
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.
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.
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.
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.
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.
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'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?
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.
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.
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.
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.
> 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)
- 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?