So I built agent-pulse: a local gateway that captures AI agent lifecycle events and fans them out to registered clients.
You register clients once in a global YAML. Projects just call `agent-pulse hook --provider claude --event stop` from their hooks. The gateway handles routing, per-client filtering, and parallel dispatch. It auto-starts on the first event.
Two delivery modes: HTTP POST fan-out for webhooks and scripts, SSE stream (`GET /events/stream`) for dashboards and anything that can't expose an endpoint. You can also attach project metadata via `.agent-pulse.json` that travels with every event.
Single Go binary, zero runtime dependencies. Claude Code and Gemini CLI supported today, OpenCode and Codex CLI in progress.
Note: Claude Code recently added native HTTP hooks, so you can POST directly to an endpoint without any intermediary. agent-pulse is useful when you have multiple clients, need SSE, or want one config across projects.
Thanks!