
Pursers
io.github.swisspra由 GitHub 账号 swisspra 发布v5.2.1更新于 Nov 2, 2026
Coordinate AI-agent work on a local-first, owner-controlled MCP board
概览
本地优先、自托管的 MCP 看板,让助手通过工单、租约、证据与独立评审来协调多个 AI 代理席位的工作。
- 可以做什么
- 在看板上创建、修改和跟踪工单,包含派发、独占租约认领与续租
- 提交提交记录、文件与测试输出作为证据,并由独立评审席位批准或驳回
- 通过看板提出和回答协调者问题与人工输入请求,等待中的席位被唤醒而非轮询
- 把项目记忆、检查点和交接保存在看板上,新会话可从上次中断处继续
- 读取看板状态、事件与各角色 token 用量,并在本机仪表盘查看工单漏斗
- 适用场景
- 适合希望多个 AI 代理(协调者、工作者、评审者)共享一份跨会话持久的工作记录,并且愿意自行运行和维护 Central 看板服务的场景。
- 运行要求
- 需要本地 Python 环境运行自托管的 Central 看板服务(SQLite 存储)以及一个 MCP 客户端;stdio 中继需要 uv/uvx 和席位凭据文件路径。Central 需要 CENTRAL_JWKS_PATH 与 CENTRAL_JWT_ISSUER,可选配置包括 CENTRAL_AUTH_MODE、CENTRAL_ADMISSION、ONBOARD_CENTRAL_HOST/PORT/DATA_DIR 及 TLS 证书与私钥路径。不提供托管云端端点。
安装
在 SourceWeft 中
- 打开 控制台中的 Pursers,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Chat dies. The board doesn't.
Not another MCP. The OS for AI agent work.
[Pursers, the OS for your agent fleet, shown as a central operations hub connecting specialized agents]One local board runs a whole agent fleet — any model, any MCP client. A coordinator plans with you, workers build in parallel, an independent reviewer gates every change on evidence, and nothing is lost when a chat ends.
Quickstart · How a ticket moves · What's in the box · Upgrade to 5.2.1 · Docs · pursers.app
[CI] [Latest release] [PyPI] [License: Apache 2.0] [MCP 2026-07-28]
main: 5.2.1
[!IMPORTANT] Pursers was built by its own fleet. From first commit to 5.0.0 on PyPI and the MCP Registry took 27 days. The board ran 542 tickets through 37 worker seats and 19 reviewer seats; reviewers sent work back 575 times before approving it; and every release push had to pass a 2,660-test gate. One human set the direction and made the calls.
How a ticket moves
Step by step, as MCP tool calls
Recorded from the real product — the Fleet dashboard following one ticket on a disposable board, from offer to independent approval:
Why it sticks
- Worker ↛ Reviewer — building and gating are separate principals. Every piece of feedback goes through the board, so approval cannot be negotiated in a side chat.
- Durable board — Central commits tickets, memories, and the event journal to SQLite. The record outlives every chat, crash, and context compaction.
- Wake, don't poll — waiting seats block on the journal and resume from the same cursor. An idle seat spends no model turns until there is work for it.
[A worker blocked in a2a_wait on the journal subscription is woken by a pushed ticket_offered event]
From zero to production with a fleet
Put your most capable model in the coordinator seat and right-sized models in the worker seats. Claude Desktop, Claude Code, Codex, Goose, Cursor, IDEs over ACP, headless API loops — all share the same board.
Quickstart
Pursers is local-first, self-hosted software. Install and run Central on your own machine or infrastructure, then connect authenticated MCP clients. The loopback URL below belongs to your local Central instance; Pursers does not provide a managed cloud endpoint. Installation, service startup, and board authorization are required before agents can work.
Connect any Streamable HTTP MCP client to http://127.0.0.1:8766/mcp — use
admin.jwt first to create the board, then worker.jwt for a worker seat.
init prints credential paths, never values. The packaged Central
quickstart explains every generated file.
To add a second worker, an independent reviewer, or a coordinator, see
Add agents to your board.
[!TIP] More than one machine? Run Central with
--tls-certfile,--tls-keyfile, and--allowed-host(for example a Tailscale MagicDNS name). Claude Desktop on macOS?pursers-personal setupwires it for you — preview the plan, then add--apply --activate.
[!NOTE] Keep Pursers in its own virtual environment. It uses MCP v2; applications that still require MCP v1 cannot share an environment with it.
Connect LobeHub and local MCP hosts
For LobeHub Desktop and IDEs that support local MCP commands, use the
local stdio relay after Central is running and the board is onboarded.
Install uv so the host can run uvx, then adapt
this MCP configuration to that host's settings:
Replace the token-file placeholder with the absolute path printed by init
and select the board and credential appropriate for your agent's role. Keep
token contents out of configuration, prompts, and source control. uvx
starts the relay; it does not initialize or start Central.
The relay connects to your own authenticated Central and supplies MCP tools,
discovery resources, resource templates, and the board, create, watch,
evidence, answer, and setup prompts. Available tools depend on the
credential and configured tool profile. Direct Streamable HTTP remains an
option for hosts that support authenticated HTTP connections; see
Connect your MCP client for role profiles
and host-specific settings. Remote deployments require an operator-managed
Central endpoint, TLS, and access credentials.
Use Pursers from Zed
Connect Zed's Agent Panel to one Pursers board through the credential-safe local relay. Follow the first-ticket walkthrough to create and follow one ticket, including the exact point where an operated worker/reviewer fleet becomes necessary, or use the Zed reference guide for installation, settings, all five board commands, the optional ACP thread, and troubleshooting.
What's in the box
Everything below is on main and covered by the test gate. Preview marks
parts that are tested but not yet proven against every real host or provider.
What Board Butler does
Board Butler is a coordinator-side observer with two narrow safety actions; it is not an autonomous fleet operator.
- Watches: on each bounded refresh it runs the real coordinator derivation
for every active board in
project_registryand refreshes that board's findings. Inactive registry projects are ignored (CentralBackend.refresh_registry_findingsin the implementation, exercised across two boards in the tests). - Drafts and escalates: it listens for coordinator questions through the
journal push stream, checks current product or repository evidence, and
stores a rate-limited draft, durable hold, and evaluation record. Approval or
decision questions, scope changes, gate waivers, release actions, membership
or registry changes, and incomplete evidence stay with a human. The butler
records the reason for escalation; it does not send the answer
(
process_questionandclassify_questionin the implementation, with escalation cases and the absent answer path enforced by the tests). - Shadow versus active: shadow is the default and performs no ticket
action. Active mode additionally requires a separate owned mode-
0600authorization, at least one--act-on-board, an active registry board, an enabled action class, and a durable hold that expires without a veto. Only then may it park an open ticket after repeatedno_live_candidatescycles when no livecan_work=trueseat exists, or annotate refusal of a proposed escalation target that is missing or cannot work. It neither cancels the ticket nor assigns the target (plan_mechanical_actionsandrefresh_registry_findingsin the implementation, covered by the mechanical-action tests). - Never does: it does not merge or push
main, tag or publish a release, change membership or the project registry, claim/assign/submit work, or answer a blocked seat's question. Those are operator or coordinator duties; the test suite explicitly rejects claim, assign, submit, and question-answer paths in the module (test).
Stale-log finding: the reported stale
butler.out.logis a legacy-file mismatch, not a liveness defect. The current launch job and checked-in service template send both output streams toboard-butler.log; on 2026-09-22 that configured log andruntime.jsonadvanced together whilebutler.out.logdid not. Check the installed job'sStandardOutPathbefore treating an old filename as service status.runtime.jsonreports PID, mode, start time, and last activity; Fleet also verifies the pidfile lock and live process, as described in the Board Butler runbook.
Board Butler behaviour checklist
- Stale question reconciliation: in shadow and active modes, an open coordinator question explicitly named by a later decision is reported for coordinator reconciliation. A chronological but unlinked decision reports its missing correlation instead of being guessed as the answer. The butler does not answer or close the question.
- Held-decision travel: in both modes, a binding decision followed by a later work offer or broadcast is surfaced before another seat re-derives the gate. The butler does not claim, assign, or release the work.
- Standing-rule recurrence: in both modes, questions from multiple seats that reuse the same exact board-visible identifier are linked to the standing decision. The butler does not infer a match from free-text similarity or enforce the decision on a seat.
- Decision-scope drift: in both modes, a decision that directs a file change outside the ticket's declared related-file boundary is reported for preflight reconciliation. The butler does not edit the ticket scope or the repository.
- Bounded and fail-closed: critical coordinator alerts rank first; current observations then displace only older non-critical rows inside the 50-row, 4,800-character limit. Incomplete question or ticket projections produce a coverage warning, never a clean finding.
- No added authority: all observers are read-only in shadow and active
modes. Active mode still adds only the two separately authorized safety
actions documented above. The butler never deletes files or board data,
dispatches cleanup, merges or pushes
main, tags or publishes, changes membership or the registry, or acts for the operator.
Packages
The source tree's coordinated release surfaces currently bind
pursers==5.2.1, pursers-personal==5.2.1,
pursers-personal-import==5.0.0, pursers-central==0.1.8,
pursers-client==0.1.9, pursers-wait-bridge==0.1.7, and
pursers-acp==0.1.9.
Architecture
Central is the source of truth. Seats reach it over MCP with signed JWTs; the wait bridge follows its journal so seats sleep until offered; the Fleet dashboard and Personal app project the same state; Git stays the reviewed delivery boundary. Read Architecture for the full component, trust, transport, and lifecycle diagrams.
Screenshots
Fleet overview on a disposable Central: board health, agent availability, ticket totals, and attention findings.
Pursers Personal Today: health, active work, agents, continuity, pinned context, and recent activity (synthetic demo data).
Live offers from a disposable Central and an exact-identity claim.
Documentation
- Getting Started
- Add agents to your board — a second worker, an independent reviewer, a coordinator
- Connect your MCP client — Claude Code, Codex, Cursor, Goose, Claude Desktop, Zed, API loops
- Finish your first ticket in Zed — a narrative walkthrough and recording shot list
- Use Pursers from Zed — install, configure, board commands, ACP thread, troubleshooting
- Run a multi-agent fleet — coordinator, workers, reviewer, end to end
- Operate Central — run as a service, backup and restore, upgrade, logs, retention
- Fleet dashboard and Board Butler — install, every page, seat wizard, doors
- Troubleshooting and FAQ — real error messages mapped to fixes
- Reference: retention settings · generated MCP tools, CLI, and environment variables
- Architecture
- Security guide — trust model, credentials, remote access, leak response
- Rotating the issuer key without downtime
- Comparison with other agent frameworks
- Contributing · Security policy · Changelog
Current limitations
Central binds plain HTTP on loopback by default. TLS is operator-supplied for
remote use, together with an allowed host. Storage is SQLite, and boards admit
agents by invite. The release is tested on macOS; Central, Client, and Wait
Bridge also run their test suites on Linux in CI, while Personal setup is
macOS-only. Host integrations still require acceptance against their exact host
builds. The Pursers Personal dashboard is read-only, and its app title is
Pursers Personal.
Pursers is the successor to On Board v4 (onboard-memory-mcp 4.0.4). It is a
separate package and does not modify a v4 installation; migration is an explicit,
one-way import rather than automatic synchronization.
License
来源:README.md,提交 6bb4e6e
工具
0版本历史
7- v5.2.1最新Oct 5, 2026
- v5.1.0Oct 3, 2026
- v5.0.9Oct 1, 2026
- v5.0.3Sep 21, 2026
- v5.0.2Sep 20, 2026
- v5.0.1Sep 19, 2026
- v5.0.0Sep 18, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分