/dashboard is the landing section of the Agent Observability blocklet (blocklets/observability-explorer in the ARC monorepo). It answers one question: what have my agents been doing, and which runs deserve a look?
Verified against the live deployment at https://observability-explorer.afsd.dev, build 35de3a0b, signed in as a registered test user on 2026-08-20. Your rows will differ; the shapes and the caveats are the reusable part.
Re-walked on the current build. The first walk (build
400ce96, 2026-08-15) ran while an authorization bug was live: owning one app granted deployment-wide trace visibility. That was fixed on 2026-08-18, so the earlier walk's rows were partly a symptom. See What you can see for the rule that holds now.
This is one of three sections. The other two are Traces — what happened inside one run — and AI usage — how much AI capacity was consumed. Dashboard and usage count different populations and are not meant to reconcile: the dashboard rolls up agent runs visible to you, the usage face rolls up AI calls attributed to you, and a run can burn tokens without appearing in the other's ledger.
Signed out, nothing renders — the section states Sign in to view this content. rather than drawing an empty chart.
What the page shows

Top to bottom:
| Block | What it answers |
|---|---|
| Headline | 40 runs · 494.8K tokens · 90.0% ok · avg 37.4s — volume, spend, success rate, mean duration |
| Three cards | The single worst / most expensive / longest-looping run, each naming the task text and the app |
| Three tables | The same three dimensions as lists: failed runs (latest), most expensive runs, most rounds |
| Two charts | Runs per day, and tokens per day split into Tokens In / Tokens Out |
| Roll-ups | Top models, top hubs, and a per-app table |

The per-app table is the most useful block for a deployment owner: it is the only place that puts runs, tokens, average duration, success rate and recency on one row per app. In the walk above it read:
| App | Runs | In | Out | Avg dur | Success | Last run |
|---|---|---|---|---|---|---|
| todo | 22 | 243K | 2.4K | 38.7s | 100% | 2 days ago |
| observability-explorer | 5 | 36.5K | 1.9K | 29.8s | 100% | 4 days ago |
| arch-qa | 4 | 91.1K | 1.5K | 54.1s | 100% | 8 days ago |
| aistro | 4 | 0 | 0 | 0ms | 0% | 6 days ago |
| aside | 4 | 107.3K | 1.8K | 22.6s | 100% | 5 days ago |
| chain-explorer | 1 | 9.3K | 179 | 38.3s | 100% | 14 days ago |
An app with runs but zero tokens, zero duration and 0% success — aistro above — is the shape of a run that never reached the model. Those are the same four runs the "needs attention" card is counting.
Reading it correctly
"today's signal" is not today. The headline is labelled Agent runs · today's signal, but the charts under it span thirteen days (2026-08-04 → 08-16) and the per-app table's "last run" column reaches back two weeks. Read the headline as the current state of everything visible to you, not as a 24-hour window.
"Failed" in the card, interrupted in the table. The attention card says 4 run(s) failed; every one of those rows carries the status interrupted. They are the same four runs under two names. Do not go looking for a separate failed status — there isn't one on this deployment.
The charts arrive late. Both charts render Loading data... for several seconds after the tables are already populated (over six seconds in the walk). A blank chart area on first paint is loading, not zero.
The three outlier tables clip on the right. At a 1440px viewport the APP column of the failed / expensive / rounds tables is cut off mid-word. The information is there — the table just has more columns than the card width affords. Widen the window or read the app name from the card above it.
What you can see
Both this section and Traces read the same run index through the same gate, and the gate has two axes:
- Your own runs are always yours. That row is a fragment of your own DID Space; the isolation is physical, not a filter.
- A whole app's runs require membership on that app — same-instance
admin/owner, probed per app.
Nothing else is admitted. An owner role on app A grants nothing on app B.
This rule is younger than the page. Until 2026-08-18, authorizedView mapped an
owner/admin string on any app to a deployment-wide privilege flag with no app dimension,
so one app's owner enumerated every blocklet's runs — task text included — while the usage
admin face refused the same caller for the same app. Fixed in ARC
#4170 /
PR #4269.
You can see both axes at work without a second account — compare the apps appearing in
/traces against the portfolio on /usage/admin. On this walk each list had six apps and
they overlapped on only three:
| Appears in | Apps | What that means |
|---|---|---|
| Both | todo aside observability-explorer | Own runs and membership |
| Traces only | arch-qa aistro chain-explorer | My own runs in apps I do not administer — the USER axis |
| Usage admin only | discuss-kit did-space showcase | Apps I administer with no runs in the index — discuss-kit has 56 AI calls and zero traces, which is ARC #3207, still open: the index read path only sees this instance's runs |
Invisible and non-existent look identical. Listing the traces of an app you may not see
returns an empty list, not an error: /dev/observability/traces/places-notebook answered []
on the same session where /dev/observability/traces/todo answered 22 runs.
What it cannot tell you
- Why a run failed. The dashboard names the run; the reason lives in the trace.
- Anything about runs outside the two axes above — they contribute nothing to these totals, and the page cannot tell you they exist.
- Cost in money. Every number here is a token count or a duration; no page in this blocklet converts tokens to currency.
Failures to expect
| Symptom | What it actually is |
|---|---|
Sign in to view this content. | Not an error — the dashboard has no anonymous projection |
Charts stuck on Loading data... | Normal for the first few seconds; the tables fill in first |
| An app with runs but 0 tokens / 0ms / 0% | Runs that never reached the model — the interrupted set |
| Headline says "today", chart shows two weeks | Known label mismatch; the data is the whole visible window |
| Right-hand column of an outlier table cut off | Table wider than the card at this viewport |