← All posts

Claude Code · Mobile

Claude Code from your phone: the Levels.io setup

Pieter Levels runs Claude Code on a VPS with Termius and tmux. Here is what I keep, what I do differently, and why I built TermRover.

Claude Code · MobileWorkflowstmux

Pieter Levels’ workflow is beautifully simple. He is not chasing fancy infrastructure. He uses what works: Termius, SSH, tmux, a VPS, and Claude Code changing the code where it runs.

The code, agent and tmux sessions live on the VPS. His laptop and iPhone are just two windows into the same work. He can close one, open the other and continue. After almost a year, Levels says he no longer needs to keep a laptop open, its battery does not matter, tasks can run overnight, and he can move to his phone without stopping anything.

That fits the way Levels has always built. He keeps his stack deliberately minimal: PHP, SQLite and vanilla JavaScript instead of a fashionable JavaScript framework. Working from a phone follows the same philosophy. Use the simplest tool that gets you back to the work.

Since the arrival of coding agents, working from a phone or on the go also feels less like an emergency fallback and more like a real development workflow. The phone does not need to hold the whole development environment. It just needs to be a good place to steer it.

The work is moving to the phone

What surprised me is how often the phone became my first choice even when I was at home.

I might be on the couch watching Netflix, checking an agent during a TV ad break, doing chores, standing in a queue, or waiting while my girlfriend shops. Sometimes it is somewhere much nicer: on a beach or in front of a fireplace. I can check what one agent changed, switch to another machine, give the next instruction and put the phone away again.

This is not really programming on a tiny screen. The agents do most of the typing. I am reading, deciding, approving and moving between pieces of work.

When the terminal experience is good, it becomes a little addictive. A spare minute is enough to move something forward.

What I do differently

I do not put all my development work on a VPS. I want my more powerful development machines, and I have several of them: a MacBook, a Beelink running Omarchy, an Ubuntu box and a Raspberry Pi. I also have a couple of production hosts, but they run real services. I SSH into those when I need to operate them rather than making them my everyday development environment.

The part I keep from Levels is that the machines own the work. Agents run there inside tmux or Herdr. The phone is a client.

Tailscale connects all my devices, so every machine is reachable by name without exposing SSH to the public internet. From one phone I can move between agents on different development boxes, then open a production host when there is a real reason to be there.

Why I built TermRover

Termius proved that this workflow works, and it remains a capable product. But using tmux with Termius on a phone never felt good enough to me.

In my use, tmux scrollback did not work as I expected out of the box. Tapping the terminal did not bring up the keyboard naturally. Moving between windows and panes took too many keystrokes. Termius lets you customize its keyboard, but I could never make that interface comfortable for my workflow.

For a long time, sending an image to an agent meant leaving the prompt flow and using file transfer. Termius recently added direct image and file pasting, which is good to see. It simply took a while to arrive.

I built TermRover around those small frustrations:

  • Native tmux controls. Common prefix actions are one tap away, and the session picker jumps directly to running sessions.
  • Natural scrolling. TermRover understands tmux mouse mode, shows its state, and can enable it without making you edit .tmux.conf.
  • Natural touch input. Tap the terminal to show the keyboard, or choose double-tap when single taps should go to a terminal UI such as Herdr. TermRover 1.0.8 added that option.
  • Remembered tabs. Reopen the app and the previous host and session tabs are still there, ready to resume. The multiplexer remembers the work; TermRover remembers the way back.
  • Better agent input. Dictate into an editable composer, annotate a screenshot, or attach a video. Media travels over the existing SSH connection and its remote path goes into the prompt.
  • Real Herdr support. Choose Herdr for a host and the session picker, attach and detach actions, and Quick Row follow it. I am improving the integration through daily use.

TermRover should stay a delightful mobile terminal with as little as possible between you and the shell. That is my no-bloat promise.

Why not Claude, Codex or T3 Code on mobile?

A lot of people ask that question. Here is my take.

Claude Code’s Remote Control and the Codex mobile experience can be the easiest way to continue work with their respective agents. If that is all you need, use them.

A terminal is different. It does not care whether the process is Claude Code, Codex, OpenCode, Gemini CLI, or a harness that appears next month. An agent can work in one pane while I open another to inspect logs, run tests, use Git or restart a service. I have the real environment, not only the conversation one provider exposes.

T3 Code is the interesting exception. It supports several agent harnesses, includes a terminal, and may be better if you want an agent control surface with threads, files, diffs and Git actions. TermRover comes from the other direction: the terminal is the control surface, and it needs no extra agent layer on the host.

Mostly, I simply love the terminal. It is already the common interface to every box I own.

Free, focused and quiet

SSH, Mosh, tmux, Herdr, Zellij, unlimited saved hosts, remembered tabs and the mobile controls are free. Free use also includes a daily allowance for voice and media attachments and one active port forward.

Pro removes those limits and unlocks more port forwards and every theme. It is $24.99 per year or $79.99 lifetime, with no monthly plan. Its annual price is lower than the current Termius Pro and Moshi Pro annual prices, and its lifetime price is lower than Moshi’s. The honest comparisons explain where Termius is stronger and why someone may prefer Moshi’s agent inbox.

TermRover does not send agent notifications. Even if checking agents becomes addictive, the app should not manufacture the addiction. It is delightful when I reach for it and silent when I do not. The agent can wait until the ad break, the queue, or the walk on the beach.

The core is free on iPhone and iPad and Android.

P.S. For an embarrassingly long time, I thought the other app was called Terminus. Then I finally paid closer attention: it is actually Termius, without the “n”. If you made the same typo, at least it brought you to the right alternative.