Aviary
Observability

Observability

Seeing what your workflows are doing — the embedded control-plane dashboard, OpenTelemetry spans, dependency-free metrics, the Telescope watcher, and the raw diagnostics bus underneath them.

A durable run is a long-lived thing that spans processes, retries and deploys, so "check the logs" is rarely enough. Durable exposes the same lifecycle events through several surfaces; pick the ones that match how you already operate.

Start here

  • Control plane — the embedded React dashboard served by NestJS. Lists runs, renders each one as a graph across local and remote steps, and lets you retry and cancel. It is the fastest way to answer "what is this run waiting on?".

Wiring into your stack

  • OpenTelemetry — one span per step and one root span per run's first turn, so workflows show up in Jaeger, Grafana or Datadog next to your HTTP traces.
  • Metrics — dependency-free run/step counters and duration percentiles you can hand straight to a /metrics route.
  • Telescope — runs and steps inside nestjs-telescope, alongside your app's requests, queries and jobs.

Underneath

  • Diagnostics channel — every engine lifecycle event on the Node diagnostics_channel bus. This is the raw feed the surfaces above are built on; subscribe to it when you want to route durable events somewhere none of them cover.

These are additive, not alternatives — a production deployment typically runs the dashboard for humans and OTel or metrics for alerting, off the same event stream.

On this page