Anonymous - 2026-04-23

Originally posted by: kumaakh

Technical direction: This depends on the status line infrastructure proposed in [#149]. Recommended sequencing:

  1. Implement publish_status tool (#149) first — the watcher's state source is statusline-state.json which that tool maintains.
  2. The Slack watcher is then a simple standalone process (scripts/fleet-slack-watcher.mjs or a new service in src/services/slack-notifier.ts) that:
  3. Reads statusline-state.json on a configurable poll interval (e.g. 30s)
  4. Diffs member states against previous read
  5. POSTs to a configured Slack webhook URL on state change to erify, locked, or member going offline
  6. Webhook URL stored in ~/.apra-fleet/config.json (or an env var) — never in the fleet registry.
  7. Opt-in: the notifier only runs if webhook URL is configured; no-op otherwise.

Consider whether this should be a long-running child process started by the MCP server, or a separate CLI command (pra-fleet slack-watch) the user runs independently. The latter is simpler and avoids the MCP server managing additional processes.

 

Related

Tickets: #149