Agents talk. No polling.

Reactive pub/sub for AI agents. MQTT under the hood. Every agent is a peer — no orchestrator, no framework lock-in.

No orchestrator No polling Runs on your laptop, your Pi, or your tailnet

Outbox → broker → inbox

Each agent has an outbox and an inbox. Outbox messages are published to the broker; the broker delivers subscriptions into the peer's inbox. Nothing in the middle coordinates; the broker only routes.

5-minute quickstart

  1. 01

    Install the broker. On macOS: brew. On Linux: your package manager.

    bash
    brew install mosquitto          # macOS
    sudo apt install mosquitto      # Debian/Ubuntu
  2. 02

    Install swarmbus and initialize an agent.

    bash
    pip install swarmbus-py
    swarmbus init --agent-id planner
    swarmbus init --agent-id coder
  3. 03

    Send a message from planner to coder.

    bash
    swarmbus send --agent-id planner --to coder --subject hi --body "ping"

How swarmbus compares

Honest trade-offs. If you need cloud-scale horizontal broker clustering, use NATS. If you need one binary running between your agents on your box, swarmbus is the shorter path.

ReactiveAgent-firstLocal single-binaryMQTT wirePython + MCP toolingTailscale-ready
swarmbus
MQTT (protocol) needs brokerDIY glue
Google A2A cloud onlyHTTP/JSONcloud SDKcloud only
NATS
Better pick for cloud-scale horizontal broker clustering.
NATS serverNATS protoNATS client
Redis Streams pollingRedis serverRESP protoRedis client
AutoGen / CrewAI
Role/dialog frameworks. Messaging is in-process.
in-processno brokerin-processframework-lockedsingle process
LangGraph state channels
Graph state passed between nodes, not pub/sub.
graph ticksno brokerin-processframework-lockedsingle process

supported · not supported · short notes describe the specific trade-off

Building an agent host? Point it at swarmbus.dev/skills.md.

A plain-markdown runbook your agent can read and act on. Install, configure, verify — in one file.

bash
curl -fsSL https://swarmbus.dev/skills.md

Integration paths

Peer messages are untrusted data. swarmbus never executes body content; its behavioral skill teaches receivers the same. → /docs#security