st ui

The machine in one terminal screen, as k9s shows a cluster -- your machines, sessions, windows, agents and their runs, documents and CI, with any st command a colon away.

In st ui, the account's machines and their sessions and windows, the coding agents in them and their orchestration runs, the machine's vault, the CI of each checkout, the agents' plan limits and the machine's CPU and memory are all in one screen, read again every 2 seconds. It reads the same share the apps and the web terminal read, so it needs st to be sharing on this machine. It is in st 0.4.0-rc and later; for now that is the release candidate channel, so get it with st upgrade --channel rc.

st ui's first screen: the header with the host, CPU, memory and swap, the agents' usage and counts, the keys and the sophon>_ wordmark with st's version under it; below, the machine tree with this machine marked (here), its sessions api, docs and work, and work unfolded to its windows shell, lead (claude working), tests (claude waiting) and readme (codex done)
The first screen: the machine tree, with the session work unfolded

Opening it

st ui            # starts on the machine tree
st ui agents     # or on any view by name

The header is the machine on the left (host, OS, the shared session and its multiplexer, CPU, memory and swap), the agents in the middle (plan usage, how many are working, waiting and idle, and whether the usage guard is on), and on the right the keys of the view you are in. The line at the bottom is the way you came in (<sessions> <windows> <panes>) and the last thing that happened.

The machine tree

st ui starts on a tree of the account's machines, as a Kubernetes view shows its nodes: machine, then session, then window. This machine is at the top with (here), then the others, online first. Machines start unfolded and sessions folded. →/l unfolds, ←/h folds or goes up to the parent, space switches. A machine that is offline keeps its row and says when it was last heard from.

Enter or a on a session or a window attaches to it. On another machine that is st attach <machine>/<session> --window <n>, through that machine's own link as the apps go. A window in a checkout shows its CI, and c opens that run in the browser.

Views and keys

A digit, or : and the view's name, switches views.

KeyViewWhat it lists
0:nodesThe machine tree, the first screen
1:sessionsThis machine's sessions: windows, agents and their state, who is attached, age, current window
2:agentsEvery agent pane, the urgent ones (waiting, error, working) first
3:orchOrchestration runs as a tree: run, coordinator, workers and their workers
4:machinesThe account's machines as a list
5:usageClaude Code's and Codex's plan limits and when they reset
6:topCPU, memory and swap over the last ten minutes
7:docsThe machine's vault: session folder, window folder, note
8:ciThe latest GitHub Actions runs of this machine's checkouts

Enter goes into the row: a session to its windows, a window to its panes, a pane to its output (the last 2000 lines, following the end). :windows [session] and :panes [session] go straight there.

The agents view: four agent panes, tests waiting first, then review and lead working and readme done, with each one's session, window, run role and title
Agents, the one waiting for you first

Keys that work everywhere:

Key
j k ↑ ↓Up and down
g GTop and bottom
ctrl-b ctrl-fA page up and down
EnterInto the row
escBack, or clear the filter
/Filter the rows
ctrl-rRead everything again now
?Help, with the keys of this view
qBack; at the top, quit. ctrl-c quits from anywhere

And each view's own:

ViewKeys
Machine tree←/→ fold, Enter or a attach, c CI in the browser, o adopt, R release
Sessionsp panes, a attach, n new session, ctrl-d kill it (asks first)
Windowsa attach, c CI in the browser, n new window (an agent's name, or blank for a shell), ctrl-d close it (asks first)
Panes, agentsa attach to that pane, o adopt, R release
Orchestration←/→ fold, r the worker's last answer (st worker read), d its diff (st worker diff --stat), a attach, o adopt, R release, ctrl-d stop the worker (asks first)
Usageg turn the usage guard on or off
Docs←/→ fold, Enter the note's source
CIEnter or c open the run in the browser

st ui never types into a pane. To tell an agent something, attach to its pane with a.

Orchestration

3 shows each run as a tree: the run, its coordinator, the workers, and their workers, folded and unfolded like folders. A worker whose coordinator is on another machine stands on a branch of its own under the run. A done worker is grey with ✓, a waiting one orange, a working one teal.

The orchestration view: a run with its coordinator lead working and two workers, tests waiting and readme done, each with its pane, agent, window and summary
A run: the coordinator and its two workers

o brings an agent into a run as a worker and R lets it go, the same as st worker adopt and st worker release. They work on pane rows and on a window in the machine tree, an agent on another machine included. o asks for the parent from this machine's agents and a line for its role, and shows what it is about to do before it does it.

Attaching and coming back

a hands this terminal to st attach on that session, with the window or pane you were on picked. A line says how to come back just before it attaches, and the hint bar keeps <C-b d> back.

Where st ui runsAttached toBack to st ui
Outside tmuxThis machineCtrl-b d (zellij: Ctrl-o d)
Inside tmux 3.3 or laterThis machineCtrl-b d: the session opens in a popup over st ui, and detaching closes it
Inside tmux older than 3.3This machineCtrl-b L, tmux's key for the last session
AnywhereAnother machineCtrl-b d, or ~. at the start of a line

Documents and CI

7 shows the machine's vault as a tree, folders folded, with the files that start with a dot (.obsidian, .st, .briefs) left out as Obsidian does. Enter on a note shows it as it is on disk, front matter and all.

The docs view: the vault's folders docs and work unfolded to the notes release and plan, with each one's size and age
The vault, a folder per session and per window

A window in a checkout shows the latest GitHub Actions run of its branch: running, ✓ passed, ✗ failed. 8 lists the latest runs of every checkout on this machine, running ones first, and Enter or c opens one in the browser. Over ssh or without a screen it shows the address instead. The command st ci is now :st ci, since :ci is this view.

The CI view: two passed runs of the main branch of sophonz-labs/stui, each with its workflow, title, duration, age and the window it belongs to
CI of the checkouts on this machine

Commands with :

: takes a view's name, or any st command: :doc ls, :worker list, :upgrade, :login, :st ci, :history. st ui gives the terminal to that command, then waits for a key and comes back. :st <command> works too, and Tab completes view names and st commands. :q quits.