The console

Click anything — an agent, a live instance, a finished session — and the console opens on it. The top half is what you selected. The bottom half is six ways of reading it.

An instance selected in Fleet: its identity above the console, with the Logs, Events, I/O, Capsule, Trace and Engine tabs below

The subject

The header names what you are looking at and links into it.

SessionThe .jsonl this run is writing, or wrote
PID · StartedLive instances only — the process and its uptime
Configaxon.config.ts, as it was booted
Bootsrc/boot.vue, with an action to render it as the model saw it
Toolssrc/tools, with an action to open the generated tool scope

A badge says which kind of subject it is: running for a live instance, ended for a finished session. The fields shift with it — a session has no pid, because there is no process left to name.

Those links matter more than they look. When a run goes wrong, the next question is almost always what was this agent configured with? — and the answer is one click from the thing that went wrong, rather than a hunt through the file tree.

Six panes

PaneReads
LogsWhat the process wrote, as a terminal would show it
EventsEverything that happened, in order
I/OThe sensory timeline — stimuli in, output and actions out
CapsuleWhat ran in the sandbox, and what policy allowed
TraceThe same run laid against time
EngineWhat the model actually received

They are not summaries. Each is the session's .jsonl read a different way, which is why none of them can disagree with another.

Live and finished are one interface

Every pane reads from a source — a running instance, or a session file on disk. That is the whole difference, and it is invisible in the panes themselves.

A finished session is not a lesser view. It is the same file the live view was tailing, which stopped appending. A run you missed is as debuggable as one you were watching, which means reproducing a bug is never a prerequisite for looking at it.

It works for any agent

The panes read kernel:* telemetry — the runtime's own meter around every engine call, tool and command. Nothing from inside a cognet.

So a custom cognet gets the same Trace and the same Engine view as a stock one, and never has to know a debugger exists.


Events — what happened. I/O — what it was receiving. Trace — where the time went. Engine — why it did that.