
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 代理席位的工作。
- 可以做什麼
- 在看板上建立、修改與追蹤工單,包含派發、專屬租約認領與續租
- 提交 commit、檔案與測試輸出作為證據,並由獨立審查席位核准或退回
- 透過看板提出與回答協調者問題及人工輸入請求,等待中的席位會被喚醒而非輪詢
- 把專案記憶、檢查點與交接保存在看板上,新工作階段可從上次中斷處繼續
- 讀取看板狀態、事件與各角色 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 分