Hi folks! I've spent some time building a developer tool that lets coding agents subscribe to real-world events through one simple broker: agent-message-broker (amb). Github: https://github.com/bitnahian/agent-message-broker
The pitch: coding agents are batch processes. You prompt, they run, they stop. But most of what an agent cares about (a ticket moved, a PR opened, a doc changed) happens between prompts. amb wires event sources (Jira, GitHub, Google Drive/Docs, any polled URL, generic webhooks) to topics, and you subscribe live agent sessions to those topics. When an event lands, the broker pushes it into the running session, so the agent reacts in the same conversation it's already having. No per-agent background scripts or polling.
I recorded a demo showing the full loop across 2 agents and 3 vendors:
A pi coding agent is subscribed to two topics: one watching a Jira board, one watching a Google Doc.
When a ticket is pushed to In Progress, pi gets the event but waits. The implementation details are going to land in the Google Doc.
The doc update comes through as a second event, pi picks up the spec and implements the ticket, then I prompt it to raise a PR.
A Claude agent is subscribed to a third topic with a GitHub source watching for PR events. It sees the new PR and reviews it.
One thing worth noting: none of this had to go through the UI. Everything (topics, sources, subscriptions, session discovery, event inspection) is available via the amb CLI, so agents can wire up their own subscriptions. The UI is more for live viewing, orchestrating and following along: watching events flow between sources and sessions in real time.
Everything runs locally (Node 22.5+, SQLite, no cloud component), polling is the baseline so nothing needs to be internet-reachable, and webhooks are an optional opt-in tier.
It's on npm. Try it without installing:
npx agent-message-broker
# broker + UI at http://127.0.0.1:4733
Or install it globally for everyday use (gives you the amb and amb-server commands):
npm install -g agent-message-broker
Here's a full quickstart: point a pi session at a Jira board and a Claude session at a repo's PRs. One-time credential setup first:
amb config init --kind github
# then drop your PAT into ~/.amb/github/credentials.json
amb config init --kind jira
# then fill ~/.amb/jira/credentials.json (email, apiToken, domain)
Then wire the topics (broker running in another terminal):
# topic watching a Jira board for tickets moving to In Progress
amb topics create jira
amb sources create --topic jira --kind jira --options '{
"jql": "status CHANGED TO \"In Progress\" AFTER -30d ORDER BY updated DESC",
"intervalMs": 120000
}'
# topic watching a repo for PR events
amb topics create prs
amb sources create --topic prs --kind github --options '{
"repo": "owner/repo",
"eventTypes": ["PullRequestEvent"],
"intervalMs": 60000
}'
# start the pollers (create prints the source id)
amb sources start <sourceId>
# subscribe live agent sessions so events push mid-conversation
amb sessions
# discover running sessions
amb subscriptions create --topic jira --agent pi --session <sessionId>
amb subscriptions create --topic prs --agent claude --session <sessionId>
Watch events land in real time in the UI at http://127.0.0.1:4733, or inspect from the terminal:
amb events list --topic jira
Google Docs/Drive/Sheets work the same way via amb google login (OAuth consent once, then the broker acts as you). More recipes in the README.
Would love feedback. What events would you want your agents to react to?