single-agent · dashboard-view

Background agent work log

When an agent runs unsupervised, a supervisor — human, another agent, or the same agent after a pause — wants to check state without reading the transcript. "What's the agent doing right now? Which runs are stuck? What did it finish overnight?" are logbook queries.

Shape
Single flat table
Storage
JSONL (soft-schema fields)
Owner
Agent operator
Lifetime
Rolling — archive after N days
Identity
run_id + step number
Corrections
Append-only

Schema

ColumnMeaning
run_idWhich background run this step belongs to.
timestampWhen the step happened. ISO 8601.
phaseHigh-level phase: plan, gather, act, verify, report.
actionWhat the agent did. Short verb phrase.
statusin-progress, done, blocked, failed.
artifact_refLink to file, URL, or tool output produced.
next_intentWhat the agent plans to do next. Key for resuming after a pause.
blocked_onIf status=blocked, what's needed to proceed.

Sample data

{"run_id":"r-88","timestamp":"2026-04-15T09:02:11Z","phase":"plan","action":"read spec","status":"done","artifact_ref":"/specs/v12.md"} {"run_id":"r-88","timestamp":"2026-04-15T09:04:03Z","phase":"gather","action":"fetch latest diff","status":"done","artifact_ref":"/tmp/diff.patch"} {"run_id":"r-88","timestamp":"2026-04-15T09:07:44Z","phase":"act","action":"run test suite","status":"in-progress","next_intent":"inspect failures"} {"run_id":"r-89","timestamp":"2026-04-15T09:05:12Z","phase":"act","action":"await user approval","status":"blocked","blocked_on":"migration review"} {"run_id":"r-90","timestamp":"2026-04-15T09:06:49Z","phase":"verify","action":"compare against baseline","status":"done","artifact_ref":"/reports/r-90.html"}

Common queries

# What's running right now?
filter status=in-progress

# Which runs are stuck awaiting humans?
filter status=blocked
group_by blocked_on

# Everything completed overnight
filter timestamp >= 2026-04-15T00:00Z
  AND status=done

The agent's own next turn also reads its prior rows to re-orient after a pause or handoff. Self-continuity across time fits the concept: the agent consults its record later without rereading its full transcript.

Actions

Visualize. Dashboard renders one row per active run_id with its latest phase, status, next_intent. Queries power cards like "stuck-on-approvals" and "completed-overnight."

Trigger follow-up agent. A supervising agent polls status=blocked, fetches the blocked_on context, and either unblocks directly or notifies the right human.

Why JSONL, not CSV

Different phases produce different fields. A verify step has artifact_ref; a blocked step has blocked_on; a gather step might carry a nested tool-call payload. JSONL keeps the envelope stable while the payload stays soft. Still appendable, still greppable.