AO

Slack notifier

Slack incoming webhook. Minimal config, no bot token required.

Slot: notifier · Name: slack
macOSSupported
LinuxSupported
WindowsSupported

Setup

  1. In Slack, Apps → Incoming Webhooks → Add to Slack on the target workspace.
  2. Pick the channel, copy the webhook URL.
  3. Add it to AO:
agent-orchestrator.yaml
notifier:
  - type: slack
    webhookUrl: ${SLACK_WEBHOOK_URL}
    channel: "#agents"             # optional — override default channel
    username: "AO"                 # optional

Config

KeyRequiredDefaultWhat it does
webhookUrlSlack incoming webhook URL
channeloptionalwebhook defaultChannel name (must be accessible to the webhook)
usernameoptionalAgent OrchestratorBot display name

Notes

  • No bot token / OAuth to manage. Incoming webhooks are the simplest integration Slack offers.
  • This notifier does not handle Retry-After headers — if you're sending at high volume, use the webhook notifier with retries configured.
  • Messages use Slack Block Kit (header + section + context blocks). Action URLs render as inline links in the context block.
Outgoing payload shape
{
  "blocks": [
    {
      "type": "header",
      "text": { "type": "plain_text", "text": "🔔 pr.created — sess_01HXY...", "emoji": true }
    },
    {
      "type": "section",
      "text": { "type": "mrkdwn", "text": "PR opened: fix(auth): handle token expiry" }
    },
    {
      "type": "context",
      "elements": [
        {
          "type": "mrkdwn",
          "text": "*Project:* myproject | *Priority:* info | *Time:* <!date^1713387600^{date_short_pretty} {time}|2026-04-17T...>"
        }
      ]
    },
    {
      "type": "section",
      "text": { "type": "mrkdwn", "text": ":github: <https://github.com/owner/repo/pull/123|View Pull Request>" }
    }
  ]
}

On this page