microsoft/conductor
Python
Captured source
source ↗microsoft/conductor
Description: A CLI tool for defining and running multi-agent workflows with the GitHub Copilot SDK and Anthropic Agents SDK.
Language: Python
License: MIT
Stars: 265
Forks: 33
Open issues: 24
Created: 2026-02-02T14:29:41Z
Pushed: 2026-06-20T16:24:25Z
Default branch: main
Fork: no
Archived: no
README:
Conductor
A CLI tool for defining and running multi-agent workflows with the GitHub Copilot SDK and Anthropic Claude.

Why Conductor?
Conductor makes multi-agent workflows — code review pipelines, research-then-synthesize flows, plan-then-implement loops — repeatable, deterministic, and version-controlled. You define your agents, their prompts, and the routing between them in a single YAML file:
- Repeatable — Same inputs follow the same path through the same agents.
- Deterministic — Routing uses Jinja2 templates and expression evaluation. First matching condition wins. No LLM in the orchestration loop, no tokens spent deciding what runs next.
- Source-controlled — Plain YAML files. Diff workflows in pull requests, version them with your code, run them the same way locally and in CI.
Features
- YAML-based workflows - Define multi-agent workflows in readable YAML
- Multiple providers - GitHub Copilot, Anthropic Claude, or Claude Agent SDK with seamless switching
- Parallel execution - Run agents concurrently (static groups or dynamic for-each)
- Sub-workflow composition - Reusable sub-workflows with templated
input_mapping, usable insidefor_eachgroups for dynamic fan-out - Script steps - Run shell commands and route on exit code or parsed JSON stdout
- Set steps - Bind one or more Jinja2-evaluated values into the context (no LLM, no subprocess) for derived flags, computed defaults, and constants reused by many later prompts
- Terminate steps - Explicit terminal step with
status(success/failed) and structuredreason— distinguishable from the default$endpath in CLI exit codes, dashboard state, and event logs - Dialog mode - Agents can pause for multi-turn conversation when uncertain
- Reasoning effort - Unified
reasoning.effort(low/medium/high/xhigh) per agent or workflow-wide, translated to each provider's native API - Workspace instructions - Auto-discover and inject
AGENTS.md/CLAUDE.md/.github/copilot-instructions.mdinto every agent's prompt - Conditional routing - Route between agents based on output conditions
- Human-in-the-loop - Pause for human decisions with Markdown-rendered prompts and clickable file links
- Safety limits - Max iterations and timeout enforcement
- [Web dashboard](#web-dashboard) - Real-time workflow visualization with interactive DAG graph, breadcrumb navigation into sub-workflows, live streaming, and in-browser human gates
- Validation - Catches stale template references, missing inputs, and undeclared dependencies before runtime
Installation
Quick Install (Recommended)
macOS / Linux:
curl -sSfL https://aka.ms/conductor/install.sh | sh
Windows (PowerShell):
irm https://aka.ms/conductor/install.ps1 | iex
The installer checks for uv (installs it if missing), fetches the latest release with pinned dependencies, and verifies integrity via SHA-256 checksum.
Updating
conductor update checks for a newer release and tells you the one-line command to upgrade. Upgrades happen via the install script — the same script you used to install — because in-process self-upgrade is unreliable on Windows (the running Python interpreter sits inside the venv that needs replacing).
conductor update
To upgrade, run the install script in a new shell (not from inside a running conductor process):
macOS / Linux:
curl -sSfL https://aka.ms/conductor/install.sh | sh
Windows (PowerShell):
irm https://aka.ms/conductor/install.ps1 | iex
Or skip the copy-paste with --apply:
conductor update --apply
--apply launches the install script automatically — on Windows it opens in a new console window so you can watch progress; on macOS/Linux it replaces the current process. Either way, the running conductor exits before the installer touches the venv, so file locks release cleanly.
The install script handles file-lock safety (process detection, stale-file cleanup, and on Windows a rename-fallback when the venv directory can't be removed), retries with backoff, and verifies the installed version after install. If your shell ever gets into a bad state from a failed update, re-running the install script is always the right next step.
Conductor periodically checks GitHub for newer releases (cached for 24 hours under ~/.conductor/update-check.json) and prints a one-line hint when one is available. To silence the hint permanently — for example when you manage upgrades through a package manager or company-mirrored install — set CONDUCTOR_NO_UPDATE_CHECK=1 in your shell environment. The check is also skipped automatically for non-TTY invocations, --silent mode, the update subcommand, and --help / --version.
Manual Install
# Install from GitHub uv tool install git+https://github.com/microsoft/conductor.git # Run the CLI conductor run workflow.yaml # Or run directly without installing uvx --from git+https://github.com/microsoft/conductor.git conductor run workflow.yaml # Install a specific branch, tag, or commit uv tool install git+https://github.com/microsoft/conductor.git@branch-name uv tool install git+https://github.com/microsoft/conductor.git@v1.0.0 uv tool install git+https://github.com/microsoft/conductor.git@abc1234
Using pipx
pipx install git+https://github.com/microsoft/conductor.git conductor run workflow.yaml # Install a specific branch or tag pipx install git+https://github.com/microsoft/conductor.git@branch-name
Using pip
pip install git+https://github.com/microsoft/conductor.git conductor run workflow.yaml # Install a specific tag or commit pip install git+https://github.com/microsoft/conductor.git@v1.0.0
Use the Conductor skill in Claude Code or Copilot CLI
This repo doubles as a single-plugin marketplace that ships the conductor skill from...
Excerpt shown — open the source for the full document.
Notability
notability 5.0/10New Microsoft repo with modest traction.