Notifiers overview
Who gets pinged when an agent needs you. Six 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.
DesktopNative macOS/Linux notifications. No-op on Windows.DiscordDiscord webhook with rich embeds.SlackSlack incoming webhook.WebhookGeneric HTTP POST. Retries + exponential backoff.ComposioRoute through Composio — Slack, Discord, or Gmail.OpenClawLocal OpenClaw gateway for personal alerts.
Stacking notifiers
Notifier config is a list — pass as many as you want:
notifier:
- type: desktop
- type: discord
webhookUrl: ${DISCORD_URL}
- type: slack
webhookUrl: ${SLACK_URL}
channel: "#agents"Each notifier gets every event. AO doesn't try to dedupe across channels — that's your channel-configuration problem, not ours.
Testing
ao doctor --test-notifySends a dummy notification through each configured notifier. Good way to verify your webhooks work before an agent needs to wake you at 3 AM.
What gets notified
| Event | When |
|---|---|
session.spawned | ao spawn succeeds |
session.working | Agent is actively editing code |
pr.opened | Agent pushed a branch and opened a PR |
ci.failed | Required check fails |
review.requested | Reviewer asks for changes |
session.mergeable | CI green, no blockers |
session.merged | PR merged |
session.blocked | Agent is stuck — you need to intervene |
You can tune which events fire via reactions config.