Skip to main content
Sensors are Python handlers discovered from sensors/. Event sensors react to StreamBuild events derived from persisted run and audit results; polling sensors run no more often than a configured interval. Use providers to inject settings and external clients into either kind of sensor. Enable the dispatcher for a target:
Sensors are disabled by default. tick_retention_days = 0 retains tick history indefinitely.

React to events

Delivery is at least once. Use ctx.event.id as the idempotency key and wrap side effects in ctx.step() so retries resume from persisted step results. After retries are exhausted, the event becomes a dead letter and the stream advances; operators can retry or skip it later. The built-in catalog currently exposes AuditCompleted and RunCompleted. Audit events distinguish new failures, continuing failures, recoveries, and continuing passes.

Poll external state

The context includes the last successful cursor, success time, and target. The interval is measured from tick start, and a failed poll retries on a later interval.
Keep credentials and client setup out of the sensor function. Define them once as a provider, then request that provider by parameter name as shown in quality_alerts above.

Operate sensors

The Sensors page lists each sensor with its toggle, trigger, and last-tick outcome. Starting, stopping, resetting, retrying, and skipping require target-scoped automation.manage permission.
Sensors list with toggles, event triggers, and last-tick outcomes
Each sensor has a detail page with its configuration, tick history, and any unresolved dead letters — events whose handler failed every retry, so the sensor’s action never ran for them. Retry re-attempts the handler without repeating completed steps; skip records a reason and drops the event.
Sensor detail page with status toggle, configuration facts, dead letters, and tick history