Inter-agent message bus for local Claude Code sessions
Project description
Spanreed
An inter-agent message bus for local Claude Code sessions. Run one Claude session per repo; let them coordinate.
Status: alpha. The architecture and primitives are validated (see
docs/findings.md) and a working implementation is in place — pending end-to-end manual smoke test in real Claude Code. Not yet published to PyPI or the official marketplace.
Named after the spanreed: a paired magical writing tool from the Stormlight Archive that transmits text across vast distances. One side writes, the other side reads.
Install
Once published (not yet on PyPI):
uv tool install spanreed-bus
claude /plugin marketplace add Monkopedia/spanreed
claude /plugin install spanreed@spanreed
For now, from a local clone:
git clone git@github.com:Monkopedia/spanreed.git
cd spanreed
uv tool install --editable .
claude /plugin install $(pwd)/plugins/spanreed --scope user
The MCP server (spanreed-mcp) and CLI (spanreed) need to be on $PATH for the plugin to find them — uv tool install handles this.
Quickstart
Open two terminals, each in a different repo:
# Terminal A
cd ~/projects/repo-a && claude
# Terminal B
cd ~/projects/repo-b && claude
In terminal A, ask Claude to talk to the other session:
Ask agent at repo-b what version of Node it's using.
Claude in repo-A discovers the peer, sends the question, the peer answers, the answer comes back. The conversation is visible in both transcripts.
How it works
Two layers on Claude Code primitives:
- MCP server (
spanreed-mcp, per-session) exposes the bus API as typed tools: register, send, recv, list,wait_for_replywith timeout. - Plugin (auto-loaded) wires up a SessionStart hook for bus context, a Monitor for inbound wakeups, and points Claude at the MCP server.
State lives under ~/.claude/spanreed/ (registry + per-agent inboxes + per-session cursors). No central daemon — each session's MCP server is local and coordinates through shared files.
Read the full design in docs/architecture.md. Wire-format spec in docs/protocol.md.
Update
uv tool upgrade spanreed-bus
claude /plugin update spanreed@spanreed
Development
See docs/development.md for environment setup, running tests, and contribution conventions. The CLAUDE.md at the root captures the discipline rules — Claude sessions working on this repo should read it.
License
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 spanreed_bus-0.0.2.tar.gz.
File metadata
- Download URL: spanreed_bus-0.0.2.tar.gz
- Upload date:
- Size: 80.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b44bfc5152b6a465a88ea332d4dd8042589e806be08818be5201dfc7400bcc0
|
|
| MD5 |
64e90a649e20b8c1e08cf1f5c7724100
|
|
| BLAKE2b-256 |
e4a31fd29226283e28ea3dc51a01e473c5e66149fd8507ba5a18445355cc4357
|
File details
Details for the file spanreed_bus-0.0.2-py3-none-any.whl.
File metadata
- Download URL: spanreed_bus-0.0.2-py3-none-any.whl
- Upload date:
- Size: 19.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fce85a746f85ed7b68d9280bc38c7d46d37c2388fa45f0a4c3c326707a419b72
|
|
| MD5 |
520ea2e91f6c4a1f550ce7a7b2f95e65
|
|
| BLAKE2b-256 |
173e188f6eca1fe8479577c0a9983198ff3d3d7d2d511faddf9a4fcc1d600bd1
|