Skip to main content

Local MCP event log for multi-agent workspaces

Project description

AgentBus

Test Python License: MIT

Local MCP event log and advisory lease coordinator for multi-agent workspaces.

When Cursor, Claude Code, Antigravity, Hermes, and other agents share a workspace, they usually coordinate through append-only files (log.md, sticky notes, Slack). That works until you need ordering, idempotency, cursors, schema validation, or file-edit mutexes.

AgentBus is a localhost sidecar: a Python MCP server backed by SQLite. Agents publish structured events; peers poll with since_id cursors. Advisory lease locks prevent concurrent edits. No orchestrator runtime lock-in.

v0.2 (July 2026): Events + advisory lease locks — publish, poll, status, lock_*. SSE subscribe and custom topics on the roadmap.

Note: PyPI names agentbus (NATS) and agentbus-mcp (blocked as too similar) are unavailable. Install as okf-agentbus (CLI command remains agentbus).

Why AgentBus?

Alternative Limitation AgentBus
log.md blackboard No schema, races, manual cursors Typed topics, monotonic IDs, poll API
flock / git mutex No agent identity, no TTL Advisory leases with heartbeat renewal
Redis pub/sub Extra daemon, no MCP path stdio MCP — works in existing IDEs
LangGraph / AutoGen Same-runtime only Heterogeneous out-of-process clients

Install

pip install okf-agentbus

# Or from GitHub
pip install "okf-agentbus @ git+https://github.com/onicarps/agentbus@v0.2.3"

# Or clone for development
git clone https://github.com/onicarps/agentbus.git
cd agentbus
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"

Quickstart

export AGENTBUS_WORKSPACE=/path/to/workspace
export AGENTBUS_PRODUCER_ID=my-agent

# Terminal A — MCP server (stdio)
agentbus serve --workspace "$AGENTBUS_WORKSPACE"

# Terminal B — publish a handoff
agentbus publish \
  --topic okf/handoff \
  --payload '{"from":"my-agent","to":"peer","summary":"Hello bus"}'

# Poll events
agentbus poll --topic okf/handoff --since-id 0

# Acquire an advisory lease before editing a shared file
agentbus lock acquire --resource "$AGENTBUS_WORKSPACE/log.md" --owner-id my-agent
agentbus lock status --resource "$AGENTBUS_WORKSPACE/log.md"
agentbus lock release --resource "$AGENTBUS_WORKSPACE/log.md" --lease-id <uuid> --owner-id my-agent

MCP setup

Use scripts/mcp-serve.sh so the workspace token is injected automatically:

{
  "mcpServers": {
    "agentbus": {
      "command": "/path/to/agentbus/scripts/mcp-serve.sh",
      "env": {
        "AGENTBUS_WORKSPACE": "/path/to/workspace",
        "AGENTBUS_PRODUCER_ID": "cursor"
      }
    }
  }
}

Client-specific templates:

Client Config
Cursor examples/mcp-cursor.json
Claude Desktop examples/mcp-claude-desktop.json
Hermes examples/mcp-hermes.json

MCP tools

Tool Auth Purpose
agentbus_publish Yes Append one validated event
agentbus_poll No Fetch events after since_id (at-least-once)
agentbus_status No Event counts, topics, health
agentbus_lock_acquire Yes Exclusive advisory lease on a resource path
agentbus_lock_release Yes Release a held lease
agentbus_lock_renew Yes Extend TTL (heartbeat)
agentbus_lock_status No Check lock state without acquiring

Full schema: docs/MCP_SCHEMA.md

Authentication

On serve, AgentBus writes an ephemeral token to {workspace}/.agentbus/token (mode 0600). Publish and lock mutations require a matching token via:

  • scripts/mcp-serve.sh (recommended for MCP — reads workspace file, not stale env)
  • AGENTBUS_TOKEN environment variable
  • --token CLI flag
  • auth_token MCP tool argument (optional; omit when using mcp-serve.sh)

Poll, status, and lock_status remain open. Set AGENTBUS_AUTH=off to disable during local development.

Details: docs/AUTH.md

Topics (v0.2)

Topic Purpose
okf/handoff Structured agent handoff (from, to, summary)
okf/status/<name> Status ping (idle, active, blocked, complete)

Custom topics are planned — contributions welcome.

CLI reference

agentbus serve [--workspace PATH] [--rotate-token]
agentbus publish --topic TOPIC --payload JSON [--producer-id ID]
agentbus poll --topic TOPIC [--since-id N] [--limit N]
agentbus status [--producer-id ID]
agentbus token show|ensure|rotate
agentbus lock acquire|release|renew|status
agentbus project-log [--log-file log.md]   # optional markdown projection

Set AGENTBUS_WORKSPACE to avoid repeating --workspace.

Development

.venv/bin/pytest tests/ -q          # 40+ tests
.venv/bin/pytest tests/ --cov=agentbus --cov-report=term-missing

Project layout

src/agentbus/     # Python package
tests/            # pytest suite (40 tests)
docs/             # MCP schema, auth guide
examples/         # MCP client configs (Cursor, Claude, Hermes)
scripts/          # mcp-serve.sh wrapper

Roadmap

See ROADMAP.md. v0.2 ships events + advisory locks; v0.3 targets custom topics and HTTP transport.

Contributing

We want real-world use cases from teams running heterogeneous agent stacks. See CONTRIBUTING.md.

License

MIT — see LICENSE.

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

okf_agentbus-0.2.3.tar.gz (24.0 kB view details)

Uploaded Source

Built Distribution

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

okf_agentbus-0.2.3-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file okf_agentbus-0.2.3.tar.gz.

File metadata

  • Download URL: okf_agentbus-0.2.3.tar.gz
  • Upload date:
  • Size: 24.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for okf_agentbus-0.2.3.tar.gz
Algorithm Hash digest
SHA256 a0a9062d269ef382cc9ff88dd1b7347bfbd4a7df1ed3ba96e25f26134a2fdc8d
MD5 be13f03966be144a07ffd063c5a336d1
BLAKE2b-256 bdb6a3e287c2bd65febf06673f3bf80a37c921082500c0695d9b2f07cbea42ca

See more details on using hashes here.

File details

Details for the file okf_agentbus-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: okf_agentbus-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 16.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for okf_agentbus-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ff999530d30d69c62755cac97be6a8e4e094bf1073bea6a0e342ab36150daaae
MD5 21402435979147f00dbedf26c6fd8fe1
BLAKE2b-256 5d72dd9be10b2f2c677b0026dfe03a2862953f2e98404ba0588cb3dfb340faa5

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