Pursers について
Pursersは、AIエージェント群を調整するローカルファーストのボードで、チャット終了後もチケットを保持します。コーディネーターが計画し、ワーカーが並行して実装し、独立したレビュアーが提出された証拠に基づいて変更を審査します。
主な機能
- 01チケットとイベントの永続化
- 02コーディネーター、ワーカー、レビュアーの役割
- 03リース付きの担当取得と並行作業
- 04証拠に基づく独立レビュー
- 05ボード上のメモリーと人間への質問
- 06フリートダッシュボードと使用量集計
活用シーン
- 01複数エージェントによる並行実装の調整
- 02提出された証拠に基づく変更レビュー
- 03チャット終了後の作業再開
- 04人間への質問とプロジェクト引き継ぎの管理
MCP 対応
Pursers CentralはStreamable HTTPのMCPサーバーを通じて、ボード、チケット、レビュー、メモリー、イベント、ポリシーのツールを提供します。MCPクライアントは役割別の認証情報でボードに接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx pursers-centralONBOARD_CENTRAL_HOSTLoopback bind host used by the packaged runtimeONBOARD_CENTRAL_PORTLoopback bind port used by the packaged runtimeONBOARD_CENTRAL_DATA_DIRPrivate Central data directory; --data-dir/--data-root is the equivalent CLI inputONBOARD_CENTRAL_LOG_LEVELPackaged runtime log levelONBOARD_CENTRAL_ALLOWED_HOSTSOptional comma-separated bare Host names accepted in addition to the bind hostONBOARD_CENTRAL_TLS_CERTFILEOptional TLS certificate path; requires ONBOARD_CENTRAL_TLS_KEYFILEONBOARD_CENTRAL_TLS_KEYFILEシークレットOptional TLS private-key path; requires ONBOARD_CENTRAL_TLS_CERTFILECENTRAL_ADMISSIONCentral admission policy; Pursers supports invite-only admissionCENTRAL_AUTH_MODEシークレットCentral authentication mode; Pursers supports JWT authenticationCENTRAL_JWKS_PATHPath to the issuer public JWKS used to verify seat credentialsCENTRAL_JWT_AUDIENCEMCP resource URL in audience and resource claims; defaults to the loopback bind URLCENTRAL_JWT_CLOCK_SKEWAllowed JWT clock skew in secondsCENTRAL_JWT_ISSUERExact issuer URL in every accepted seat credentialCENTRAL_PRINCIPAL_STREAM_CAPMaximum concurrent event streams accepted per principalCENTRAL_REAPER_INTERVAL_SInterval in seconds between expired-lease reaper sweepsCENTRAL_REQUEST_STATE_KEY_FILEシークレットOptional restart-safe request-state keyring pathPURSERS_LEGACY_TOOLSString flag: use 1 to expose deprecated coordination tools; use 0 to keep them hiddenSTORE_BACKENDCentral storage backend; Pursers supports SQLiteローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
チャットは終わる。ボードは終わらない。
新たな MCP ではありません。AI エージェントの作業を支える OS です。
1つのローカルボードでエージェント群全体を運用できます。あらゆるモデル、あらゆる MCP クライアントに対応します。 コーディネーターがあなたと一緒に計画を立て、ワーカーが並行して構築し、独立したレビュアーが証拠に基づいてすべての変更を審査します。チャットが終わっても、何も失われません。
クイックスタート · チケットの進み方 · 同梱内容 · 5.2.1 へのアップグレード · ドキュメント · pursers.app
main: 5.2.1
重要
Pursers は、自らのエージェント群によって構築されました。 最初のコミットから、PyPI と MCP Registry への 5.0.0 の公開まで、かかった日数は27日でした。ボードでは 37のワーカー席と19のレビュアー席を通じて542件のチケットが処理され、 承認に至るまでレビュアーは作業を575回差し戻しました。また、すべてのリリースプッシュは 2,660件のテストによるゲートを通過する必要がありました。1人の人間が方向性を定め、判断を下しました。
| 導入前 | 導入後 |
|---|---|
| チャットが終わる → 作業が消える。誰が何を担当しているのか?証拠はどこにあるのか? | ボードにチケットが残ります。担当、リース、証拠、レビューを管理します。チャットは終わる。ボードは終わらない。 |
チケットの進み方
MCP ツール呼び出しを使った手順
sequenceDiagram
autonumber
actor You
participant C as Coordinator
participant B as Board (Central)
participant W as Worker
participant R as Reviewer
You->>C: intent
C->>B: ticket_create
B-->>W: offer — wakes the waiting seat
W->>B: ticket_claim — lease starts
Note over W: builds in its own checkout,<br/>renews the lease
W->>B: ticket_submit — commit, files, test output
B-->>R: review offer
alt evidence holds
R->>B: approve
else evidence falls short
R->>B: reject with fix instructions
B-->>W: back to the same worker
end
B-->>You: approved work, ready to merge
実際の製品から記録 — 使い捨てボード上で、1件のチケットが提案から独立した承認に至るまでを追跡する Fleet ダッシュボード:
| 役割 | 内容 |
|---|---|
| コーディネーター | あなたと対話し、意図をチケットに変換して更新し、各席から寄せられる質問に答え、ボード上のコンテキストを維持します |
| ワーカー | 提案されたチケットを担当し、更新可能なリースのもとで構築し、正確な証拠を提出します |
| レビュアー | 作業を行った席とは別の主体として、その証拠に基づいて承認または却下します |
| あなた | 意図を定め、質問に答え、承認済みの作業をマージします。最終判断はあなたが下します |
定着する理由
- ワーカー ↛ レビュアー — 構築と承認判定は別の主体が担当します。フィードバックはすべてボードを通るため、個別のチャットで承認を取り付けることはできません。
- 永続的なボード — Central はチケット、メモリー、イベントジャーナルを SQLite にコミットします。記録はチャットやクラッシュ、コンテキストの圧縮後も残ります。
- ポーリングせずに起こす — 待機中のシートはジャーナル上でブロックし、同じカーソルから再開します。作業が届くまで、アイドル状態のシートはモデルのターンを消費しません。
フリートでゼロから本番運用まで
| 段階 | ボードの動作 |
|---|---|
| 計画 | コーディネーターは、必要な証拠、禁止された操作、ティア、スキルを指定した、範囲の明確なチケットに目標を分割します。 |
| 並列で構築 | 各チケットは、適格なシートの1つに割り当てられます。クレームは排他的でリースされます。放棄されたリースは戻され、次のシートは最初からやり直すのではなく、最後にプッシュされたコミットから作業を続けます。 |
| 証明 | ワーカーは自分の作業をクローズできません。コミット、ファイル、テスト出力を提出すると、独立したレビュアーが承認するか、具体的な修正点を添えて差し戻します。 |
| 問い合わせ | 人間の支援が必要なシートは、ボードを通じて問い合わせ、ターンを消費せずに待機を続けます。回答が届くと起動します。 |
| 記憶 | プロジェクトメモリー、チェックポイント、引き継ぎはボード上に保存されるため、新しいセッションは前のセッションが停止したところから再開できます。 |
| 集計 | チケットには役割別のモデル使用量(コーディネーター、ワーカー、レビュアーのトークン合計とコーディネーターの負担割合)が記録され、プロンプトのテキストは保存されません。 |
| 低コストで運用 | Central はバイト単位で安定したプレフィックス優先の応答とコンパクトな変更レシートを出力し、アイドル状態のシートはモデルのターンを消費しません。これはベンダーを問わず機能します。Pursersを構築したOpenAI Codexフリートは、約10億トークンを使用した日も含め、計測したすべての日で入力の97~98%をプロンプトキャッシュに保持しました。また、5.0.0をリリースしたAnthropic Claudeのオペレーターシートでは**99%**を達成しました。設計 · 数値 |
| 監視 | Fleetダッシュボードには、チケットの流れ、稼働中のシート、クレーム、レビューの負荷、すべてのプロジェクトボードが1つの画面に表示されます。 |
最も高性能なモデルをコーディネーターシートに、用途に合ったモデルをワーカーシートに配置してください。Claude Desktop、Claude Code、Codex、Goose、Cursor、ACP経由のIDE、ヘッドレスAPIループは、すべて同じボードを共有します。
クイックスタート
python3 -m venv .venv && . .venv/bin/activate
python -m pip install pursers
pursers-central init ./pursers-local
pursers-central run ./pursers-local
任意のStreamable HTTP MCPクライアントを http://127.0.0.1:8766/mcp に接続します。最初に admin.jwt を使ってボードを作成し、その後、ワーカーシートには worker.jwt を使います。init は認証情報のパスを表示しますが、値は表示しません。パッケージ版Centralのクイックスタートでは、生成されるすべてのファイルについて説明しています。2人目のワーカー、独立したレビュアー、またはコーディネーターを追加するには、ボードにエージェントを追加するを参照してください。
ヒント
複数のマシンを使いますか?
--tls-certfile、--tls-keyfile、--allowed-host(たとえばTailscale MagicDNSの名前)を指定してCentralを実行します。 macOSでClaude Desktopを使いますか?pursers-personal setupが設定します。まずプランをプレビューし、その後--apply --activateを追加します。
メモ
Pursersは専用の仮想環境にインストールしてください。PursersはMCP v2を使用するため、MCP v1が引き続き必要なアプリケーションとは環境を共有できません。
Zed から Pursers を使う
Zed の Agent Panel を、認証情報を安全に扱うローカルリレー経由で 1 つの Pursers ボードに接続します。 最初のチケットの手順 に従って、チケットを 1 つ作成して追跡してください。運用担当のワーカー/レビュアーのフリートが必要になる正確なタイミングも確認できます。または、インストール、設定、5 つすべてのボードコマンド、オプションの ACP スレッド、トラブルシューティングについてはZed リファレンスガイドを参照してください。
同梱内容
以下はすべて main に含まれ、テストゲートの対象です。プレビューは、テスト済みですが、すべての実ホストまたはプロバイダーでの動作がまだ実証されていない部分を示します。
| コンポーネント | 内容 |
|---|---|
Central (pursers-central) | ボードサービスです。ボード、チケット、レビュー、質問、人間からの入力、メモリ、状態、イベント、保持、ポリシー用の 50 以上の MCP ツールを Streamable HTTP 経由で提供します。JWKS を使用した RS256 JWT、招待制の参加、ボードに紐付けられたプリンシパル、SQLite ストレージ、/healthz を備えています。 |
Client (pursers-client) | シートと自動化向けの非同期 Python BoardClient です。再接続、重複排除、カーソルに対応した、サブスクリプション優先のイベントストリームも含まれます。 |
Wait bridge (pursers-wait-bridge) | ワーカーとレビュアー向けのプッシュ対応 a2a_wait、ボードのダイジェスト、質問と人間からの入力のブリッジ、1 つのワーカープールですべてのボードに対応するマルチプロジェクトレジストリ、ボードごとのワーカーおよびレビュアー認証情報を扱う pursers-door を提供します。 |
| Fleet dashboard | ループバックのオペレーター UI です。フリートのホーム、ボード、エージェント、操作のほか、ボードごとのチケット、タイムライン、変更、フロー、ルートを表示します。Claude Code、Codex、Goose、Claude Desktop 用のシート設定ウィザード(計画 → 適用 → 診断)、ドア、プロジェクトのオンボーディング、人間からのリクエストの解決、正確な SHA に基づくアップグレードも備えています。 |
| Coordinator daemon | インテーク、ディスパッチ分析、アクティブなヒント、上限付きの調査結果、決定論的なリプレイシミュレーターを提供します。 |
| Seat kit | ホスト固有のシート設定と、すぐに使えるワーカーおよびレビュアー向け CLI(list、claim、renew、submit、wait、approve、reject)を生成します。 |
Pursers Personal (pursers-personal) | macOS 上の Claude Desktop 向けの単一オーナー用ボードです。読み取り専用の MCP Apps ダッシュボード(ホーム、プロジェクト、作業、チーム、承認、アクティビティ、設定)と、セットアップ、診断、ローテーション、ロールバック、アンインストールのライフサイクル一式を備えています。 |
Personal import (pursers-personal-import) | On Board v4 からの一方向かつ確認可能なインポートです。再試行とロールバックに対応しています。 |
ACP agent (pursers-acp) | Zed などの ACP IDE ホスト向けボードアシスタントです。自分のチケットとオファー、ボードの状態、権限で制限された作成と注釈、ライブ監視に対応します。プレビュー。 |
| Headless worker runtime | OpenAI 互換エンドポイント向けの API 駆動型ワーカーと独立したレビュアーです。制限されたツール、チケットごとのワークツリー、リース更新、使用量の計上に対応します。プレビュー。 |
| Board Butler | コーディネーターの調査結果を更新し、コーディネーターからの質問に対する、証拠に基づいた回答案を作成します。別途認可されるアクティブモードでは、範囲を限定した 2 つの安全操作を実行できます。プレビュー。 |
| Connectors | Azure DevOps のプルリクエストコネクターと AionUi ホスト拡張機能です。プレビュー。 |
| Board move | Central インスタンス間でボードをエクスポートおよびインポートします。 |
Board Butler の役割
Board Butler はコーディネーター側のオブザーバーであり、範囲を限定した安全措置を 2 つ実行します。自律型のフリート運用ツールではありません。
- 監視: 範囲を限定した各リフレッシュ時に、
project_registry内のすべてのアクティブなボードについて、実際のコーディネーターによる導出処理を実行し、そのボードの検出結果を更新します。非アクティブなレジストリプロジェクトは無視されます(実装のCentralBackend.refresh_registry_findings。2 つのボードを対象にテストで検証されています)。 - 下書きの作成とエスカレーション: ジャーナルのプッシュストリームを通じてコーディネーターからの質問を受け取り、現在のプロダクトまたはリポジトリの根拠を確認して、レート制限付きの下書き、永続的な保留、評価記録を保存します。承認や判断に関する質問、スコープの変更、ゲート免除、リリース操作、メンバーシップやレジストリの変更、不完全な根拠については、人間が対応します。Butler はエスカレーションの理由を記録しますが、回答は送信しません(実装の
process_questionとclassify_question。テストでは、エスカレーションのケースと回答経路が存在しないことが検証されています)。 - シャドウとアクティブ: デフォルトはシャドウモードで、チケットに対する操作は行いません。アクティブモードにはさらに、所有者が設定した別個のモード
0600の認可、少なくとも 1 つの--act-on-board、アクティブなレジストリボード、有効なアクションクラス、拒否されないまま期限切れとなる永続的な保留が必要です。これらの条件がすべてそろった場合に限り、ライブのcan_work=trueの席が存在せず、no_live_candidatesサイクルが繰り返されたときに、オープンチケットを保留状態にできます。また、提案されたエスカレーション先が存在しないか作業できない場合、その拒否を注記できます。チケットをキャンセルしたり、エスカレーション先を割り当てたりすることはありません(実装のplan_mechanical_actionsとrefresh_registry_findings。機械的操作のテストで検証されています)。 - 決して行わないこと:
mainのマージやプッシュ、リリースのタグ付けや公開、メンバーシップやプロジェクトレジストリの変更、作業の受諾・割り当て・提出、ブロックされた席からの質問への回答は行いません。これらはオペレーターまたはコーディネーターの役割です。テストスイートでは、作業の受諾・割り当て・提出、および質問への回答経路を明示的に拒否しています(モジュールのテスト)。
古いログに関する検出結果: 報告された古い
butler.out.logは、稼働上の欠陥ではなく、レガシーファイルとの不一致です。現在の起動ジョブとチェックイン済みのサービステンプレートは、両方の出力ストリームをboard-butler.logに送信します。2026-09-22には、設定されたログとruntime.jsonがともに更新されましたが、butler.out.logは更新されませんでした。古いファイル名をサービスの状態と判断する前に、インストール済みジョブのStandardOutPathを確認してください。runtime.jsonには PID、モード、開始時刻、最終アクティビティが記録されます。Fleet は、Board Butler 運用手順書に記載されているように、pidfile のロックと実行中のプロセスも確認します。
Board Butler の動作チェックリスト
- 古い質問の照合: シャドウモードとアクティブモードの両方で、後続の決定が明示的に指定した未解決のコーディネーター質問は、コーディネーターによる照合のために報告されます。時系列では後の決定でも、関連付けがない場合は、回答と推測せず、対応関係が欠けていることを報告します。butler は質問に回答したり、終了したりしません。
- 保留中の決定の伝達: 両モードで、拘束力のある決定の後に作業のオファーまたはブロードキャストがあった場合、別の席がゲートを再導出する前に、その決定が提示されます。butler は作業を取得、割り当て、または解除しません。
- 継続ルールの再発: 両モードで、複数の席からの質問が、ボード上に表示された同一の識別子を正確に再使用している場合、それらの質問は継続中の決定に関連付けられます。butler は自由記述の類似性から一致を推測したり、席に決定を強制したりしません。
- 決定範囲の逸脱: 両モードで、チケットに宣言された関連ファイルの範囲外にあるファイル変更を指示する決定は、事前確認のために報告されます。butler はチケットの範囲もリポジトリも編集しません。
- 範囲を制限し、フェイルクローズにする: 重要なコーディネーター向けアラートを最優先し、現在の観測結果は、50 行、4,800 文字の上限内で、古い重要度の低い行だけを置き換えます。質問またはチケットの投影が不完全な場合は、問題なしとは判定せず、カバレッジ警告を出します。
- 権限を追加しない: シャドウモードとアクティブモードの両方で、すべてのオブザーバーは読み取り専用です。アクティブモードでも追加されるのは、上記で説明した、個別に認可された 2 つの安全措置だけです。butler はファイルやボードデータを削除したり、クリーンアップを実行したり、
mainをマージまたはプッシュしたり、タグ付けや公開をしたり、メンバーシップやレジストリを変更したり、オペレーターに代わって操作したりすることはありません。
パッケージ
| パッケージ | 内容 |
|---|---|
pursers==5.2.1 | Central、クライアント、Personal、インポーターをインストールします |
pursers-central==0.1.8 | ボードサービス |
pursers-client==0.1.9 | 非同期 Python クライアント |
pursers-personal==5.2.1 | 1 人所有者向けボードおよび MCP App ダッシュボード |
pursers-personal-import==5.0.0 | On Board v4 からのインポーター |
pursers-wait-bridge==0.1.7 | 席向けの待機ブリッジおよびドアツール |
pursers-acp==0.1.9 | IDE 向け ACP ボードアシスタント |
ソースツリーの連携リリース対象では、現在、
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、
pursers-acp==0.1.9 が固定されています。
アーキテクチャ
flowchart LR
subgraph Seats
C[Coordinator]
W1[Worker]
W2[Worker]
R[Reviewer]
end
C & W1 & W2 & R -- "MCP + JWT" --> Central[("Central<br/>SQLite board + journal")]
Bridge[Wait bridge] -- "subscriptions/listen" --> Central
W1 & W2 & R -. "block until offered" .-> Bridge
Central --> Dash[Fleet dashboard]
Central --> Personal[Personal MCP App]
W1 & W2 -- "commits" --> Git[(Git)]
R -- "verifies" --> Git
Central が信頼できる唯一の情報源です。席は署名付き JWT を使って MCP 経由で Central に接続します。wait bridge はジャーナルに従い、オファーがあるまで席を待機させます。Fleet ダッシュボードと Personal アプリは同じ状態を表示し、Git はレビューを経たデリバリーの境界として維持されます。コンポーネント、信頼、トランスポート、ライフサイクルの各図については、アーキテクチャ をお読みください。
スクリーンショット
使い捨ての Central 上の Fleet 概要:ボードの健全性、エージェントの稼働状況、チケット数、注意が必要な項目。
Pursers Personal の Today:健全性、進行中の作業、エージェント、継続性、ピン留めされたコンテキスト、最近のアクティビティ(合成デモデータ)。
使い捨ての Central からのライブオファーと、正確な ID による取得。
- はじめに
- ボードにエージェントを追加する — 2人目のワーカー、独立したレビュアー、コーディネーター
- MCP クライアントを接続する — Claude Code、Codex、Cursor、Goose、Claude Desktop、Zed、API ループ
- Zed で最初のチケットを完了する — ナラティブ形式の手順ガイドと録画用ショットリスト
- Zed から Pursers を使う — インストール、設定、ボードコマンド、ACP スレッド、トラブルシューティング
- マルチエージェントフリートを実行する — コーディネーター、ワーカー、レビュアーをエンドツーエンドで実行
- Central を運用する — サービスとしての実行、バックアップと復元、アップグレード、ログ、保持
- フリートダッシュボードと Board Butler — インストール、各ページ、シートウィザード、ドア
- トラブルシューティングと FAQ — 実際のエラーメッセージとその修正方法
- リファレンス:保持設定 · 自動生成される MCP ツール、CLI、環境変数
- アーキテクチャ
- セキュリティガイド — 信頼モデル、認証情報、リモートアクセス、情報漏えいへの対応
- ダウンタイムなしで発行者キーをローテーションする
- 他のエージェントフレームワークとの比較
- コントリビューション · セキュリティポリシー · 変更履歴
現在の制限事項
Central はデフォルトでループバック上の平文 HTTP にバインドします。リモート利用には、許可するホストとともに、オペレーターが TLS を用意する必要があります。ストレージには SQLite を使用し、ボードへのエージェントの参加は招待制です。このリリースは macOS でテストされています。Central、Client、Wait Bridge は CI で Linux 上でもテストスイートを実行していますが、Personal のセットアップは macOS のみです。ホストとの統合には、引き続き各ホストの正確なビルドでの受け入れテストが必要です。Pursers Personal のダッシュボードは読み取り専用で、アプリのタイトルは Pursers Personal です。
Pursers は On Board v4(onboard-memory-mcp 4.0.4)の後継です。別パッケージであり、v4 のインストール環境は変更しません。移行は自動同期ではなく、明示的に実行する一方向のインポートです。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。


