mcpField
O
Otter Bridge

Otter Bridge

ローカル
github.com/typangaa開発ツール34 週間前に更新

Otter Bridge について

入力メタデータとREADMEの内容は一致していません。READMEに記載されているweirは、隔離されたCLIエージェントワーカー向けのタスクランナー兼GPUスロットスケジューラーで、Otter Bridgeではありません。新しいGit worktree、期限、隔離チェック、JSON記録でタスクを管理し、MCPは使用しません。

主な機能

  1. 01タスクごとに新しいGit worktreeを作成
  2. 02GPUスロットを排他的にリース
  3. 03厳格な実行期限を設定
  4. 04隔離環境で検証チェックを実行
  5. 05タスク結果をJSONで記録

活用シーン

  1. 01制限付きコーディング作業を低コストのワーカーに委任
  2. 02複数ワーカー間でGPUスロットを割り当て
  3. 03隔離チェックを実行してパッチをレビュー

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

weir

隔離された CLI エージェントワーカー向けのタスクランナー兼 GPU スロットスケジューラーです。静的バイナリ 1 つで動作し、デーモンは不要です。

コーディングエージェント(たとえば Claude Code のサブエージェント)が、範囲を限定したジョブを、より低コストのワーカーに渡します。weir はそのジョブに新しい git worktree、単一の GPU スロットのリース、厳格な期限、隔離された検証チェック、1 件の JSON レコードを用意し、その後は処理に介入しません。呼び出し元がパッチをレビューしてコミットします。

  • HTTP、MCP、サーバー、API キーはありません。認証情報は各ワーカーが独自に管理します。
  • weir が実行するのは pi-worker、agy-worker、agent-jail、git のみです。
  • weir がコミット、マージ、プッシュすることはありません。
  • プロンプト用のパイプを除き、すべての起動時に stdin は null です。

設計:DESIGN.md。決定記録:docs/design-v1.md。 履歴:CHANGELOG.md。

インストール

cargo install --path . --root ~/.local          # installs ~/.local/bin/weir

または、GitHub リリースから weir-<version>-x86_64-unknown-linux-gnu.tar.gz をダウンロードし、隣にある .sha256 で検証して、weir を PATH に配置してください。

実行時要件:Linux、git、設定したワーカースクリプト(pi-worker、agy-worker)が PATH 上にあること、チェック用の agent-jail(bwrap を含む)。

クイックスタート

mkdir -p ~/.config/weir
cp examples/weir.v2.example.toml ~/.config/weir/weir.toml   # edit paths and checks
weir validate --deep          # wrappers, bwrap, agent-jail WT_ROOTS, state_dir
weir status
weir task run --repo ~/code/myrepo --base main --worker pi \
  --prompt-file notes.md --check web-typecheck --json

設定の検索順序:--config > $WEIR_CONFIG > $XDG_CONFIG_HOME/weir/weir.toml > ~/.config/weir/weir.toml。./weir.toml は意図的に読み込みません。ファイルには version = 2 が含まれている必要があります。weir schema を実行すると JSON Schema が出力されます。

コマンド

すべてのコマンドで --json、-c/--config、--log-level、--log-format を指定できます。

task
# One worker, two checks, keep the worktree for review (default cleanup=never)
weir task run --repo ~/code/myrepo --base main --worker pi --replica auto \
  --prompt-file notes.md --check web-typecheck --check web-lint --json

# Walk an escalation ladder: pi, then cloud models, on timeout/empty/quota
weir task run --repo ~/code/myrepo --ladder default --prompt-stdin --json < notes.md

weir task list --since 24h
weir task show 20261001-fix-tones-3fa2            # ledger record
weir task show 20261001-fix-tones-3fa2 --patch    # the diff
weir task clean --merged                          # or: <ID>, --older-than 7d

各実行では、paths.wt_roots のいずれかの下に wt/<id> を作成し、ラッパーを実行して patch.diff を取得し、隔離された [check.*] エントリを実行し、<state_dir>/ledger.jsonl に weir.task/1 の行を 1 件追加して、--json を指定した場合はその内容を出力します。--cleanup never|on-success|always で worktree の削除を制御します。

lease
# Run a wrapper under an exclusive slot; {replica} is filled with the winner
weir lease run --slot gpu-a=a --slot gpu-b=b --wait-timeout 600 -- \
  pi-worker -b {replica} /wt/notes /tmp/prompt.md
weir lease status --json     # {"slots":[...],"cooldowns":{"agy":{"<model>":<unix>}}}

リースには flock ファイルを使用するため、保持者がクラッシュするとスロットは自動的に解放されます。--affinity KEY を指定すると、最後にそのキーの処理を担当したスロットが優先されます(プレフィックスキャッシュをウォーム状態に保てます)。lease は設定を読み込まず、pi-worker と agy-worker のみ受け付けます。

worker
weir worker run --worker pi --replica a /wt/notes /tmp/prompt.md

上限付きの出力と厳格な期限を設定し、独自のプロセスグループで 1 つのラッパーを実行します。リース、worktree、チェックは使用しません。

validate, status, schema, config
weir validate [--deep]    # exit 0 valid, 1 invalid
weir status               # workers, slots, ladders, checks, active agy cooldowns
weir schema               # JSON Schema of the v2 config
weir config path          # resolved config file
weir version

終了コード

コード意味
0成功(task:ワーカーが成功し、すべてのチェックに合格)
1設定または実行時エラー
2使用方法のエラー
3ワーカーの出力が空
5Jail に拒否された
6ワーカーがアクションを拒否された
7クォータ超過(ラダーも使い切った)
10ワーカーは成功したが、チェックに失敗
124タイムアウト
75lease run:--wait-timeout までに空きスロットがない
126 / 127lease run:ワーカーを起動できなかった/見つからなかった

それ以外の場合、lease run は子プロセス自身の終了コードを返します。呼び出し元のスクリプトは JSON を解析せずに、これらのコードに応じた分岐ができます。

ラッパーの契約

weir はラッパーを <worker>-worker [-b REPLICA | -m MODEL] -t <secs> <WORKDIR> <PROMPT_FILE> として実行し、以下を想定します。

ラッパーの終了コード意味weir の種類
0成功ok
124ラッパーのタイムアウトtimeout
3出力が空、または stderr に quota_pattern が含まれる場合はクォータ超過empty / quota
6アクションが拒否されたdenied
5Jail に拒否されたjail_refused
2使用方法usage
その他失敗error
  • pi-worker:ローカルの llama.cpp ワーカー。-b a|b で固定します。スロットは gpu-a/gpu-b です。
  • agy-worker:クラウドワーカー。-m でモデルを選択します。クォータに達すると、モデルごとのクールダウンを <state_dir>/cooldown.json に書き込みます。
  • agent-jail:ワーカーと各チェックを、WT_ROOTS の下にある 1 つの worktree 内に閉じ込めるサンドボックス(bubblewrap)です。weir はその外部でワーカーコードを実行しません。weir validate --deep は paths.wt_roots がこの設定と一致することを検証します。

ラダーが次の段階に進むのは、各段階で新しい worktree を使い、timeout、empty、quota が発生した場合のみです。denied、jail_refused、チェック失敗では次の段階に進みません。

開発

export CARGO_TARGET_DIR=$HOME/.cache/weir-target
cargo fmt --all --check
cargo clippy --all-targets --locked -- -D warnings
cargo test --all-targets --locked
cargo build --release --locked

ライセンス

Apache-2.0。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。