71 lines
2.7 KiB
Plaintext
71 lines
2.7 KiB
Plaintext
---
|
|
title: Notifiers overview
|
|
description: 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.
|
|
|
|
<PluginGrid>
|
|
<PluginCard name="Dashboard" logo="web" href="/docs/plugins/notifiers/dashboard" description="Retained notifications inside the AO dashboard." />
|
|
<PluginCard name="Desktop" logo="apple" href="/docs/plugins/notifiers/desktop" description="Native macOS/Linux notifications. No-op on Windows." />
|
|
<PluginCard name="Discord" logo="discord" href="/docs/plugins/notifiers/discord" description="Discord webhook with rich embeds." />
|
|
<PluginCard name="Slack" logo="slack" href="/docs/plugins/notifiers/slack" description="Slack incoming webhook." />
|
|
<PluginCard name="Webhook" logo="webhook" href="/docs/plugins/notifiers/webhook" description="Generic HTTP POST. Retries + exponential backoff." />
|
|
<PluginCard name="Composio" logo="composio" href="/docs/plugins/notifiers/composio" description="Route through Composio — Slack, Discord, or Gmail." />
|
|
<PluginCard name="OpenClaw" logo="openclaw" href="/docs/plugins/notifiers/openclaw" description="Local OpenClaw gateway for personal alerts." />
|
|
</PluginGrid>
|
|
|
|
## Stacking notifiers
|
|
|
|
Notifier config is a map. Add as many named notifiers as you want, then route
|
|
priorities with `notificationRouting`:
|
|
|
|
```yaml
|
|
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
|
|
|
|
```bash
|
|
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
|
|
|
|
| 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](/docs/configuration).
|