Two complementary patterns: memory_notify pushes a message to a target agent's inbox (peer-aware via federation), and memory_subscribe registers a webhook for outbound event push to your own systems. Both are HMAC-signed. Both fan out across federation. Both are part of the v0.6.0 GA contract — production-stable.
Internal — agent to agent. The sending agent calls memory_notify targeting another agent's id. The daemon writes a source: "notify" memory to a per-recipient inbox namespace. The recipient calls memory_inbox to drain unread messages. Both agents are inside the daemon's trust boundary.
Use for: internal A2A coordination, AI supervisor → AI worker, broadcast to multiple registered agents.
External — daemon to your systems. Operator subscribes a URL with a secret. The daemon POSTs HMAC-signed JSON to that URL on configured events. Your code (Slack bot, dashboard, custom workflow) consumes the payload.
Use for: shipping events to monitoring, integrating with chat ops, triggering external workflows on memory writes.
source: "notify". Federation-aware: if the target agent's last_seen is on a peer node, the notify fans out via broadcast_store_quorum so the recipient sees it on whichever node they read from.subscriptions table; secret stored as a hex-encoded hash.subscriptions row is deleted.Each event POSTs a canonical JSON body. Headers carry the timestamp + HMAC-SHA256 signature so receivers can authenticate before trusting the body.
Both notify and subscribe are federation-aware. A notify written on node-1 to an agent that last-saw node-2 fans out through quorum-write so node-2's local DB has the message — the recipient drains their inbox on whichever peer they're talking to without missing rows. Subscriptions themselves are per-daemon (you wire each daemon to your hooks), but the events the subscription dispatches reflect federated state.
memory_notify's the supervisor on every store. Supervisor reads memory_inbox at start of each turn, decides if intervention needed.memory_subscribe a Slack-bot URL with events: ["memory_promote", "memory_consolidate"]. Bot posts "Alice promoted X to Long" to a #memories channel.memory_notify's Team-B's PM when a shared OKR memory is updated. Federation propagates so it works whichever node either PM is on.Pending(id) verdicts. Webhook routes to ops dashboard or pager so approvers don't sit on requests.