---
title: "My whole dev setup fits in my pocket"
description: "My Claude Code sessions run on the server, so with Mosh and tmux I can check in and answer a permission prompt from my phone."
url: "https://michael.zazon.us/notes/my-whole-dev-setup-fits-in-my-pocket"
published: "2026-09-24T12:00:00-04:00"
kind: "build-log"
subject: "tools"
tags: ["claude","dotfiles"]
---
The sessions run on the server anyway. With mosh and tmux I can check in and answer a permission prompt from anywhere instead of being stuck at the desk.

[Mosh](https://mosh.org/) is what makes this setup work on a phone. It's based on UDP, so the session survives switching from Wi-Fi to cellular and the phone going to sleep, both of which would drop a plain SSH connection. On the server, every SSH login attaches to the same [tmux](https://github.com/tmux/tmux/wiki) session, so the phone shows me the same windows I left open on the laptop. (My setup at the desk is [Terminal setup tmux Ghostty and the 1Password CLI](https://michael.zazon.us/notes/terminal-setup-tmux-ghostty-and-the-1password-cli).)

A push means the session wants something: an answer, feedback, or a response. [Claude Code hooks](https://code.claude.com/docs/en/hooks) send a push when a session asks for permission, asks a question, or finishes a task. The hook is installed from a Brewfile in my dotfiles, and paired per new machine with a one-time script, so any machine running a session can reach the phone. (My dotfile distribution is [chezmoi one source of truth for every dotfile](https://michael.zazon.us/notes/chezmoi-one-source-of-truth-for-every-dotfile).)

[Diagram: Phone connects to Claude Code sessions in tmux over mosh, with push notifications back](https://michael.zazon.us/notes/my-whole-dev-setup-fits-in-my-pocket)

I can also send screenshots from the phone into a session. For example, I was tracing the floorplan of our house and had some marked-up scans on the phone, so I sent them straight into the session as source images. They came in as temporary files, so I copied them into the repo before a reboot could lose them.

I do most of my work with my iPhone and moshi.app to be honest. I tried a lot of iOS SSH apps before I found [Moshi](https://getmoshi.app/), and one question I always had was: could a self-hosted solution ever match the experience? One app was real mosh, but no push notifications. One self-hosted web terminal claimed mosh but was just typing a mosh-server command in a regular SSH shell (still WebSocket in the browser, not UDP). Another app I tried and disliked. Moshi is the only one I've found that lets me swipe to switch tmux windows.

[Image: A Claude Code session in Moshi on my iPhone, with the tmux window list along the bottom](https://michael.zazon.us/notes/my-whole-dev-setup-fits-in-my-pocket)

I open Moshi, swipe to that window and answer it. The swiping is the fiddliest part of my setup: Moshi finds windows by reading the tmux status bar, and my custom theme had added enough extra text that the swipe stopped working for no obvious reason. A cosmetic theme isn't the first thing I'd blame for a broken gesture. I ended up hiding the theme text only when the phone is the client (a phone connection sets `MOSHI_CLIENT=1`, and tmux clears the left and right sides of the status bar when it sees that). My laptop keeps the theme, and the swipe has been solid on the phone since.

It's been better than using Claude remote control since I like to be in the terminal, and my agents can a2a message each other in tmux and I can focus on outcomes and reviewing work. How that many-session setup runs is in [Running six to nine Claude Code sessions at once](https://michael.zazon.us/notes/running-six-to-nine-claude-code-sessions-at-once). I've recently started using Claude artifacts to review and approve changes and plans more, this has been really nice on mobile.

_Edited on 2026-10-24 to add reviewing plans in Claude artifacts._