Watching a run — the monitor
The monitor is the run drawn across the whole screen: a box for each agent that has worked, what each one is doing now, its sessions and the environments they work in, and arrows for the work passing between agents. It shows at a glance whether the run has the shape you expected, and which agent to read next.
At a glance
- You will see every agent of a run at once, open one out to its sessions and environments, and pick the transcript to read.
- Use it when a flow drives several agents or many sessions, when a run seems stuck, or when you want to read an agent that is not working right now.
- You need a run in
hmz, running or just ended. Your first run starts one.
Try it
During a run, press ← with nothing typed. Press → to go back to the transcript you were reading.
How it works
The interface has two screens. The log is where you read transcripts. The monitor is its parent: you pick a log to read from it, and you come back up to it. Both keep the same prompt at the bottom, so every command works on either.
The monitor draws the run as nodes:
◫ epic, always first: how far the run has got -- how many agents are working, their turns, how long it has been going -- and, once it has started, how it stands and its budget against what it has spent. There is no log every agent's work appears on; enter on it opens the epic's own page instead.◉an outworlder, where the flow talks to you (for example◉ human · outworlder: messages from the flow to you).- a box per agent that has taken a turn, in the order the flow declares them. An agent is one box however many sessions it opens.
- under an agent opened out, a row per session, and under each session the environment it works in,
▤.
It draws them two ways: as a graph, with arrows for the handovers between agents, or as a list, a table with the working rows at the top. The drawing stays live either way.
Example: find out why an rlar run has stalled
An rlar run has an actor and a reviewer. The actor has been working a while and you want to see what the reviewer last said. Press the frames in order:
The monitor opens on the agent you were reading: the actor, where the run landed as it opened its first session.
What to look at in frame 1, by number:
- The switch,
graphlist. Which of the two views you are looking at. A click on the other half turns to it, as ctrl+t does. ◫ epic. How it stands, how many boxes are working, the run's turns, and how long it has run. enter on it opens the epic's page.- The actor's box. Where the cursor starts,
readingsaying its log is the one you came from: a run lands on the agent of its first session. The top line says what it is doing now:▸(it can be opened out),●working, and43s, how long this turn has been going. The second line says what it runs,cli/model:effort, its turns and tokens. ▤ workspace local. The environments its sessions work in.◇and◆under a box. Subagents the agent started on its own:◆still going,◇finished. You cannot read or talk to them.↓ 5 · ↑ 5between boxes. Handovers each way: the actor has handed to the reviewer five times, and back. The pair the run moved between last is lit.- Under the drawing. The flow and how long it has run, then tokens and money per model. See Under the drawing.
The frames after it walk the rest: ↓ to the reviewer, space to open it out, ctrl+t to the list, enter on the environment for its page, and enter on the reviewer to read it. In frame 3, the numbers mark (1) a session row, with its own turns, tokens and clock, and (2) the environment that session's turns work in, with the directory. In frame 4, (1) the list's columns, (2) a working row moved to the top, and (3) the environment as a row of its own. Frame 5 is explained under Environments.
Check it worked
- The status line reads
▣ monitor · graphor▣ monitor · list. - enter on a box reads that agent's log, with
· readingbeside it above the editor. - → with nothing typed puts you back on the log you left.
Graph or list
The switch above the drawing says which of the two you are looking at, and a click on the other half turns to it. So does ctrl+t, which works even with something typed. The status line says graph or list, and the monitor opens again the way you left it.
- The graph draws a box per agent in the order the flow declares them, with the handovers between them as arrows.
- The list is the same nodes as rows, and says nothing about who handed to whom. Whatever is working is at the top, and everything else keeps its place, so a row moves only when what it is about starts or stops. Its columns are
node,runs · where(what each runs, or where an environment is),turns,time(how long it has been at what it is doing) andtokens. Every environment of the run is a row of its own.
| Reach for | When |
|---|---|
| the graph | the flow passes work between agents, and you want to see who is waiting on whom |
| the list | many agents or sessions, and you want the busy ones at the top |
The first line
◫ epic is always first. It says how the run stands, how many boxes are working, the run's turns, how long it has run, and its budget against what it has spent. No log holds every agent's work, each node below reading its own: enter on it opens the epic's page instead. The cursor starts on the node you were reading, or on its agent.
Under it, a run that talks to you has a ◉ node for each outworlder: the role that is you. Enter on it reads what the flow says to you. Where another interface reads the same run, the node says whose the role is to answer -- yours, or bob@tui's -- once somebody has claimed it.
Reading a box
The left of a box says what the agent is: ▸, the name the flow gives it, what it runs as cli/model:effort, how many turns it has taken, how many sessions where it has more than one, and the tokens it has spent. A third line names the environments its sessions work in. The right says what it is doing now:
| Right side | Means |
|---|---|
● and 43s | Working. The clock is how long this turn has been going. |
○ and idle 1m04s | Stopped. The clock is how long since its last turn ended. |
reading | Its log is the one you were reading. |
unread | It has said something since you last read it. |
An agent that has been thinking for eleven minutes and one that stopped eleven minutes ago look nothing alike here. The second is usually where a run has gone wrong.
Under a box hang the subagents that agent started on its own. ◆ is one still going and ◇ one that has finished. You cannot read or talk to them.
Between two boxes, ↓ 5 · ↑ 5 counts the handovers each way. The pair the run moved between most recently is lit. Handovers between boxes that are not next to each other are listed under the drawing as Also.
A box appears when its agent takes its first turn, and stays until the next run, working or not. A flow may declare ten agents and use three, and you see the three. Before any turn, the monitor lists the agents that are set up instead.
Sessions
An agent is one box however many sessions it opens: a loop that opens a new session each round is one agent and many sessions. space opens the agent under the cursor out, its ▸ turning to ▾, with a row per session hanging under it -- session 1, session 2 -- each with its turns, its tokens and its own clock. From a real ralph_loop run:
❯ │ ▾ ○ agent idle 0s │
│ claude/claude-haiku-4-5-20251001:medium · 2 turns · 2 sessions · 21… │
│ ▤ workspace local │
└──────────────────────────────────────────────────────────────────────┘
├╴○ session 1 · 1 turn · 63.9k tokens idle 21s
│ ▤ workspace · local · /tmp/g1/demo
└╴○ session 2 · 1 turn · 152.8k tokens idle 0s
▤ workspace · local · /tmp/g1/demoThe subagents a session started hang under that session. A session that has ended stays, and can still be read: enter on it reads its own log. space again, on the agent or on any row under it, shuts it.
With the mouse, a click on the left edge of a box, where its ▸ is, opens it out or shuts it, and so does a click on the agent the cursor is already on. A click anywhere else on an agent only moves the cursor there, and a double click reads it.
The epic's page
enter or a click on ◫ epic opens the run's own page, the same content as the epic panel of the web page: Figures (time, spend, tokens), Budget (each limit with what has gone of it, as a meter), Set up (the flow, task, agents, environments, params, and whether it is profiled) and Flows (the flows called). It stays live.
Under it, for every flow but a chat, is Stop while the run runs and Force stop while it winds down. tab reaches the button; each asks before it acts. See Stopping.
Environments
Under each session is the environment it works in: ▤, the environment role the flow gave it, and where it is -- the kind of machine, which one, and the directory on it. A session in a worktree derived from an environment works somewhere else, and is drawn so.
enter or a click on one opens its page. In frame 5 of the example, (1) is the kind of machine, (2) what the flow lets the role do there, (3) where the agents working in it run, and (4) every session working in it, to read. A row with nothing to say is left out:
| Row | Shows |
|---|---|
kind | LOCAL, SSH, DOCKER, SWARM, APPLE-CONTAINER or SLURM. |
target | The ssh host or the container runtime, or this machine. |
workdir | The directory its sessions work in. |
set up as | What it was given with -e or on /flow, where it was set up here. |
image | What a container for it is started from, where the flow names one. |
grants | The capabilities the flow declared for the role: Shell, Files, GitWorktree, … or nothing beyond running in it. |
needs | What the flow asks of the machine: CPUs, memory, GPUs. |
harness | Where the run put the harnesses of the agents working in it, such as env: on this environment's machine, with the CLI installed there or local: on this machine; what it runs lands here. Where sessions went different ways, each is named: env for NeiKos496/1 · local for PoleMos600/1. See Remote execution. |
status | How many of its sessions are working now, such as 1 of 3 sessions working. |
Sessions | Each session working in it. enter or a click on one reads it. |
The page stays live. Its top line, monitor › workspace, is the way back: esc, ←, backspace or a click on monitor returns to the monitor.
Under the drawing
| Row | Shows |
|---|---|
Flow | The flow running, and any flow it called, innermost last, each with how long it has run. |
Agents | Before any turn: the agents that are set up. |
Set | The flow's settings that differ from its defaults. |
Also | On the graph, handovers the arrows could not show. |
Reading | Where more than one interface or program reads the run: each by name, yours marked you. |
Tokens | Tokens and money per model, and the output tokens a second each is producing. A row per model, in the order each was first spent on: rows do not swap as one model overtakes another. |
Kinds | Tokens by kind for the whole run. A + marks a floor, because some agent's CLI does not report that kind. See Cost and rate. |
The prompt
The prompt under the drawing is the same one as the log's. Every command works here, and a line you type goes where it would have gone from the log. What a command answers appears under the drawing, above the prompt.
The keys
| Key | Does |
|---|---|
| ↑ ↓ | With nothing typed: move between the nodes. |
| space | With nothing typed: open the agent under the cursor out to its sessions, or shut it. |
| enter | With nothing typed: read that node's log. On the epic or an environment, open its page. On a line of the board, change it. |
| a click | What enter does. On an agent: on its ▸, or on the one already picked, open it out or shut it; elsewhere, pick it; twice, read it. |
| → | With nothing typed: back to the log you were reading. |
| ctrl+t | The graph, or the list. |
| ctrl+e | With nothing typed: the run in Exomyth, as a click on Exomyth above the graph does. Not for a chat. |
| ← | On the log, with nothing typed: up to the monitor. |
The status line offers only the keys that do something on the node under the cursor: space sessions on an agent that can be opened out, space shut once it is.
Once you type, the arrows, space and enter are the prompt's again. esc does not open the monitor, and there is no command for it.
The monitor can also draw a board, but a run of a flow never has one.
Without opening it
Much of this is on the log too:
- Above the editor, one line per agent: what it runs, and
●or○for whether it is working. See Many conversations at once. - Under those, what the run has cost and how fast it is spending. See Cost and rate.
- On the status line, whose turn it is and how long it has been going.
After the run, its trace shows the same shape in far more detail.
Troubleshooting
← moves the cursor instead of opening the monitor
Something is typed at the prompt, so the arrows are the prompt's. Clear it with ctrl+c, then press ←.
An agent the flow declares has no box
It has not taken a turn yet. A box appears with its agent's first turn. Before any turn at all, the Agents row under the drawing lists what is set up.
The list rows keep moving
A row moves to the top when what it is about starts working, and back when it stops. Use the graph for a picture that holds still.
I cannot reach a subagent's log
Subagents (◆, ◇) are the agent's own. Humanize shows that they ran, but has no transcript of theirs to read. Read the agent that started them.
Next steps
- Side questions (
/btw): ask about the run in words. - Many conversations at once: step between logs without the monitor.
- Tracing: the whole run on one timeline, after it ends.
- TUI reference: every key and command.