microsoft/conductor

A CLI tool for defining and running multi-agent workflows with the GitHub Copilot SDK and Anthropic Agents SDK.

Conductor – 決定的なマルチエージェント AI ワークフローのための CLI

概要 – conductor は、AI エージェント(Copilot、Claude など)のパイプラインを単一の YAML ファイルで記述し、そのパイプラインをローカルまたは CI で実行できるコマンドラインツールです。オーケストレーション自体は決定的です。ルーティングの決定は LLM ではなく Jinja2 テンプレートで表現されるため、同じ入力は常に同じパスをたどります。

なぜ重要か – 多段階の AI システム(コードレビューボット、調査後の合成ループ、計画後の実装サイクル)を構築または実験する場合、バージョン管理、テスト、共有が難しいアドホックなスクリプトを作成することがよくあります。Conductor は以下を提供します。

  • 再現可能でバージョン管理されたワークフロー(PR で diff できるプレーンな YAML)
  • プロバイダーに依存しないエージェント – Copilot、Anthropic Claude、Claude-Agent SDK、NousResearch Hermes、または Azure Container Apps のサンドボックス実行。
  • 並列処理とサブワークフロー – for_each によるファンアウト、再利用可能なサブワークフロー、並行エージェントグループ。
  • ヒューマンインザループゲート – ユーザーが Markdown プロンプトに回答するまで実行を一時停止します。
  • 可観測性 – Web ダッシュボード(リアルタイム DAG ビュー、ストリーミングエージェント出力)と、実行中のすべてのワークフローを監視し、トークン使用量を表示し、ターミナルを離れずにゲートに回答できる TUI「Fleet Manager」。
  • 安全制限 – 最大反復回数、タイムアウト、明示的な終了ステップ。
  • OpenTelemetry – より深い分析のためにトレースを Jaeger/Tempo にエクスポートします。

仕組み

  1. YAML を記述して、workflow、agents のリスト(モデル、プロンプト、出力スキーマ)、およびそれらの間のルーティング(routes)を宣言します。Jinja2 式は、値の計算、次に実行するステップの決定、またはサブワークフローの入力マッピングの構築に使用できます。
  2. 実行するには、conductor run my-workflow.yaml --input key=value … を使用します。CLI は YAML を解決し、選択したプロバイダーの API クライアントを起動し、各ステップ(エージェント、スクリプト、set ステップ、MCP ツール呼び出しなど)を実行します。
  3. 監視 – インタラクティブなブラウザ UI には --web を追加し、ヘッドレスで実行して後でダッシュボードを開くには --web‑bg を使用します。conductor fleet(TUI)を使用して、すべてのアクティブな実行を表示し、人間のゲートに回答するか、フォームから新しい実行を開始します。
  4. 観察とデバッグ – ログ、トークン/コストカウンター、オプションの OpenTelemetry スパンが出力されます。実行の JSON 出力をエクスポートすることもできます。

インストール – プロジェクトは、curl … | sh(Windows では PowerShell)を介して最新リリースを取得するワンライナーインストーラーを提供します。内部では uv を使用して分離された仮想環境を作成し、ミラー、プロキシ、整合性チェックを処理します。uv tool install、pipx、またはプレーンな pip でインストールすることもできます。

主要な概念

  • プロバイダー – workflow.runtime.provider で AI バックエンド(copilot、openai、claude など)を選択します。各プロバイダーのモデル名は default_model で設定します。
  • ステップ –
    • agent – プロンプトで LLM を呼び出します。
    • script – シェルコマンドを実行し、終了コードまたは解析された JSON でルーティングできます。
    • set – Jinja2 で値を計算します(LLM なし、サブプロセスなし)。
    • mcp – ツールサーバーを直接呼び出し、LLM トークン使用をバイパスします。
    • terminate – ステータスでワークフローを終了します。
  • ルーティング – 最初に一致する Jinja2 条件が優先されます。エージェント出力、スクリプト終了、または任意のコンテキスト変数でルーティングできます。
  • 人間のゲート – ステップは一時停止して Markdown プロンプトを表示できます。ユーザーはダッシュボード、CLI、または TUI で回答します。
  • 並列グループ / for_each – 静的グループは一緒に実行されます。動的グループはリスト上でファンアウトし、各インスタンスはサブワークフローを呼び出すことができます。

典型的なユースケース

workflow:
  name: simple-qa
  entry_point: answerer
  runtime:
    provider: copilot
    default_model: gpt-5.5

agents:
  - name: answerer
    model: gpt-5.5
    prompt: |
      Answer the following question:
      {{ workflow.input.question }}
    output:
      answer:
        type: string
    routes:
      - to: $end

output:
  answer: "{{ answerer.output.answer }}"

次のように実行します。

conductor run my-workflow.yaml --input question="What is Python?"

CLI は JSON 結果を出力し、--web を追加すると、ダッシュボードでエージェントの推論がストリーミングされます。

誰が使うべきか –

  • AI 拡張開発者ツール、コードレビューボット、またはリサーチアシスタントを構築するチーム。
  • 再現性と可観測性を必要とする マルチエージェントパイプライン をプロトタイピングする研究者。
  • このようなパイプラインを CI/CD で実行したい DevOps 担当者(決定的なルーティングにより、実行は予測可能でコスト追跡可能です)。

制限 / ステータス – コア CLI は安定していますが、いくつかのプロバイダー(Claude Agent SDK、Hermes、Azure Container Apps)は 実験的 とマークされています。プロジェクトは積極的にメンテナンスされており(CI バッジ、バージョン管理されたリリース)、アップグレードツール(conductor update)を提供しています。


上記のすべての情報は、リポジトリの README から直接取得したものです。外部の仮定は追加されていません。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト