← Use cases

USE CASES

The outage you hear about once

Persona
Tomás, the only backend engineer at a six-person startup whose product calls a model API.
Scene
The status page goes amber at 2:14am. Tomás's uptime tool pings every minute for forty minutes. Tomás mutes it, sleeps through the recovery, and wakes to a channel full of noise.

The old loop

Alert on every failed check, then learn to ignore alerts.

The new loop

The API health sentinel polls the status JSON every five minutes and remembers the last indicator. It alerts when the status changes, once going down and once coming back up.

The one capability that matters

Memory plus diff. write_state stores the last status; fast_path_diff only fires on a change.

The synth

blueprints/api-health-sentinel.yaml
# A zero-LLM status watcher: polls a Statuspage-style JSON endpoint and alerts
# only when the status indicator CHANGES (up→down and down→up both alert).
blueprint:
  id: api-health-sentinel
  title: API health sentinel
  description: >-
    Polls a status endpoint and alerts only when the status changes — you hear
    about the outage once, and you hear when it recovers. No LLM, free to run.
    Ships watching Anthropic's status page; point it at any Statuspage JSON.
config:
  synth:
    name: Health sentinel
    goal: Alert me when the service's status changes, in either direction.
    schedule_seconds: 300
  requires_credentials:
    - WEBHOOK_URL
  sources:
    - id: status
      primitive: http_fetch
      config:
        url: https://status.anthropic.com/api/v2/status.json
        json: true
  fast_path:
    primitive: fast_path_diff
    inputs:
      current: $sources.status.json.status.indicator
      previous: $state.last_indicator
  actions:
    - if: $fast_path.triggered
      primitive: notify_webhook
      config:
        url: $secrets.WEBHOOK_URL
        body:
          alert: Service status changed
          now: $sources.status.json.status.description
          change: $fast_path.diff
    - always: true
      primitive: write_state
      config:
        last_indicator: $sources.status.json.status.indicator
        checked_at: $tick.started_at

What it costs

Cost: $0 in model calls. Twelve checks an hour, all deterministic.

Try it