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

Documentation

For full documentation, see the docs/ directory:

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.3.1.tar.gz (34.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.3.1-py3-none-any.whl (24.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: okf_agentbus-0.3.1.tar.gz
  • Upload date:
  • Size: 34.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.3.1.tar.gz
Algorithm Hash digest
SHA256 9fc5053d120dee8fe3dddf64e1484bab96e64555f5960ca3e80c4a302778b61a
MD5 79d038143a76735d333fe6d396adf772
BLAKE2b-256 2d8c4ad3bb4b739bb4c7002fe8d6511f5bc2d1f40ae18b9bdebfb0763cbef551

See more details on using hashes here.

File details

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

File metadata

  • Download URL: okf_agentbus-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 24.0 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.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e3200e3b1a309d9881b010d1c299be3e2b554585c36b934e1711c356c23cb9c6
MD5 f33c4ec9205240983d834351bcc755be
BLAKE2b-256 adeb20f9387a80469747d2fcee32a8227c3e2f14d032911b687654cc8b080e01

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