agent-orchestrator/packages/plugins/notifier-openclaw
Adil Shaikh 298057044f
feat(notifier): make notifier system robust with manual harness and desktop setup (#1736)
* fix(notifier-desktop): use terminal-notifier on macOS for click-to-open support

On macOS, when terminal-notifier is installed (brew install terminal-notifier),
desktop notifications now open the dashboard URL when clicked instead of
opening Script Editor. Falls back to osascript when terminal-notifier is
not available.

New config option `dashboardUrl` controls the click-through URL:
  notifiers.desktop.dashboardUrl: "http://localhost:8080"

Refs #1579

* feat(cli): add manual notifier test harness

* feat(cli): add native desktop notifier setup

* fix(cli): handle denied desktop notification permission

* fix(notifier): support composio actions api

* fix(notifier): use composio entity execution

* feat(notifier): add composio setup flows

* Fix notifier setup flows

* feat: add dashboard notifier

* Make notifier payloads semantic v3

* chore: use ao-agent as composio default user

* Improve notifier setup and rich notifications

* Improve desktop notification UX

* Update AO notifier app icon

* Remove redundant dashboard notification actions

* Potential fix for pull request finding 'CodeQL / Client-side cross-site scripting'

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Fix code scanning notifier alerts

* Address notifier bot review comments

* Address remaining notifier bot reviews

* Update notifier integration assertions after merge

* Fix notifier test fallout after merge

* Address notifier PR review comments

* Fix notifier bot follow-up comments

* Add notification delivery observability

* chore: add notifier logging screenshot

* fix: address notifier logging ci failures

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-05-19 14:48:40 +05:30
..
src feat(notifier): make notifier system robust with manual harness and desktop setup (#1736) 2026-05-19 14:48:40 +05:30
CHANGELOG.md fix(agent-plugins,lifecycle): distinguish indeterminate probe from "not found" + bump ps timeout (closes #1838) (#1839) 2026-05-14 21:50:39 +05:30
README.md feat(notifier): make notifier system robust with manual harness and desktop setup (#1736) 2026-05-19 14:48:40 +05:30
package.json fix(agent-plugins,lifecycle): distinguish indeterminate probe from "not found" + bump ps timeout (closes #1838) (#1839) 2026-05-14 21:50:39 +05:30
tsconfig.json fix: scope node types to node packages 2026-04-13 18:25:21 +05:30

README.md

notifier-openclaw

OpenClaw notifier plugin for AO escalation events.

Quick setup

ao setup openclaw

This interactive wizard auto-detects your OpenClaw gateway, lets you reuse or change the URL, OpenClaw config path, and routing values, then writes the AO config. For non-interactive use (e.g., in CI/CD pipelines or automation scripts):

ao setup openclaw --url http://127.0.0.1:18789/hooks/agent --non-interactive

AO does not generate the token or write shell-profile exports. Local setup reads hooks.token from your OpenClaw config. For a remote OpenClaw gateway, you can pass --token and AO will store that token in agent-orchestrator.yaml.

Useful follow-up commands:

ao setup openclaw --refresh
ao setup openclaw --status

Interactive setup asks which notification priorities OpenClaw should receive.
For scriptable setup, pass --routing-preset urgent-only, urgent-action, or
all.

Required OpenClaw config (openclaw.json)

{
  "hooks": {
    "enabled": true,
    "token": "<your-hooks-token>",
    "allowRequestSessionKey": true,
    "allowedSessionKeyPrefixes": ["hook:"]
  }
}

AO config (agent-orchestrator.yaml)

notifiers:
  openclaw:
    plugin: openclaw
    url: http://127.0.0.1:18789/hooks/agent
    openclawConfigPath: ~/.openclaw/openclaw.json

Behavior

  • Sends POST /hooks/agent payloads with per-session key hook:ao:<sessionId>.
  • Defaults wakeMode: now and deliver: true.
  • Retries on 429 and 5xx responses with exponential backoff.

Token rotation

  1. Rotate hooks.token in OpenClaw.
  2. Restart OpenClaw so it picks up the new config.
  3. Run ao setup openclaw --status to verify the new token.

Known limitation (Phase 0)

  • OpenClaw hook ingest is not idempotent by default. Replayed webhook payloads are processed as separate runs.
  • Owner: AO integration.
  • Follow-up: add stable event id/idempotency key support.