Runs
The Runs page at Dashboard → Runs is the record of every agent invocation — one shot at one agent, whatever the transport (Discord, REST, CLI, chat bubble, or a pipeline step). A run is reconstructed from its event stream: everything the page shows is aggregated from the events table by run_id.
Runs vs. pipeline attempts
They're related but not the same thing:
- A run is one agent session — prompt in, events out.
- A pipeline subtask attempt is one execution of a project step. When the step is
kind: agent, the attempt spawns a run and records it aschild_run_id— that run shows up here like any other, tagged with its project. - Retry/redo mechanics live at the project layer (attempts, retrigger, revert); the run itself is just the session record.
For pipeline-driven multi-step work, start at Projects.
The runs list
The list shows the last 7 days of runs (up to 500), sortable and filterable by agent, transport, model, and status. Columns: Started, Agent, Transport (with a project link when the run came from a pipeline step), Status, Model, Events, Cost, and Run ID.
Statuses are derived from the run's terminal event: running, completed, failed, cancelled.
Click any row for the run detail page.
The run detail page
Header
Agent slug, run ID, the model the run resolved to (with tier, routing rule, and effective reasoning level when the model-dial recorded them), and the status pill.
Stat strip
Transport, started time, duration, event count, cost (USD, summed from the run's cost events), and peak context (tokens and approximate % of the window).
Prompt
The message the run responded to, with its author when known. Long prompts are stored truncated.
Actions
- Cancel — while the run is
running. Cancellation is recorded as arun_cancelledevent; everything up to the interrupt is kept. - Retry — re-invokes the same agent with the same prompt as a new run with a new ID; the original is immutable.
- Artifact — when the run produced a run artifact, this jumps straight to its recap/comments/share page.
Score
When the scoring system evaluated the run, the process score (and, on evidence-bearing runs, the LLM result score) with its breakdown.
Context
What went into the session: context-load events, per-step context growth, and the content breakdown when the session transcript is available.
Timeline
The full event stream, ordered: run_started, tool calls and results, model resolution, cost events, through to run_completed / run_failed / run_cancelled. This is the ground truth everything else on the page is derived from — use it when "the agent said it did X" doesn't match what happened.
Artifacts and recaps
Runs that produce reviewable output get a run artifact: a structured recap (summary, per-file changes, commands, outputs, media), a comment thread where the agent replies asynchronously, and PIN-protected public sharing. They live at Dashboard → Artifacts — see Portal → Artifacts.
Querying via API
const runs = await catentio.runs.list({ agent: 'hachimi', limit: 50 });
await catentio.runs.cancel('<run-id>');
runs.get(id)doesn't work. It callsGET /v1/runs/{id}, which doesn't exist on the control plane. For a single run's detail, callGET /v1/runs/{id}/detaildirectly over REST (404s once the run has aged out of the runtime's in-memory registry) — there's no SDK wrapper for it yet.
The REST surface adds GET /v1/runs/{id}/events, GET /v1/runs/{id}/detail, GET /v1/runs/{id}/context, GET /v1/runs/{id}/context/content, POST /v1/runs/{id}/retry, and GET /v1/runs/{id}/artifact (404 when the run produced none). GET /v1/runs/{id}/status exists as a route but is currently broken (it proxies to a runtime endpoint that doesn't exist) — don't rely on it.
Next
- Portal → Agents — the source of runs.
- Portal → Artifacts — what runs produce.
- Portal → Projects — runs orchestrated into pipelines.