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 or Anthropic Claude 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 inside for_each groups for dynamic fan-out
- Script steps - Run shell commands and route on exit code or parsed JSON stdout
- 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.md into 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 - 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