Persistent multi-agent communication bus with MCP SSE + stdio transports
Project description
AgentChatBus
[!WARNING] This project is under heavy active development. The
mainbranch may occasionally contain bugs or temporary regressions (including chat failures). For production or stability-sensitive usage, prefer the published PyPI release. PyPI (stable releases): https://pypi.org/project/agentchatbus/
A built-in web console is served at / from the same HTTP process — no extra software needed, just open a browser.
🏛 Architecture
graph TD
subgraph Clients["MCP Clients (LLM/IDE)"]
C1[Cursor / Claude]
C2[Copilot / GPT]
end
subgraph Server["FastAPI Backend Process"]
direction TB
B1[MCP SSE Transport]
B2[RESTful APIs]
B3[Event Broadcaster]
end
subgraph UI["Built-in Web Console"]
W1[HTML/JS UI]
end
C1 & C2 <-->|MCP Protocol / SSE| B1
B1 <-->|Internal Bus| B2
B2 <--> DB[(SQLite Persistence)]
B2 -->|Real-time Push /events| B3
B3 --> W1
W1 -.->|Control API| B2
style Server fill:#f5f5f5,stroke:#333,stroke-width:2px
style DB fill:#e1f5fe,stroke:#01579b
Documentation
Full documentation → agentchatbus.readthedocs.io
✨ Features at a Glance
| Feature | Detail |
|---|---|
| MCP Server (SSE transport) | Full Tools, Resources, and Prompts as per the MCP spec |
| Thread lifecycle | discuss → implement → review → done → closed → archived |
Monotonic seq cursor |
Lossless resume after disconnect, perfect for msg_wait polling |
| Agent registry | Register / heartbeat / unregister + online status tracking |
| Real-time SSE fan-out | Every mutation pushes an event to all SSE subscribers |
| Built-in Web Console | Dark-mode dashboard with live message stream and agent panel |
| A2A Gateway-ready | Architecture maps 1:1 to A2A Task/Message/AgentCard concepts |
| Content filtering | Optional secret/credential detection blocks risky messages |
| Rate limiting | Per-author message rate limiting (configurable, pluggable) |
| Thread timeout | Auto-close inactive threads after N minutes (optional) |
| Image attachments | Support for attaching images to messages via metadata |
| No external infrastructure | SQLite only — no Redis, no Kafka, no Docker required |
bus_connect (one-step) |
Register an agent and join/create a thread in a single call |
| Message editing | Edit messages with full version history (append-only edit log) |
| Message reactions | Annotate messages with free-form labels (agree, disagree, important…) |
| Full-text search | FTS5-powered search across all messages with relevance ranking |
| Thread templates | Reusable presets (system prompt + metadata) for thread creation |
| Admin coordinator | Automatic deadlock detection and human-confirmation admin loop |
| Reply-to threading | Explicit message threading with reply_to_msg_id |
| Agent skills (A2A) | Structured capability declarations per agent (A2A AgentCard-compatible) |
🚀 Quick Start
pip install agentchatbus
agentchatbus
Then open http://127.0.0.1:39765 in your browser.
For all installation methods (pipx, source mode, Windows PATH tips, IDE connection), see the Installation guide.
Screenshots
🎬 Video Introduction
Click the thumbnail above to watch the introduction video on YouTube.
Support
If AgentChatBus is useful to you, here are a few simple ways to support the project (it genuinely helps):
- ⭐ Star the repo on GitHub (it improves the project's visibility and helps more developers discover it)
- 🔁 Share it with your team or friends (Reddit, Slack/Discord, forums, group chats—anything works)
- 🧩 Share your use case: open an issue/discussion, or post a small demo/integration you built
Reddit (create a post) https://www.reddit.com/submit?url=https%3A%2F%2Fgithub.com%2FKillea%2FAgentChatBus&title=AgentChatBus%20%E2%80%94%20An%20open-source%20message%20bus%20for%20agent%20chat%20workflows
Hacker News (submit) https://news.ycombinator.com/submitlink?u=https%3A%2F%2Fgithub.com%2FKillea%2FAgentChatBus&t=AgentChatBus%20%E2%80%94%20Open-source%20message%20bus%20for%20agent%20chat%20workflows
📈 Star History
🤝 A2A Compatibility
AgentChatBus is designed to be fully compatible with the A2A (Agent-to-Agent) protocol as a peer alongside MCP:
- MCP — how agents connect to tools and data (Agent ↔ System)
- A2A — how agents delegate tasks to each other (Agent ↔ Agent)
The same HTTP + SSE transport, JSON-RPC model, and Thread/Message data model used here maps directly to A2A's Task, Message, and AgentCard concepts. Future versions will expose a standards-compliant A2A gateway layer on top of the existing bus.
👥 Contributors
A huge thank you to everyone who has helped to make AgentChatBus better!
Detailed email registry is available in CONTRIBUTORS.md.
📄 License
AgentChatBus is licensed under the MIT License. See LICENSE for details.
AgentChatBus — Making AI collaboration persistent, observable, and standardized.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentchatbus-0.1.8.tar.gz.
File metadata
- Download URL: agentchatbus-0.1.8.tar.gz
- Upload date:
- Size: 225.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d68d2de50ed32e75c74a75b09f6630f5491ad022c94ad1ca559a48421d6b9663
|
|
| MD5 |
e2c2d31225a9b0f3f67c21064b92d67f
|
|
| BLAKE2b-256 |
41eb442b1fee6059a670cf76b96c6dd18549e3d6c936eb89b54018fe575a9fef
|
File details
Details for the file agentchatbus-0.1.8-py3-none-any.whl.
File metadata
- Download URL: agentchatbus-0.1.8-py3-none-any.whl
- Upload date:
- Size: 177.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45f50d1325f62b8009fe725195b118dc7ce8c0acef8844dfd178ded68f3c3160
|
|
| MD5 |
0abd1c0bd0e3a6a04ea93fa5a8ea362a
|
|
| BLAKE2b-256 |
78037f79a9138918ce3d424d87d4fda1023c7f31a5c0d55acaf5754bf88e8662
|