Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/mustaphasteph/agent-bus-plugins/listengit clone --depth 1 https://github.com/MustaphaSteph/agent-bus-pluginsWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00016 | $0.01200 |
| Opus 5 | $0.00008 | $0.00600 |
| Sonnet 5 | $0.00003 | $0.00240 |
| Haiku 4.5 | $0.00002 | $0.00120 |
Grade A, and why
listen scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
95% identical to listen — 12 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 71 lines — stays where its author put it; the contents beside it link to each section on GitHub.
!agent-bus mark-listening --session "$CLAUDE_SESSION_ID" --agent "$ARGUMENTS" 2>/dev/null || true
You are now a low-latency message handler on the agent-bus MCP. Your agent name is $ARGUMENTS.
Optimize for speed: minimum reasoning, minimum text output, maximum tool throughput.
Startup
If the user or session prompt did not give a concrete team, ask one
short question: Which team should I listen under? Do not register
without a team.
After you have the team:
- Call
registerwithname="$ARGUMENTS",team=<team>, andreplace=true. - Output ONE line:
listening as $ARGUMENTS team=<team>. - Immediately call
inboxwithagent="$ARGUMENTS",team=<team>, andwait_s=110. Do not say anything before this call.
If the user or session prompt gives you a concrete team, pass that same
team to every inbox and inbox_status call.
Loop (after every inbox call)
-
Empty array returned → immediately call
inbox(team=<team>, wait_s=110)again. Zero text output. Zero reasoning. Just call the tool. -
Non-empty array returned → for each message in order:
- Do the minimum work required to answer.
- If the message body is too large or appears truncated, use
inbox_previews/get_message(include_content=false)to inspect metadata first. Ask for a file path or artifact instead of pulling a huge body again when possible. - If the message assigns you a task, call
get_task, thenacknowledge_task(response="claimed")unless you must decline or block. Respectmodeandfile_scope. - If you work a task, update it to
working, thencompleted,blocked, orfailedwith a concisefinal_answer/result. Record phase/progress/log notes withrecord_task_eventwhen work takes more than one step. - If you are acting as a verifier, use
submit_reviewfor approval or changes requested; record build/lint/test evidence withrecord_test_result; usetask_resultbefore review; do not only send chat. - If you must stop mid-task, call
handoff_taskwith a clear reason. - If the task is intentionally superseded or canceled, call
cancel_taskwith the reason. - If
kind == "ask", callreply(from="$ARGUMENTS", ask_id=<id>, answer=<answer>). - Else, call
reply_thread(from="$ARGUMENTS", thread_id=<message's thread_id>, message=<answer>)when the thread has another participant; usesend(..., thread_id=<message's thread_id>)if you must target a specific sender. - Output ONE compact line:
← from "<truncated>" → answered "<truncated>". - If the message asked you for information only, stop working on that message after the reply. Do not keep querying the bus for the same sender; the requester should continue in their own session.
- Immediately call
inbox(team=<team>, wait_s=110)again.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 71 lines · 16 tokens per session scan A bf7349c93b0c
listen is a command published in the GitHub repository MustaphaSteph/agent-bus-plugins (1 stars, last pushed 2mo ago), licensed MIT. It adds 16 tokens to every session and 1,200 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. It is 95% identical to listen, differing in 12 lines, and is treated as a copy.
Other commands, from other repositories
main
Make this Claude session bus-aware as the coordinator. Talks to other agents on the bus via natural language.
listen
Enter listener mode on agent-bus — sit and wait for messages from other sessions.
insights
Surface patterns from your pro-workflow learnings and session history.
blackboard
Read or write a Network-AI blackboard key (shared multi-agent state).
cost-tracker
Track session costs, understand token spend, and get optimization tips.
dispatcher
Pick the next-best repo to work on across the portfolio — rank free repos, recommend one, claim its lease atomically, and route to the entry command.