
Swarm Rd Orchestrator
io.github.RudrenduPaul由 GitHub 账号 RudrenduPaul 发布v0.0.3更新于 Oct 24, 2026
Append-only event log for cross-agent context/memory sharing via 3 MCP tools.
概览
本地 MCP 服务器,提供只追加的 SQLite 事件日志,让并行代理按任务共享发现并拉取彼此的结果。
- 可以做什么
- 向某个任务的事件日志追加发现、结果或工具输出,并标注代理与类型(append_delta)。按从旧到新的顺序拉取任务的增量,可只取游标之后的记录(pull_deltas)。列出日志中所有任务及其增量数量(list_tasks)。
- 适用场景
- 当多个并行研究代理需要一个共享、持久的位置来写入发现并读取彼此的记录,而不想使用共享可变存储或协调服务器时。它是传输与持久化层,不是编排框架,作者称其为验证前的原型。
- 运行要求
- 本地 Python 3.10 或更高版本运行时;安装带 mcp 附加项的包,并通过 stdio 运行 mcp 子命令。无需 API 密钥,也不发起 LLM 调用。仅在 macOS 上测试,Windows 未验证。事件日志为本地 SQLite 文件(默认 swarm-events.db)。
安装
在 SourceWeft 中
- 打开 控制台中的 Swarm Rd Orchestrator,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
swarm-rd-orchestrator-cli
[PyPI] [npm] [License: Apache 2.0] [Python] [Tests] [Status]
Install • Quickstart • Command reference • MCP Server • Comparison • FAQ
Ray-native context and memory sharing for parallel research agents, with an agent-native CLI and MCP server.
[Demo: appending findings from two agents and pulling them back through swarm-rd-cli]
An append-only, SQLite-WAL-backed event log wrapped as a Ray actor, so parallel agents can write findings and pull each other's without a shared mutable store, plus a CLI and MCP server so both humans and other agents can drive it directly.
This is a Milestone 1 prototype (2026-08-03): validate the approach on a real task before building further. See Locked decisions below and spike.py for the actual validation harness.
Install
Either gives you a swarm-rd-cli command on your PATH. The npm package is a thin wrapper around the Python CLI: it execs the real binary, it does not reimplement it. Install the Python package too if you use the npm one.
Status: live on both registries (PyPI published via GitHub Actions OIDC, no stored token). Both were verified with a real install and a real command run in a clean environment, not just a successful upload.
[!WARNING] This is a pre-validation Milestone 1 spike (
0.0.x), not yet a stable release. Tested on macOS only; Windows support is unverified since Ray's own Windows support is more limited than Linux/macOS upstream.
Quickstart
Every data-returning command supports --json for agent and script consumption, no screen-scraping required. The mcp subcommand exposes append_delta, pull_deltas, and list_tasks as typed MCP tools over stdio, so an agent can call this programmatically instead of shelling out.
Features
- Atomic append, proven, not just claimed. A dedicated test simulates a crash mid-write and confirms the SQLite WAL layer leaves zero partial rows, not just a description of the guarantee.
- Structured output on every data command.
--jsononappend,pull, andlist-tasksmeans an agent shelling out to this CLI never has to screen-scrape human-formatted text. - An MCP server, not just a CLI.
swarm-rd-cli mcpexposes the same three operations as typed tools over stdio, so an agent can call this programmatically instead of spawning a subprocess. - Concurrency tested with real Ray actors, not mocked. The load-bearing test runs 3 actual Ray actors appending concurrently and reconciles the result, the same mechanism the real workload uses.
- Malformed input fails loudly. A delta missing
task_id,agent_id, orcontentraisesInvalidDeltaErrorbefore touching storage. No silent drops.
Command reference
[Demo: swarm-rd-cli --help output]
Generated from the CLI's own --help output:
[Demo: appending deltas from two more agents, then list-tasks and a --json pull]
MCP Server
swarm-rd-orchestrator-cli ships a Model Context Protocol (MCP) server, so an agent can call the event log directly as typed tools over stdio instead of shelling out to the CLI and parsing text.
Run it with:
Add it to Claude Desktop (or any other MCP client) by pointing it at that command in your config:
Three tools are exposed:
append_delta(task_id, agent_id, content, kind="note")- append a finding/result/tool-output to the event log for a task. Example:append_delta(task_id="task-1", agent_id="agent-a", content="found a race condition in the retry loop", kind="result").pull_deltas(task_id, since_cursor=0)- pull every delta for a task with id greater thansince_cursor, oldest first. Example:pull_deltas(task_id="task-1")returns the full history;pull_deltas(task_id="task-1", since_cursor=2)returns only deltas written after cursor 2.list_tasks()- list everytask_idcurrently in the event log with its delta count. Example:list_tasks()returns[{"task_id": "task-1", "delta_count": 2}].
Comparison
swarmmesh is a sibling project in this author's portfolio, also published as swarmmesh-cli on PyPI and npm. It's the more complete option today on almost every dimension below. This project exists as a deliberately Ray-native alternative, not because swarmmesh falls short.
If the Ray-native distributed-compute angle doesn't end up mattering for your use case, use swarmmesh instead. It's live, tested against real usage, and does more.
What is swarm-rd-orchestrator-cli, and why does it exist
swarm-rd-orchestrator-cli is a shared, durable event log for parallel AI research agents built on Ray's actor model. Each agent writes findings as structured deltas; any other agent can pull the full history for a task without a shared mutable store or a coordinating server process.
It exists to test a specific, narrow hypothesis: that Ray's actor and object-store model is a better fit for coordinating genuinely large numbers of parallel research agents than an HTTP-based coordination layer. That hypothesis is unproven. The project ships as a Milestone 1 spike specifically to test it against a real workload before any further investment, see Run the actual validation spike.
Build from source
Requires Python 3.10 or newer (needed for the mcp SDK dependency).
Run the tests
9/9 passing, including the load-bearing test: 3 concurrent Ray actors appending to one shared event log, reconciled with zero lost or duplicated deltas.
Run the actual validation spike
Edit REAL_TASK_ID, REAL_TASK_DESCRIPTION, and the sample agent findings in spike.py to reflect a real research task, then:
Read the printed rubric at the end. The decision rule: fewer than 3 qualifying architectural failure cases against raw Ray or LangGraph means falling back to a thin CLI wrapper instead of building this out further.
Locked decisions (2026-08-03)
- Primitive: Ray (actor model and object store), LangGraph as fallback
- Storage: SQLite, WAL mode
- Delta shape:
{task_id, agent_id, timestamp, content, kind} - Malformed delta raises
InvalidDeltaError, never silent - License: Apache 2.0
- Python: 3.10 or newer, required for the
mcpSDK - Publishing: live on PyPI (via GitHub Actions OIDC Trusted Publishing, no stored token) and npm, both verified with a real clean-environment install
FAQ
What does this actually do? It gives parallel AI agents, running as Ray actors, a shared and durable place to write findings and pull each other's, without stepping on each other's state. It's a transport and persistence layer, not an orchestration framework: it doesn't schedule agents or decide what they do.
How is this different from swarmmesh?
See Comparison above. Same core idea, different transport (Ray actors instead of HTTP), and swarmmesh is currently the more complete, already-published option.
Does this work on Windows, macOS, and Linux? Tested on macOS. Ray itself supports Linux and macOS natively; Windows support for Ray is more limited upstream, so treat Windows as unverified for this project specifically until someone confirms it.
Does this need my own API keys? No. This project makes no LLM calls of its own. It's a coordination layer that your own agents, whatever model or framework they use, write to and read from.
Is this safe to depend on?
No, not yet. This is a pre-validation Milestone 1 spike (versions 0.0.x), not a stable release. The event log's core guarantees (atomic append, no partial writes) are tested in test_event_log.py, but the project hasn't been validated against a real multi-agent workload beyond the spike script yet.
How do I use this from an agent, not just a human?
Either shell out to the CLI with --json on every command, or run swarm-rd-cli mcp and connect to it as an MCP server. Both give structured, parseable output.
Is this a library or just a CLI?
Both. event_log.py's EventLog and EventLogActor classes are directly importable if you're already in Python and don't need the CLI or MCP layer.
What license is this under, and can I use it commercially? Apache 2.0. Commercial use, modification, and redistribution are all permitted under its terms; see LICENSE for the full text.
Contributing
There's no CONTRIBUTING.md yet since this is a pre-validation spike, not an accepted-contributions project. Open an issue if you want to discuss a change before this exists formally.
License
Apache 2.0. See LICENSE for the full text.
来源:README.md,提交 4faff42
工具
0版本历史
1- v0.0.3最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分