Skip to main content

Multi-agent message broker for AI agent coordination via MCP

Project description

agentwisper

License PyPI

Overview

agentwisper is a message broker that lets AI agents coordinate through the Model Context Protocol. Any MCP client — Claude Code, Codex, or a custom agent — registers with the broker, discovers active peers, and exchanges messages with no custom protocol or shared runtime. Agents group into persistent squads with role-based membership for long-running work, or ad-hoc teams for cross-squad tasks, and communicate through direct point-to-point messaging, RPC request/response, or topic-based pub/sub. The broker buffers messages for offline agents and restores identity on reconnect, so an agent can drop and resume without losing state or subscriptions. It runs as a single process backed by SQLite in WAL mode and exposes 26 MCP tools across 6 categories over streamable-http, with no external services or message queues to operate.

Installation

pip install agentwisper

Then start the broker:

agentwisper-broker start

Architecture

                    MCP (streamable-http)
                         |
                    +----+----+
                    |   MCP   |
                    |  Server |
                    +----+----+
                         |
+------------------------+------------------------+
|                  Broker Core                      |
|  +----------+ +-----------+ +----------------+   |
|  |  Router  | |   Agent   | |     Squad      |   |
|  | P2P/RPC/ | | Registry  | |   Manager      |   |
|  |  PubSub  | |           | |                |   |
|  +----+-----+ +-----+-----+ +------+---------+   |
|                                                   |
|  +---------------------------------------------+ |
|  |        Persistence Layer (SQLite WAL)        | |
|  |  messages | agents | squads | subscriptions | |
|  +---------------------------------------------+ |
+---------------------------------------------------+
         |              |              |
    Claude Code      Codex       Custom Agent

Features

  • Central Broker -- single-process message broker with SQLite WAL persistence
  • 26 MCP Tools -- agent management, squad operations, ad-hoc teams, messaging, subscriptions, health
  • Communication Patterns -- P2P direct messaging, RPC request/response, Pub/Sub topic subscriptions
  • Squad Model -- persistent named groups with role-based membership and shared state
  • Ad-hoc Teams -- lightweight temporary groups created from multiple squads
  • Message Polling & Wait -- agents poll or block-wait for messages with anyio.Event zero-latency notification
  • Retention Policy -- automatic cleanup of expired messages and stale agents

Quick Start

# Install dependencies
uv sync

# Start the broker on port 8000
uv run agentwisper-broker start

For the full walkthrough, see QUICKSTART.md.

Client Configuration

Claude Code (recommended: plugin)

Install the agentwisper plugin:

claude plugin add <marketplace>/agentwisper

This provides 14 slash commands (/agentwisper:register, /agentwisper:send, etc.) and connects to the broker automatically.

Claude Code (manual HTTP config)

Add to .claude/settings.json or .mcp.json:

{
  "mcpServers": {
    "agentwisper-broker": {
      "type": "http",
      "url": "http://localhost:8000/mcp"
    }
  }
}

Codex

codex mcp add agentwisper-broker --transport streamable_http --url "http://localhost:8000/mcp"

MCP Tools Reference

Agent Management (5 tools)

Tool Description
agent_register Register a new agent with name and capabilities
agent_deregister Remove an agent and clean up its subscriptions
agent_reconnect Reconnect a disconnected agent; restores identity, memberships, and buffered messages
agent_list List all registered agents
agent_info Get detailed information about a specific agent

Squad Management (8 tools)

Tool Description
squad_create Create a named squad (creator becomes leader)
squad_dissolve Dissolve a squad (leader only)
squad_list List all active squads
squad_info Get squad details including member list
squad_join Add an agent to a squad (leader only)
squad_leave Remove an agent from a squad
squad_kick Remove a member from squad (leader only)
squad_set_role Change a member's role (leader only)

Ad-hoc Team (4 tools)

Tool Description
team_form Create a temporary team from agents
team_dismiss Dismiss an ad-hoc team
team_list List all active ad-hoc teams
team_info Get team composition and purpose

Messaging (6 tools)

Tool Description
message_send Send a P2P or RPC message to a specific agent
message_broadcast Broadcast a message to topic subscribers
message_poll Poll for pending messages
message_wait Block until messages arrive (zero-latency via anyio.Event)
message_get Retrieve a single message by its msg_id
message_query Query message history with filters

Subscription (2 tools)

Tool Description
topic_subscribe Subscribe an agent to a topic
topic_unsubscribe Unsubscribe from a topic

Health (1 tool)

Tool Description
broker_status Get broker health, agent count, queue depth

Configuration

Environment variables use the AGENTWHISPER_ prefix:

Variable Default Description
AGENTWHISPER_DB_PATH agentwisper.db SQLite database file path
AGENTWHISPER_RPC_TIMEOUT 30 Seconds to wait for RPC response
AGENTWHISPER_POLL_LIMIT 50 Max messages returned per poll call
AGENTWHISPER_RETENTION_DAYS 30 Days to retain messages before cleanup
AGENTWHISPER_HTTP_PORT 8000 Port for streamable-http transport

Communication Patterns

P2P (Point-to-Point)

Direct message from one agent to another. Best for targeted requests and responses.

Agent A                          Broker                          Agent B
  |                                |                                |
  |--- message_send(to=B) ------->|                                |
  |                                |-- store message -------------->|
  |                                |                                |
  |                                |<-------- message_poll() -------|
  |                                |--- deliver message ----------->|
  |                                |                                |

RPC (Request-Response)

Synchronous request/response with timeout. Caller blocks until responder replies.

Agent A                          Broker                          Agent B
  |                                |                                |
  |--- message_send(type=rpc) ---->|                                |
  |                                |-- store RPC request ----------->|
  |                                |                                |
  |                                |<--- message_poll() -------------|
  |                                |--- deliver request ----------->|
  |                                |                                |
  |                                |<--- message_send() ------------|
  |<-- RPC response ---------------|                                |
  |                                |                                |

Pub/Sub (Publish-Subscribe)

Topic-based broadcasting. Subscribers receive messages posted to topics they follow.

Publisher                        Broker                          Subscriber
  |                                |                                |
  |--- message_broadcast(topic=X)->|                                |
  |                                |-- lookup subscribers --------->|
  |                                |                                |
  |                                |       Subscriber A             Subscriber B
  |                                |-- deliver --------->|          |<-- deliver
  |                                |                                |

Squad and Team Model

Aspect Squad Ad-hoc Team
Lifetime Persistent Temporary
Creation squad_create team_form
Membership Agents join/leave Specified at creation
Roles Per-member roles Flat membership
Communication Broadcast to squad Broadcast to team
Use case Long-running teams, departments Task forces, cross-squad projects
Cleanup Explicit squad_dissolve Explicit team_dismiss

Development

# Run all tests
uv run pytest

# Run specific test layer
uv run pytest tests/test_broker/

# Smoke test (MCP client integration)
uv run python tests/smoke_test.py

# System test (lifecycle & messaging)
uv run python tests/system_test.py

Project Structure

agentwisper/
  src/
    common/              # Types, config
    persistence/         # Database, stores
    broker/              # Registry, managers, router, core
    mcp_server/          # FastMCP tools (26 tools)
    cli/                 # Click CLI entry point
  tests/                 # Test suite (261 tests, incl. 13 integration)
  samples/               # Demo scripts and slash commands

License

Licensed under the Apache License 2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentwisper-0.5.1.tar.gz (65.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentwisper-0.5.1-py3-none-any.whl (42.3 kB view details)

Uploaded Python 3

File details

Details for the file agentwisper-0.5.1.tar.gz.

File metadata

  • Download URL: agentwisper-0.5.1.tar.gz
  • Upload date:
  • Size: 65.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for agentwisper-0.5.1.tar.gz
Algorithm Hash digest
SHA256 88536c0b5d404ce109bfe4e816f6457391fbbcfd411d1ed7d8a0d8a6c413ad75
MD5 a6cb1e9684e8a9a11d76b30323c4a7ba
BLAKE2b-256 6c5bf656598288e30f1784063c3fa68ddd9af4cadc7a2adc22e67a8faf249f17

See more details on using hashes here.

File details

Details for the file agentwisper-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: agentwisper-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 42.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for agentwisper-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 517b4dbed4c319f370f492676709124f7b92635a1ebc00372cfa6fc4e7d75d87
MD5 faeb0759a17c74215cea6ba25e6ba796
BLAKE2b-256 6b2fbd0c65593fb46f6b6f450addcd4178756cd9483f39606015bafb84936151

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page