Use tmux Panes and Tabs on an iPad | YoloShell
Frequently asked questions
- Does tmux on YoloShell show real panes or a text approximation?
- Real ones. YoloShell uses tmux control mode (-CC), which is a pane UI rather than the text-mode rendering tmux normally uses over SSH.
- Can I run several hosts side by side?
- Yes. Multi-tab terminals on iPad, with live tab titles synced from OSC sequences, made for the big screen and external keyboards.
- Do I need a separate VNC app?
- No. VNC remote desktop is built in and free — pixel-perfect, with touch gestures and a full hardware-style key bar.
- What does YoloShell Pro add?
- Multi-tab terminals on iPad, unlimited profiles and SSH keys, tmux control mode, custom themes and priority support.
- Does my server need tmux installed for this to work?
- Yes. tmux runs on the host and YoloShell drives it as an ordinary command inside the remote shell over SSH or Mosh, so there is no separate channel and nothing extra on the phone. Control mode (-CC) is a per-profile switch in the profile editor, off by default and unlocked with Pro.
- Which tabs come back if the app is killed?
- Mosh tabs are restorable from their saved port and key, Herdr tabs record a resume state, and VNC tabs cold-reconnect without a framebuffer snapshot. A plain SSH tab is not restorable and comes back failed, which is why tmux or Mosh on the host is what protects the work.
The short answer
On most iPad SSH clients, tmux is a text screen: the panes are characters inside the shell stream and you navigate them by typing. YoloShell takes the other route — it runs tmux in control mode (-CC), a machine-readable notification-and-command protocol, so the tmux layout becomes a real tab and pane UI you tap. Around that it adds a Chrome-style tab bar on iPad, live tab titles synced from OSC sequences, and a key bar whose Ctrl and tmux prefix buttons latch, because tmux without a usable prefix key on glass is not tmux. Control mode is a per-profile switch, off by default and part of the Pro plan.
Why you are looking for tmux on an iPad
tmux was designed for a keyboard and a grid you can see at once. On a tablet it degrades twice: the pane grid is too small to read, and every tmux command is a prefix chord — Ctrl-B, then a key — that a touchscreen has no way to send. So people open tmux on a laptop, or give up on doing it from the tablet at all.
The real question is therefore rarely "does app X support tmux?" Any SSH client can run the tmux binary on the far end. What matters is whether panes are a UI or a text approximation, and whether the prefix key is something you can press.
tmux panes vs. YoloShell tabs: which one is which
Worth getting straight first, because the two levels use the same words for different things:
- A YoloShell tab is one connection to one host — a terminal (SSH or Mosh), a VNC desktop, or a Herdr session. On iPad at regular width, tabs live in a 44-point Chrome-style bar across the top: profiles on the left, a horizontally scrolling row of tab cards 200–240 points wide with a close button, a status dot and a truncated title, settings on the right, and a plus button.
- tmux sessions, windows and panes live inside that connection. tmux is driven as an ordinary command typed into the remote shell — there is no separate tmux channel; every control is a keyboard sequence sent to the shell's stdin over SSH or Mosh.
Because tmux runs on the host, the remote needs it installed; the app is only the client. On connect, tmux is attached or created according to the profile's on-connect policy, optionally prefixed with set -g mouse on \; so the mouse scrolls without a prefix key. The -g is deliberate: set must run before new-session in the same command line (after attach the command line is blocked), and at that moment the target session does not exist yet, so the setting can only be global.
A fourth policy, choose-at-connect, runs tmux list-sessions in the live shell, wraps it in echo markers and parses the answer back, polling every 100 ms up to a timeout, then shows a sheet listing each session with its window count. On timeout the client falls back to attach-or-create instead of dropping you at a bare prompt.
What control mode changes, and where the prefix key still matters
In tmux's normal mode the client and server exchange a rendered screen: keystrokes go in, redrawn cells come out. In control mode tmux stops sending screen text and instead emits notifications (window added, layout changed, session changed, pane mode changed) and accepts commands (select-window, new-window, resize-pane, paste-buffer). Nothing has to be re-parsed as escape sequences, which is what lets a client own the pane chrome itself.
The keyboard path is used too: the tmux service sends the prefix byte followed by a tmux command straight to the PTY — prefix (0x02 for Ctrl-B, 0x01 for Ctrl-A, 0x00 for Ctrl-Space) then :select-window -t N, and prefix then :new-window. That is why the prefix control on the key bar is a first-class button: it is the only touch path into tmux's own commands, and the client never has to guess what modifier you meant.
The key bar is what makes tmux usable on glass
YoloShell's key bar sits above the software keyboard with Esc, Tab, a latching Ctrl, the four arrows, a latching prefix button matching the profile's Ctrl-B, Ctrl-A or Ctrl-Space, a copy-mode key and a dismiss button. It is 48 points tall on iPad and 40 on iPhone, and hides itself as soon as the software keyboard is hidden or an external keyboard is attached. Ctrl and prefix latch: tap once, the button highlights, and the next key is sent with the modifier instead of you holding two things at once.
With an external keyboard the bar gets out of the way and iOS's own modifier keys do the work — which is why the iPad multi-tab layout is built around that keyboard rather than around touch. The terminal's protocol replies and tmux command strings are also forwarded to the PTY verbatim, so modifiers never corrupt them.
Live titles, and what a stale tab title means
A tab is only useful if you can tell what is in it from the bar. The window title a remote program sets with OSC 0/1/2 (ESC ] 0;title BEL) — the sequence tmux, bash's PROMPT_COMMAND and vim all write — becomes the label, falling back to the profile name. The status dot carries what the title cannot: green for active, orange while connecting, grey for suspended, red for failed.
If a title looks frozen, the usual reason is that nothing on the far end emits OSC titles — a bare sh with no prompt hook, or a program that sets OSC 2 and the shell immediately clears it with OSC 0. Long titles truncate at the tail, because the label is 13 points in a card no wider than 240.
What an iPad layout gives you that a phone does not
The tab bar is not a scaled-up phone toolbar. YoloShell's top bar is used only when the horizontal size class is regular and the idiom is pad; in compact width — iPhone, or an iPad in Split View or Slide Over — you get a bottom toolbar and a tab switcher instead. The switch is wired to trait changes, so rotating or resizing Split View moves between the layouts live and the active tab is scrolled into view.
Resize deserves its own sentence because it is the classic iPad terminal bug. iOS reports size changes mid-layout — rotation, keyboard appearing, tab switching — sometimes as one column by one row, and sending that to the server makes the PTY wrap the screen into a single vertical column of characters. Sizes below 10 columns by 5 rows are discarded, a 150 ms settle delay is applied before resizing, and an unchanged size is not resent. One detail still surprises: VNC fullscreen locks the window to landscape, and on the way out the app asks for portrait again.
What survives, and what does not
Sessions are persisted per tab, but not equally, and which kind you have decides how much protection the host must provide:
- Mosh tabs carry their port and key, so they are restorable, and that state is saved when the app goes to the background.
- Herdr tabs record a resume state and reconnect on return.
- VNC tabs cold-reconnect, but leaving fullscreen drops the framebuffer — there is no snapshot.
- Plain SSH tabs are not restorable. If the app is killed, that tab comes back failed and you reconnect.
Also: the choose-at-connect picker degrades to attach-or-create on timeout, control mode is off on a fresh profile, tmux must be installed on the host, and the app needs iOS 17 or later.
What YoloShell does differently
- tmux as panes rather than as text. Control mode is the difference between a layout you tap and characters you read.
- tmux configured per host. Session name, on-connect policy, prefix key, mouse scrolling and control mode are per-profile settings, alongside per-profile Mosh settings and on-open scripts.
- A key bar built for tmux's mental model — latching Ctrl, a latching prefix, copy mode, Esc, Tab and arrows, on a screen with no modifier keys of its own.
- Honest titles and honest dots, plus VNC in the same client, free, for when what you need is the desktop rather than a shell.
The honest limits: control mode is a per-profile toggle, off by default and unlocked by Pro, and on the free plan tmux attaches the classic way — panes live inside the terminal text and you reach tmux's windows through the prefix button plus :select-window and :new-window. iPad multi-tab is Pro too: free keeps one tab on any device, three hosts, two SSH keys and two palettes (Default Dark, Solarized Dark); Pro adds multiple concurrent sessions, unlimited hosts and keys, control mode and three more palettes (Solarized Light, Dracula, Nord). Nothing runs on the phone: tmux is on the host, and Herdr agents such as Claude Code or Codex are installed on the remote machine too.
What to do next
The decision is small. If your tmux usage is one window at a time, the free tier's one tab is fine and tmux still protects the work — install tmux on the host, keep Mosh there if the network moves, and a long-running job survives a killed app. If you routinely run more than one host or tmux window at once, what Pro buys is exactly those numbers plus control mode, and nothing else. Count how many things you would want open side by side: one means the free plan, more than one means the tab bar is the product.
YoloShell is on the App Store to try it against a host you control; the product page shows the live regional price, and the roaming page covers what Mosh adds when the network changes underneath you.