What gets notified
- Run started (
sdlc_start) - Task validated — pass/fail with summary and attempt count
- A rich task execution report — tool calls, guardrail hits, memory actions, checks
- Human approval recorded (
sdlc_approve) - A gate blocking — the moment work is blocked on an approval, every channel is paged
Configure — environment variables
| Channel | Variables |
|---|---|
| Slack | RSTACK_SLACK_WEBHOOK (Teams/Discord URLs are auto-routed too) |
| Teams | RSTACK_TEAMS_WEBHOOK |
| Discord | RSTACK_DISCORD_WEBHOOK |
| Telegram | RSTACK_TELEGRAM_BOT_TOKEN + RSTACK_TELEGRAM_CHAT_ID |
RSTACK_WHATSAPP_TOKEN + RSTACK_WHATSAPP_PHONE_ID + RSTACK_WHATSAPP_TO |
Configure — .rstack/notifications.json
Verify in seconds
Channel notes
- Slack — incoming webhook; native Block Kit payloads.
- Teams — incoming webhook (connector); converted to MessageCard.
- Discord — webhook; converted to embeds.
- Telegram — create a bot with @BotFather, add it to your chat/group, use the bot token + chat id. Rendered as plain text.
- WhatsApp — Meta WhatsApp Business Cloud API: a Meta app with the WhatsApp
product, a system-user token, the sender phone-number id, and the recipient
number in international format (no
+).
For adapter authors
notifyAll never throws — it returns [{ channel, ok, detail }].