Skip to main content
Agent Orchestrator uses a push notification model—agents notify humans only when judgment is required. Configure notifiers and routing to control where notifications go based on priority.

Notifier System Overview

The notification system has two parts:
1

Notifier Plugins

Define notification channels (Slack, Discord, webhooks, etc.)
2

Notification Routing

Route notifications to channels based on priority level
When an event occurs, the orchestrator:
  1. Determines event priority (urgent, action, warning, info)
  2. Looks up which notifiers should receive that priority
  3. Sends the notification to all configured channels
Source: packages/core/src/lifecycle-manager.ts:422-431

Built-in Notifiers

Agent Orchestrator includes 4 built-in notifiers: Source: packages/core/src/plugin-registry.ts:43-46

Desktop Notifier

Native OS notifications for local development.
Desktop notifier is enabled by default. No additional configuration needed.
Supports:
  • macOS (Notification Center)
  • Linux (libnotify)
  • Windows (Toast notifications)

Composio Notifier

Integration with Composio platform for team visibility.
Composio notifier is included in default notifiers. Remove it if you don’t use Composio:

Slack Notifier

Send notifications to Slack channels via incoming webhooks.

Setup

1

Create Incoming Webhook

  1. Go to https://api.slack.com/messaging/webhooks
  2. Create a new webhook for your workspace
  3. Choose a default channel
  4. Copy the webhook URL
2

Set Environment Variable

Add to your shell profile (~/.zshrc, ~/.bashrc):
3

Configure Notifier

4

Add to Routing

Configuration

object
Slack notifier configuration
string
required
Must be slack
string
required
Slack incoming webhook URL. Use ${SLACK_WEBHOOK_URL} to reference environment variable.
string
Default channel for notifications (e.g., #agent-updates). Can be overridden per-notification.
string
default:"Agent Orchestrator"
Bot username displayed in Slack

Example

Source: packages/plugins/notifier-slack/src/index.ts, examples/multi-project.yaml:45-57

Webhook Notifier

Send notifications to custom HTTP endpoints.

Configuration

object
Webhook notifier configuration
string
required
Must be webhook
string
required
HTTP endpoint URL. Use ${WEBHOOK_URL} to reference environment variable.
string
default:"POST"
HTTP method: POST, PUT, PATCH
object
Custom HTTP headers (e.g., authentication)

Example

Webhook Payload

The webhook receives a JSON payload with event details:
Source: packages/core/src/types.ts:747-757

Notification Routing

Route notifications to different channels based on priority level.

Priority Levels

array
Urgent priority — Critical issues requiring immediate attention:
  • Agent stuck
  • Agent needs input (permission prompt, question)
  • Agent crashed/exited
  • Multiple failed escalations
Recommended routing: Desktop + Slack (immediate attention)
array
Action priority — Action required but not urgent:
  • PR ready to merge (approved + CI green)
  • Manual intervention needed
Recommended routing: Desktop + Slack (check when convenient)
array
Warning priority — Something to be aware of:
  • Auto-fix failed (escalated after retries)
  • CI failing (after automatic retries exhausted)
  • Review comments (after automatic handling failed)
Recommended routing: Slack only (async, no immediate action)
array
Info priority — Informational only:
  • All agents complete
  • PR merged successfully
  • Session summary
Recommended routing: Slack only (FYI, no action needed)
Source: packages/core/src/types.ts:705-706

Default Routing

If you don’t specify notificationRouting, these defaults apply:
Source: packages/core/src/config.ts:99-104

Routing Examples

Desktop-only (local development):
Slack-only (team environment):
Hybrid (local + team):
Multiple channels:

Custom Notification Rules

Adjust notification behavior per reaction:
When reactions escalate or trigger notifications, they use the configured priority to determine routing. Source: packages/core/src/types.ts:774-775

Channel Configuration

Some notifiers support per-notification channel overrides.

Slack Channels

Override the default channel:
When posting via the API, you can override:
Source: packages/plugins/notifier-slack/src/index.ts:171-184

Complete Example

A production-ready notification configuration:

Testing Notifications

Test your notification setup:
Verify:
  • Desktop notifications appear (for urgent/action)
  • Slack messages arrive in correct channel
  • Webhooks receive POST requests with correct payload

Troubleshooting

No Desktop Notifications

macOS: Grant notification permissions:
  1. System Settings → Notifications
  2. Find Terminal or your terminal app
  3. Enable “Allow Notifications”
Linux: Install libnotify-bin:

Slack Webhook Fails

Check webhook URL:
Test webhook manually:
Common issues:
  • Webhook URL expired (recreate in Slack)
  • Channel doesn’t exist (check spelling)
  • Workspace permissions (ensure app is installed)

Webhook Timeout

Increase timeout (future feature):
Use async webhooks: Configure your endpoint to return 200 immediately and process async.

Missing Notifications

Check routing:
Solution: Ensure notifiers are in defaults.notifiers or explicitly configured:

Next Steps

Reactions

Configure what events trigger notifications

Projects

Set up projects with custom notification rules