Documentation

Notifiers overview

Who gets pinged when an agent needs you. Seven notifiers ship; pick one or stack several.

Notifiers deliver AO events — session stuck, PR opened, review requested, CI failed — to wherever you actually pay attention.

Stacking notifiers

Notifier config is a map. Add as many named notifiers as you want, then route priorities with notificationRouting:

notifiers:
  desktop:
    plugin: desktop
  discord:
    plugin: discord
    webhookUrl: ${DISCORD_URL}
  slack:
    plugin: slack
    webhookUrl: ${SLACK_URL}

notificationRouting:
  urgent: [desktop, discord, slack]
  action: [discord, slack]
  warning: [slack]
  info: []

Setup commands can write this routing for you with --routing-preset urgent-only, urgent-action, or all. AO does not dedupe across channels, so route only the priorities each destination should receive.

Testing

ao notify test --to slack --template basic
ao notify test --route urgent
ao notify test --all --dry-run

Use --to for one target, --route for a priority route, or --all for every configured/default/routed notifier. Without --dry-run, real providers receive a real test message.

What gets notified

EventWhen
session.spawnedao spawn succeeds
session.workingAgent is actively editing code
pr.openedAgent pushed a branch and opened a PR
ci.failedRequired check fails
review.requestedReviewer asks for changes
session.mergeableCI green, no blockers
session.mergedPR merged
session.blockedAgent is stuck — you need to intervene

You can tune which events fire via reactions config.