iPhone
From installing st to a terminal on the device, step by step.
The app opens on an empty Machines tab. It says what to do first, and the install command is on that screen too, so you can copy it from there.

The first time it opens, the app walks you through its controls with a short guide, and again over the first terminal. First run in the app has the video and every step.
1. Start a session on your computer
The session lives on the computer, and it stays open there the whole time: the device joins it, it does not take it away. Install st first:
curl -fsSL https://dl.sophonz.io/install.sh | shbrew trust --tap sophonz-labs/tap
brew install sophonz-labs/tap/stirm https://dl.sophonz.io/install.ps1 | iexThen run it in the terminal you want to reach:
stIt prints a link and a QR code of the same link, and the session is shared from then on. Leave it running. You can go into it yourself with st ls and Enter and keep working there; the browser and the device that join later see the same shell. Install has the details for each platform.
2. Add the machine
Tap Scan QR and point the camera at the code in the terminal, or tap Paste link after copying the link. The + at the top opens the same sheet, with three ways in:
- Scan QR — the code
stprints. - Paste link — the link with
?k=in it, or a stablelink.sophonz.iolink from an account. - Manual — the tunnel address and the token, typed separately.
Give it a name if you like, and tap Add.


3. Pick a session
The Sessions tab lists every tmux session on the machine, with how many windows it has, what it is running and when it was last used. Tap one to open it, or New session to start another.
To close a session, swipe its row or long-press it and choose Close session; a window closes the same way from the window list. The app always asks first. With only a shell there it says the shell will exit; with a program or an agent still running it names them, agents first ("Claude Code is working in this window. npm is running too."), so a long job is not stopped by accident. A machine whose st is older than this cannot say what is running, and the question says so.
Tapping a session, on Machines or Sessions, opens its window list, even when it has one window: each window with the program running in it and its agents, the one you were last in marked. Tap a window for its terminal; back from the terminal returns to the list. To skip the list, touch and hold the session and choose Open terminal. Notifications, widgets and links still open the terminal directly.
4. The terminal
The pill at the top shows the machine, the session and the window you are on. Tap it for a sheet to pick a session, window or pane; press and hold it to rename the window on screen. The button at the far right is the menu.


The key bar
It sits on top of the keyboard, and stays at the bottom of the screen when the keyboard is down.
| Row | Keys |
|---|---|
| First | tmux shows or hides the multiplexer row, agent the agent row. ctrl and alt apply to the next key; tap twice to keep them on. esc, tab and the arrows; hold an arrow to repeat. |
| Agent | The keys of the agent in the current pane: Codex's ⇧← ⇧→ to answer its questions, ⇧tab for Claude Code's permission mode, esc esc, 1 2 3, ^J and more — see the agent keys. The first key, codex ▾, picks another agent. Shown while an agent runs. |
| Multiplexer | The multiplexer: list (windows), sess (sessions), ◀ win, win ▶, +win, go# (a window by number), pane, zoom, and, scrolling right, splits, detach and windows 1 to 5. |
| Extras | Scrolls sideways: hide the keyboard, the mic, compose, ⏎, paste, A− and A+ for the type size, then ⇤tab, ^C, ^D, ^Z, ^R, ^L, symbols, hom / end / pgup / pgdn / del, and F1 to F4. |
The multiplexer row only appears when the machine runs a multiplexer that the app can drive. Hold any key to see what it sends. The rows and keys are yours to change: Settings → Keys and input → Key bar → Layout, or a keymap file — see the key bar.
Closing the key bar. A swipe down puts away one thing at a time. On the terminal, the first swipe down puts the on-screen keyboard away and leaves the bar; swipe down again right away and the bar goes too (the first time, a hint says so). Any other drag down still scrolls back through the output. The keyboard key, and a drag down on the bar, do the same two steps: the on-screen keyboard first, then the bar itself. With the bar closed the terminal gets the whole screen, and a small keyboard button in its bottom-right corner brings the bar back with the keyboard; tapping the terminal does too.
With a hardware keyboard (Bluetooth, USB) the bar starts closed, since the keys are on the keyboard. The keyboard button opens it without the on-screen keyboard; the keyboard key on the bar, or ⌘⇧B, closes it again. Whether the bar is open is remembered separately for with and without a hardware keyboard. To keep it open with one, turn off Settings → Keys and input → Key bar → Hide the key bar when a hardware keyboard is connected.
Voice
Hold the mic key and talk; let go and it is sent. A quick tap starts a hands-free take instead, which a second tap sends. While it listens, a bubble shows what it heard and lets you switch between two modes:
- Chat — types what you said, then presses Enter. For talking to an agent.
- Command — only types it, so you can check it before pressing Enter yourself.
Recognition stays on the device where iOS supports that for the language.
Compose
The pencil key opens a sheet for a longer prompt. Write several lines, tap Send, and it goes in as one message: the line breaks are sent as Alt+Enter and the last one as Enter, so an agent does not start on the first line. The buttons under the text are icons, the same six as on Android:
| Button | What it does |
|---|---|
| Microphone (Dictate) | Speech to text at the cursor. Nothing is sent. |
| Page with an arrow (Load) | Brings in a document from the machine, one from the Documents tab or a file, at the cursor. |
| Paper clip (Attach) | A photo from the library or the camera, or a file. It goes to the machine at once and its path goes in at the cursor, so you write the prompt around it. Shown when the machine's st takes files (0.3.58 or later). |
| Speech bubble (Quick prompts) | Tap one to put it at the cursor; Send now in its submenu sends it as it is. |
| Return arrow struck through (Type only) | Types it into the pane without the final Enter, so you can finish it there. |
| Paper plane (Send) | Types it as one message and presses Enter. |
VoiceOver reads each button's name and what it does.
Files for the agent. Each file you attach shows as a chip above the text, with a thumbnail or its name, and its path (in ~/.sophonz/uploads on the machine, kept a week) goes into the draft. Photos go as JPEG at most 2048 px on the long side. Tap a chip for Paste into terminal now, which pastes the path into the pane right away for an agent that is already waiting, or Remove, which also takes the path out of the draft. Claude Code, Codex and Gemini CLI read a picture or a file from its path. While the pane waits on an approval or a question, st 0.3.71 or later refuses Paste into terminal now, because the agent would take the path as its answer, and the app says why; answer the prompt first, then paste.
Selecting and copying
Long-press a word in the terminal: it is selected, with a handle at each end and a menu over it: Copy, Select All, Save as .md and Share…, plus Copy Link and Open Link when you pressed a link. Drag the handles to take more or less; hold one at the top or bottom edge and the terminal's scrollback moves under it. Dragging before you lift the finger stretches the selection too, a double tap selects a word and a triple tap a whole row.
Copy gives plain text: no trailing spaces, a long line that wrapped on screen in one piece, line breaks where the program put them. Korean and other wide characters, paths, flags and links come out whole. Select All takes everything the terminal holds; under tmux that is what the pane shows, so scroll there first. A tap anywhere, or typing, ends the selection. With tmux's mouse on, the long press and that tap stay in the app.
Windows
Tapping the pill opens a sheet titled with the machine's name. This session is at the top, and under it each of its windows in a card; a window split into panes shows its panes in the card too. Under Other sessions the machine's other sessions are folded: tap one to unfold its windows, and tap a window or pane there to move the terminal to it.
Tap a window to go there, swipe to close it, or long-press to rename or close it; renaming and closing are on this session's windows only. New window asks for a name straight away. Closing asks first and names anything still running; closing the last window ends the session and takes you back to the session list. Sessions close the same way in this sheet. With st 0.3.58 or later, New window also offers the coding agents installed on that machine (Claude Code, Codex, Gemini CLI): pick one, add a first prompt if you like, and st opens the window, starts the agent and types the prompt once it is up.
A window st set up again after tmux stopped carries a restored badge. Agents continue their conversations by themselves; an agent window whose resume line st could only type says it is waiting for Return. See multiplexers.
Subagents and teammates
Under each window, in the window list and in the pill's sheet, the app lists what runs in it. A coding agent's subagents are listed one by one, with their type and the short description the agent gave them, and whether each is running, done or lost, and for how long. With several agents in a window, each gets a line with its subagents under it.
The subagents sit under a Subagents · 2 running, 5 done header. Tap it to open or close the list: it starts open while a subagent runs and closed when none does. Finished subagents go into a Completed (5) group at the bottom, closed until you tap it, newest first. A lead's teammates work the same way under Teammates, with teammates that finished or whose team ended in their own Completed group. What you open or close stays that way, for that window and agent, until the app is closed; a new subagent updates the count without opening a list you closed. VoiceOver and TalkBack read each header as a button with its counts and whether it is expanded.
A Claude Code agent team in tmux split panes is shown under its lead: each teammate with its state and how many subagents it has running. Tap a teammate (or an agent) to open its window with its pane zoomed. Teammates still running after their team ended are marked team ended, and so are their window and session; swipe to close them. This needs the hooks (st hooks install) and st 0.3.42 or later; an older st shows only how many subagents are running and done.
Coordinators and workers
When an agent hands work to others through orchestration, the app shows who works for whom, on this machine and on the account's other machines.
- The Agents chart. A tree of cards with the coordinator on top and each child on its line: a worker's line green and thick, a teammate's blue, a subagent's grey and thin. A line is bright while the child works. Each card has the agent's icon and name, a coordinator, worker, subagent or teammate badge, its state and for how long, its task, the session and window, and the machine's name when it is another machine. Chips switch between This window (when opened from the terminal), This session, This machine and All machines (when signed in); workers on other machines join the same tree. Tap an agent's card to open its terminal (another machine is opened first); a subagent's or teammate's card opens its details. Open the chart from the Agents N chip on a machine's screen, Agents in the terminal's ••• menu, or the workers button at the top of a session's window list.
- The window list. A coordinator's window carries a coordinator badge and a ⑂ N workers pill that folds its workers. Its workers in the same session sit under it; workers in other sessions or on other machines are one line each, with the machine's icon and name. A worker whose coordinator is on another machine stays in its own place and says
worker of <parent> · <machine>, such as "worker of coordinator · home-macbook". - The Agents card. When the window in front runs a coordinator or a worker, a ⑂ N pill sits at the terminal's top right. Tap it for the coordinator and its workers with their state, and tap a row to go to that pane, wherever it is.
- Make a worker of… and Release. Long-press an agent's window or its card in the chart. Make a worker of… opens Whose worker?, the agents on your machines that can take it; one that cannot says why. The agent keeps its conversation so far (adopting). Release on a worker makes it no one's worker. These stand in for the desktop app's drag and drop.
This is in the iPhone app 0.1.93 or later, with st 0.3.67 or later, which runs orchestration. Make a worker of… and Release need st 0.3.70 or later. To make an agent on another machine a worker, both machines need st 0.3.85 or later and the worker's machine has to take workers from others (st orch accept-remote on there); that machine's st and agent hooks sheet shows Workers from other machines: on or off. See Adopting across machines.



Panes
A window split into panes opens on a map of its layout first: each pane drawn where it sits, with its program's icon and name, its agent's state and an outline on the active one. The window's row says how many panes it has. Tap a pane to open the terminal there. On a phone that pane fills the screen (tmux zoom); on iPad it opens with the rest of the window around it. Settings › Appearance › Terminal › Panes › Open panes zoomed changes that. Open whole window opens the window as it is.
In the terminal, to move to another pane, tap it under its split window in the pill's sheet, or open the same map from Panes in the menu. A zoom the app made goes back when you leave the terminal or go to another window, so the person at the computer does not find the window zoomed; a window that was already zoomed is left as it was, and so is a zoom you make yourself with the key bar's zoom. VoiceOver reads each pane as "pane 2, Codex, waiting, top right". This needs st 0.3.56 or later and tmux; a window of one pane, an older st or zellij opens straight into the terminal.
Chat
When a window runs Claude Code or Codex with st's hooks, the terminal's header has a Terminal | Chat switch. Chat shows the agent's conversation as messages instead of the screen: what you asked on the right, the agent's answers as formatted text, and each tool it used as one line with its name and what it worked on. Tap a line to see its input and output; an edit shows its change in red and green with line numbers. Thinking is folded into one line, a subagent shows its type and description (tap it for the window's subagents), and a long output has Show all. New messages arrive as the agent writes them; scroll up for earlier ones.
When the agent waits on a question, it shows as a card at the end with Answer, and the box at the bottom waits until it is answered. Type at the bottom to send to the agent: with st 0.3.63 or later, st types it into the agent's own input on your machine, and your message shows at once with Sending…, then Sent until the conversation has it. If it could not be confirmed it says Not confirmed · check the terminal (or Queued while the agent is busy) and is never sent twice. If something is already typed at the computer, the app asks Replace what's typed at the computer? and shows it first. While the agent works, a red Stop takes the send button's place and stops the turn, like Esc at the computer. The paper clip attaches photos or files: they go to the machine and their paths follow your words. With an older st the box sends as Compose does.
The terminal stays connected underneath, and the app remembers which view you used for each pane. The window list and the pill's sheet have Chat on a window too (swipe right on it, or press and hold), a split window's pane map has a chat button on each agent's pane, and an agent's notification has Open in chat. Chat reads the transcript the agent writes on your machine and comes straight from it, like the terminal; it needs st 0.3.57 or later. Through a trycloudflare.com address, agent state and the chat arrive as they happen with st 0.3.67 or later; an older st has them read again every few seconds.

Copying part of it. Press and hold an answer, your own message, a thought, a command or a tool's output for Copy (the whole message) and Select Text. Select Text opens the message's text in a sheet where you drag the handles over just the part you want and copy it. The sheet has Copy All and Close at the top.
Files and changes
A file path a program printed in the terminal, such as src/auth.go:42:7 or ./README.md, is a link. Tap it and the file opens as a preview at that line: code with line numbers and simple colours, Markdown rendered, pictures fitted. Its menu has Copy path, Insert into Compose and Share. A file a chat tool call read or changed opens the same way. Files that may hold secrets (.env, keys) stay on the computer.
Changes in the terminal's ••• menu lists the pane's git changes, unstaged and staged, and opens each file's diff with line numbers. Press and hold a line to leave a note for the agent; Add notes to Compose puts them in the draft as path:line — note, ready to send. Nothing is staged or committed.
Quick prompts are kept on the machine, so every phone that opens a terminal there has the same list. All of this needs st 0.3.62 or later.



GitHub Actions
Actions in the terminal's ••• menu shows the GitHub Actions runs of the repository the pane on screen is in. The list opens on This branch, with All beside it: each run with its status, its title, the workflow and run number, the branch and how long ago it changed. Pull down to refresh. While a run is queued or in progress the list checks again every 10 seconds.
Tap a run for its jobs and their steps, each with how long it took, and Open on GitHub. A failed run has Failed log, the last 400 lines of its failed steps, and Rerun failed jobs; a finished one has Rerun; one still going has Cancel run, which asks first. A read-only link can only watch.
st reads all of this with the machine's own GitHub CLI and its sign-in; it never holds a GitHub token itself. So the machine needs gh installed and signed in, and when something is missing the sheet says which: gh is not installed on this machine, gh is not signed in (run gh auth login on the machine), Not a GitHub repository, or Not a git checkout when the pane's folder is not in one. This needs st 0.3.74 or later and tmux (psmux on Windows).
5. Next time
The machine is saved. The Machines tab lists it with when it was last seen, and one tap goes straight to its sessions.

Offline machines
A machine the device cannot reach is dimmed on the Machines tab, with its state and when it was last seen.
| Status | What to do |
|---|---|
| Offline | Check that the computer is on and connected; st comes back on its own. A computer that is asleep shows as Offline too. |
| Stopped | Run st on the computer, or st service install so it starts with the computer. |
| Updating… | Nothing; it is usually back within a minute. |
| Signed out | Run st login on the computer. |
| Online · tunnel unavailable | Nothing; st keeps trying. |
| Restoring terminal… | Nothing; st is setting tmux up again (multiplexers). |
Tap the machine and the app says the same, with the command to copy, instead of trying to connect. Its sessions stay listed with their agents' last known state. A terminal that is open when its machine goes away stops reconnecting and says which of these it is; it connects again when the machine is back.
Every state but Offline comes from your account, so it needs you signed in and st v0.3.32 or later on the machine. The same states are on the dashboard.
When a machine's st starts again at a new address or with a new token, the app follows the account's new address for that machine. If an open terminal's token is refused, the app goes back to the machine screen and asks you to open the session again, instead of asking for the QR code.
Check connection (press and hold a machine on the Machines tab, the machine screen's menu, or the terminal's menu) goes through sophonz, the machine's heartbeat, the tunnel's address, st, a live connection and latency in turn, and says where it stops answering and what to do. Copy results copies the report without addresses or keys. It needs st 0.3.62 or later.
On a bigger screen
Put up a separate display over AirPlay, or plug one in, and the terminal you had open fills it. It is not a copy of the device's screen: the text is drawn at that screen's size.
The device stays as the thing you type on — key bar, keyboard, Compose and gestures all still there — and shows a small live preview of what is up there.
One thing about size: while it is connected, the window is the display's size. When you disconnect, the window goes back to the device's size, and a layout you set up on the big screen does not fall apart.
Settings → Appearance → External display turns it off, or gives it its own font size.
With a Bluetooth keyboard you can put the device down altogether: keys go straight to the terminal, and only the app's own shortcuts are taken by a keymap. The ⌘Tab-style switcher for moving between sessions is drawn on the big screen.
Notifications and the Live Activity
Install the agent hooks on your computer and the device knows what an agent is doing — working, waiting for permission, or done.
There is one Live Activity for the account, not one per machine: a single card with a row per machine, under the sophonz mark. A working session's turn time ticks on the card by itself. It starts when the account gets busy. While nothing is working or waiting it reads "All done", and work that comes back stays on the same card; after ten quiet minutes it goes. Only machines that are online count.
What it carries is names, states, counts and times. Not what is in the terminal — a live state on a lock screen travels in the clear, past Apple and past our servers.
| Setting | What it does |
|---|---|
| Notifications | agent notifications at all |
| Quiet hours | nothing sent during the hours you set |
| Per-machine | silence one machine |
| Notify when an agent starts working | off by default: a quiet notification, without sound, when an agent starts working. One per session, replaced by the next start, and gone once the turn finishes or you open the session |
| Notify when a machine goes offline | a notification when a machine on your account goes offline without saying why and stays so for two minutes; it goes away when the machine is back. Once each time: a computer that wakes for a moment and sleeps again does not notify again until it has been back for five minutes |
| Live Activity | that card on the lock screen |
| Only decision gates | only the decisions an agent asks for with st gate notify this device; a machine losing or regaining its connection still does. Shown when your account offers it |
A prompt that is waiting puts its options on the notification as buttons, and answering from the lock screen needs the device unlocked. Tapping a notification, or its Open, goes to that session's window.
When Claude Code asks several questions at once (AskUserQuestion), the sheet goes through them one step at a time, with boxes where a question takes several answers, and Send answers sends them all; st types them in for you. A notification has answer buttons only for a single question with a single answer.
When an agent hands its turn to subagents, the session reads Subagents working (3), or Subagents · 3 where space is short, rather than done.
Notification settings. Settings → Notifications → Agent notifications is one row with on or off and the unread count. It opens a screen in groups: the history; notifications, offline and the Live Activity; Only decision gates; the start notice; quiet hours; and the per-machine switches.


Notification history
The bell at the top of every screen except the terminal (also Settings → Notifications → Agent notifications → Notification history) lists what the device was told, newest first, with how many are unread. Tap one to open it; swipe right to mark it read, left to delete it, or use Mark all as read. A read notification leaves the Unread list, Notification Center and the app icon's badge — on every device signed in to the account. Answering a question at the computer, or a machine coming back online, marks its notification read on its own.
Machine health and AI usage
At the bottom of Machines are two small rows. All machines · metrics says how many are online and, when one is in trouble, its worst reading ("3 online · 1 ⚠ Swap 94%", in amber or red); it opens the overview: every machine on your account with its memory, swap and CPU over the last ten minutes, the most strained first. Offline machines don't count. AI usage shows each Claude and Codex account's 5-hour and weekly use ("Claude · 5h 42% · week 61%") and opens the AI usage screen; see AI usage and past sessions.
When a machine is in trouble, it says so where the machine is: under its name in the machine list, and on its session list, a short line shows the worst reading, such as Swap 94% or Memory 91%, after an amber triangle (warning) or a red octagon (critical). A machine that is fine shows nothing. Tap the line for that machine's metrics.
Settings → Notifications → Machine health indicator decides what shows:
- Show: Off, Critical only, or Warning and critical (the default).
- Thresholds: the bars for memory used (90% / 96%), swap used (75% / 92%) and, if you turn it on, CPU. The defaults are the ones st itself uses; Reset to defaults brings them back. A machine whose st is too old to send the numbers keeps st's grade.
- Machines: switch a machine off to hide its health, for example a Mac that always runs deep in swap. You can also do this from that machine's Metrics screen, or by pressing and holding its card in the overview.
The charts on a machine's metrics and in the overview draw your bars as dashed lines, amber for warning and red for critical, and Thresholds there opens the same editor, with that machine's switch first.
These settings only change what is shown on the rows. The overview always shows every machine's level as st grades it.
Documents and sharing into a pane
A machine's screen. It opens on the machine's sessions, each in a card of its own. Over them is one row of chips that scrolls sideways when it does not fit: first Update st when the machine's st has a newer version; Documents, with how many documents the machine has and how many came since you last opened them; Metrics, with one reading such as "Mem 62%", in amber or red with a warning sign when the machine is in trouble; AI usage, with the fullest limit of the accounts its agents use, such as "Claude 61% week"; Agents N while agents there hand work to others, which opens the Agents chart; and only when the hooks need a look, ⚠ Hooks. Each opens its screen or sheet. On iPhone, Resume a past session in the New session card opens its past agent sessions. In a session's window list each window is a card too, and what runs in it (agents, subagents, teammates) hangs from a thin line under the window's number. When the machine is offline the row says Offline, and Documents opens what you saved from it on this iPhone.
A machine's documents. On a machine whose st keeps documents (0.3.43 and later),
the Documents chip at the top of its screen opens what an agent handed over with
st doc, newest first. Open one to read it rendered
or raw. Copy all copies the markdown; Share sends a real
.md file (AirDrop, Mail, Files); Save on this device keeps it in the
Documents tab (it asks which folder, the machine's own first); Send to Compose
puts it in a pane's Compose. The list's ⋯ has Save all to this device.
A new document's notification opens it.
Editing. Edit, then one of two saves:
- Save to computer writes your edit to the machine's copy (st 0.3.46 and
later). It changes the copy st keeps in
~/.sophonz/docs, never the file the agent handed over. If the copy changed while you were editing (in the web terminal, or from another device), you choose: Overwrite, Keep both (yours becomes a new document, "Plan (edited)" for a document called Plan), or Cancel and keep editing. While the machine is offline the button is off and says why. - Save on this device keeps it in the Documents tab, whether or not the machine is there.
The Documents tab. Only what is saved on this iPhone or iPad, and it reads
with no machine online. Folders inside folders of plain .md files, the same
ones Files shows under On My iPhone (or On My iPad) › sophonz, so
Obsidian and other editors can open them too. Search titles and text, sort by
last changed, name or date written, and make, rename, move or delete documents
and folders (swipe a row, or touch and hold it). A file saved from a machine
still has Save to computer, and when the machine has changed it since, it
says work-mac has a newer version (with your machine's name) with Update and Keep this one.
Where each file came from is kept beside the files, not written into them.
Documents you saved to Files with an earlier version are already there.
The first time you open the Documents tab or a machine's Documents, a short guide walks through them; the ? on these screens opens it again. See Documents.
Sharing into a pane. In any app's share sheet, pick sophonz for
text, a link or a .txt/.md file, then the machine, session, window and
pane (the ones you used last come first). It lands in that pane's Compose,
not sent, and a notification Ready in Compose — tap to open takes you
there. Each pane keeps its own draft until you send it. Pictures and PDFs can be shared the same way: they go to that machine and their paths into the draft (st 0.3.58 or later).
In Compose, Load brings in a document from the machine, one from the Documents tab or a file from Files at the cursor. Copying a selection in the terminal offers Save as .md (the selection menu has it too), which puts it in the Documents tab.
Widgets
Long-press the Home Screen or the Lock Screen, tap Edit → Add Widget, and pick sophonz → Agents on your machines.

In the picture, Agents is the lower one:
- At the top, the whole account: 1 waiting and 1 working agents, sub 3/3 for subagents running out of those started, and ↻ to read the latest now. Updated now under the name is how old it is.
- Each row is a machine. The dot is its most urgent state, then its most urgent session and what it is doing, api · waiting for you, with +1 for another session. On the right are the machine's own counts, and ⚠ when its memory runs low (red when it is critical).
- No agents is a machine that is online with no agent running; +1 more machines is the rest of the account.
Terminals, the upper one, is the second widget.
| Where | What it shows |
|---|---|
| Home Screen, small | How many agents are working and waiting, and the one that needs you most, such as api · waiting for you |
| Home Screen, medium | Up to four machines, each with its most urgent session, or Offline · 3m ago, and a warning when its memory runs low |
| Home Screen, large | Sessions grouped by machine, with their state, subagents and how long ago it changed |
| Lock Screen | A round count (waiting, else working), a line with the most urgent session, or a line next to the clock |
The small one also works in StandBy. Edit Widget on any of them picks one machine; leave it empty for the whole account.
Every Home Screen size has the sophonz mark and Agents at the top. The widget is dark like the app: it follows the app's Settings → Appearance → Theme and font → Theme, so it stays dark on a light Home Screen. Edit Widget → Appearance sets one widget to Dark, Light or System instead of Match app. Tinted and clear Home Screens and the Lock Screen colour it the system's way.
Tap the widget and the app opens what it shows: the decision for an agent that is waiting, the session, or the machine. Medium and large open the row you tap.
The widget needs the account and shows names and states only, like the Live Activity. It never connects to your machines. Agent notifications update it as they arrive, and so does the app whenever it loads the machine list, now and then in the background too. On iOS 26 your account can also nudge it when the agents change, and it then reads the latest names and states with a key of its own that can read nothing else. Every size says how old it is, Updated 3 minutes ago, and dims once that is more than fifteen minutes. Tap ↻ at the top to read the latest names and states right away; if your account cannot do that yet, the widget says so and shows what the device already has. Turning notifications off leaves it to the app.
The Live Activity is the live view. The widget redraws at once when an agent starts waiting, fails or a machine goes offline, and gathers other changes for about a minute. Each agent notification brings the whole account up to date, not just its own session.
Terminals
A second widget jumps straight into a session. Add sophonz → Terminals the same way, on the Home Screen (small, medium, large) or the Lock Screen (rectangular).
It lists your open sessions, the one you used last first (the upper widget in the picture above): the last one you opened on this iPhone, or the one whose agent last changed. Each line has the session's name, its machine, how many windows it has and how many devices are viewing it, and a coloured dot when an agent runs there (the same colours as the Agents widget). The small one shows just the session you used last, big; medium shows up to four; large groups them by machine. A machine that is offline is dimmed and keeps the sessions it last had.
Tap a session and its terminal opens. Edit Widget → Appearance works as for the Agents widget. The list comes from the app: open the app to see a session you just made. Agent dots change with the agent notifications, as the Agents widget does.
Updating st on a machine
When a machine's st has a newer version, its row and its screen say Update
available. The Update st chip on the machine's screen opens "st and agent hooks"; Update st there asks first, then has the
machine's own st upgrade itself — the same download, check and handover as
st upgrade — while the app shows each step. The link stays the same and
sessions keep running; if the new version does not come up, the current one
comes back and the app says why. When the machine's st cannot update itself — installed with Homebrew, pinned to a version with ST_VERSION, or a development build — the sheet says Can't update from here and what to run on the machine instead (brew upgrade st, then st restart, for Homebrew).
When an agent's hooks are out of date or only partly installed, the machine's
screen shows a ⚠ Hooks chip that opens the same sheet with Install, and a terminal where that agent runs shows a
bar with Install. Nothing is typed into the terminal; restart the agent (or
open /hooks in Claude Code) afterwards. See Agent hooks.
Your account
Signing in syncs the machines registered to your account. Settings → Account → Sign in with sophonz opens the app's sign-in screen. Type your email and password and tap Sign in; Password AutoFill fills them. Create account and Forgot password? open the sophonz pages in iOS's sign-in sheet, which closes by itself when you are done. Buttons for other sign-in providers appear when they are switched on. After that the Machines tab also lists the machines registered to your account; tap one and its sessions open, with no link to paste. Links and QR codes keep working either way. To give an account machine a name other than its hostname, see Naming a machine.
An account on the PRO plan has a PRO mark on its avatar in Settings. The Free plan uses the first three machines added; a machine over that says Paused — plan limit in its row.
Under each online account machine its sessions are listed too, inside the machine's card and a step in, each with a terminal icon. An eye and a number at the end of a session's line are the devices viewing it right now: this iPhone, a browser, the computer's own terminal. The chevron on the machine's row folds the sessions away, and the iPhone remembers that for each machine. A folded machine still shows, under its name, what its most urgent agent is doing and how many sessions it has. Tapping the row opens the machine either way.
Settings




Settings is in six groups, with the same names and order as on Android: Account, Notifications, Appearance, Keys and input, Usage and Guide and about. Each row opens its own page. Delete account is the last row, on its own.
| Group → row | What it holds |
|---|---|
| Account | Sign in with sophonz, or who is signed in and Sign out. Signed in, Signed-in devices lists where the account is signed in, and signs a device out, or every one but this (Sign out everywhere else). |
| Notifications → Agent notifications | On or off and the unread count. Opens the history; notifications, offline and the Live Activity; Only decision gates; the start notice; quiet hours; per-machine switches — see Notifications. |
| Notifications → Machine health indicator | When a machine's row shows its health (Off, Critical only, Warning and critical), the bars, and which machines show — see Machine health. |
| Appearance → Language | English or 한국어: the same setting as iOS Settings › sophonz › Language. |
| Appearance → Theme and font | Theme: Dark, Light or System; Dark is the default. Terminal theme: sophonz, Solarized Dark, Dracula or Light, with themes imported in the desktop app or the browser terminal listed under From your account; the pick applies to this device only. Terminal font: MesloLGS Nerd Font, so prompt glyphs and Hangul both draw. Font size: 8 to 28 pt, 13 by default; A− and A+ on the key bar change the same value. Cursor: Block, Bar or Underline. |
| Appearance → Terminal | Keep screen on in the terminal: Always (the default), While charging or Off. While a terminal is open the screen does not dim or lock by itself; everywhere else it does as usual. If the device does lock, the terminal reconnects when you come back and the computer redraws the screen. Panes → Open panes zoomed: a pane picked on a split window's map fills the screen; on by default on a phone, off on iPad. GitHub CI, once a machine has shown the CI board: whether the board shows under the terminal (see GitHub Actions). Links → Open links in: the in-app browser or the default browser. |
| Appearance → External display | Whether to put the terminal on a bigger screen, and the font size there — see On a bigger screen. |
| Keys and input → Key bar | Layout: the key bar's rows and keys — start from a preset, reorder, hide, add, change what a key sends; see the key bar. Agent keys: follow the agent in the pane (Automatic), or always Claude Code, Codex, Gemini CLI or the generic set. Hide the key bar when a hardware keyboard is connected: on by default; with a Bluetooth or USB keyboard the bar starts closed and the keyboard button in the terminal's corner opens it. Show multiplexer row: whether that row is open when a terminal starts. Agent row: While an agent runs (the default), Always or Hidden. Haptics: a tap you can feel on each key. |
| Keys and input → Hardware keyboard | Keymap: switch between the built-in keymaps or import your own — see Keymaps. |
| Keys and input → Quick prompts | The quick prompts and their order. |
| Keys and input → Voice | The default mode, Chat or Command, and the language to listen for: English or 한국어. |
| Usage → AI usage | The AI usage screen. |
| Guide and about | Getting started in the app and All guides, in the in-app browser. About: the version and device id, Show guide again, licenses and the privacy policy. |