Skip to content

Enable Observability

Observability has two parts: server wiring and operator review. This guide focuses on what the operator should see and click after the server exposes runtime stats, traces, audit, and eval stores.

Dashboard with workload, health, recent activity, and system metadata.
Dashboard: confirm optional observability subsystems are wired.
Agents list showing model/plugin metadata and runtime inference statistics.
Agents list: inspect runtime stats before drilling into one agent.
  1. Open Dashboard.
  2. Check Health and System for audit log, runtime stats, trace, and eval availability.
  3. Open Agents and look for inference counts, latency, and error signals.
  4. Open a saved agent and use Recent runs when trace routes are enabled.
  5. Save important traces as dataset fixtures.
  6. Run an eval and inspect the report before accepting a behavior change.
SurfaceUse it for
DashboardHealth, workload, recent audit activity, and subsystem availability.
Agents listPer-agent runtime signals such as inference count, errors, and latency when stats are wired.
Recent runs / tracesTool calls, model output, prompt variants, and final status for a run.
DatasetsCurated traces that become repeatable fixtures.
Eval RunsLive or scripted replay results.
Eval ReportsOffline NDJSON report review and baseline comparison.
Datasets screen with dataset list and fixture counts.
Datasets: group traces into replayable fixtures.
Eval run detail page with pass/fail fixture output.
Eval run detail: inspect pass/fail output for each fixture.

Use evals whenever a dashboard or trace observation leads to a tuning change. The loop is: observe → tune one field → validate → preview → save → rerun the same fixture.

If a screen says a subsystem is unavailable, the UI is working: the server has not exposed that store or route yet.

Missing in UIServer side to check
Empty History or Audit Log disabledAudit log store/wiring
Agent stats show n/aRuntime stats registry/store
No recent runs or trace drawerTrace capture/store routes
Dataset/eval pages disabledEval dataset and run stores
No external telemetry spansOTel exporter and collector configuration

When building a custom observability backend, keep the UI flow above tied to the code surfaces that feed it:

  • MetricsSink receives runtime metrics; use CompositeSink or BatchingSink when one run should feed several destinations.
  • TraceStore backs recent runs, trace drawers, and dataset fixture curation.
  • RuntimeStatsRegistry feeds per-agent counts, latency, and error signals.
  • SamplingPolicy controls which spans are retained before they reach durable storage.

Code references: crates/awaken-ext-observability/src/sink.rs, crates/awaken-ext-observability/src/trace_store/, crates/awaken-ext-observability/tests/observability_integration.rs, and crates/awaken-ext-observability/tests/wiring_integration.rs.