This directory contains example workflow files demonstrating various features of Conductor.
A minimal workflow with a single agent that answers questions. Demonstrates:
- Basic workflow structure
- Input parameters
- Output schema validation
- Simple routing to
$end
conductor run examples/simple-qa.yaml --input question="What is Python?"Dynamic parallel processing with for-each groups. Demonstrates:
- For-each group definition
- Processing variable-length arrays
- Loop variable access (
{{ item }},{{ _index }}) - Aggregating parallel outputs
conductor run examples/for-each-simple.yaml --input items='["apple", "banana", "cherry"]'Parallel research from multiple sources. Demonstrates:
- Static parallel groups
- Multiple specialized research agents
- Result aggregation from parallel outputs
conductor run examples/parallel-research.yaml --input topic="Renewable energy"Parallel code validation checks. Demonstrates:
- Static parallel groups for concurrent validation
- Multiple validation agents (security, performance, style)
- Failure mode configuration
conductor run examples/parallel-validation.yaml --input code="def hello(): print('world')"Derive named values from Jinja2 expressions without spending an LLM call. Demonstrates:
- Single
value:binding (scalar output accessible asstep.output) - Multi
values:binding (dict output accessible asstep.output.<key>) - Conditional routing on a derived boolean (
when: "{{ output.is_breaking }}") - Combining derived values with downstream script-step consumers
# Breaking-change branch
conductor run examples/set-step.yaml \
--input org=microsoft --input repo=conductor --input severity=high
# Safe-change branch with a custom model
conductor run examples/set-step.yaml \
--input org=acme --input repo=widget --input severity=low \
--input model=claude-haiku-4.5An iterative design workflow with human approval. Demonstrates:
- Multiple agents with conditional routing
- Loop-back patterns for refinement
- Human gates for approval decisions
- Context accumulation between iterations
- Safety limits (max_iterations, timeout)
# Interactive mode
conductor run examples/design-review.yaml --input requirement="Build a REST API"
# Automation mode (auto-approves)
conductor run examples/design-review.yaml --input requirement="Build a REST API" --skip-gatesA workflow with multiple legitimate end states beyond "the last agent finished," using type: terminate steps to surface each outcome distinctly. Demonstrates:
status: success— early-exit when there's nothing to do (CLI exit 0, dashboard ✅)status: failed— refuse-to-run on unsafe input (CLI exit 1, dashboard ❌, emitsworkflow_failedwithis_explicit: trueanderror_type: WorkflowTerminated)- Pass-through normal pipeline for the "do the work" path
- Optional
output_template:that replaces the workflow-leveloutput:for a termination path
# Success path — soft no-op, exit 0
conductor run examples/terminate.yaml --input document_state=current
# Failure path — hard refusal, exit 1 with structured reason
conductor run examples/terminate.yaml --input document_state=unsafe
# Normal pipeline (no terminate hit)
conductor run examples/terminate.yaml --input document_state=staleCI / dashboard / notification tooling can read is_explicit: true from the JSONL event log to distinguish an intentional termination from a generic crash.
A two-stage workflow that demonstrates configuring model reasoning / extended-thinking effort. Demonstrates:
- Workflow-wide default via
runtime.default_reasoning_effort - Per-agent override via
reasoning.effort(wins over the default) - Conditional routing on a structured boolean output
- The unified field translates to each provider's native API:
reasoning_efforton the Copilot session, or extendedthinkingbudget on Claude
conductor run examples/reasoning-effort.yaml \
--input topic="how the Raft consensus algorithm handles leader election"See Reasoning Effort for the per-provider translation, supported models, and validation rules.
A two-stage workflow that demonstrates selecting a model's long-context (e.g. 1M-token) window. Demonstrates:
- Workflow-wide default via
runtime.default_context_tier - Per-agent override via
context_tier(wins over the default) - Composition with
reasoning.effort— the two map to separatecreate_sessionkwargs - Conditional routing on a structured boolean output
conductor run examples/context-tier.yaml \
--input topic="root-causing a multi-service latency regression"See Context Tier for details. This is a Copilot-only capability.
A code-review workflow that demonstrates the validator: block — a second LLM call that grades an agent's output against a rubric and re-runs the agent once with feedback when it fails. Demonstrates:
- A
validator.criteriarubric checking for a real bug, actionable suggestions, and no fabricated names - Optional
validator.model(defaults to the primary agent's model) max_retries: 1(hard cap;0validates-and-reports without re-running)- Validator cost appears as a separate
code_reviewer (validator)usage row
conductor run examples/validator.yaml
conductor run examples/validator.yaml --input diff="$(git diff HEAD~1)"See Validator for the full field reference and behavior notes.
A multi-agent research workflow with tools. Demonstrates:
- Multiple specialized agents
- Tool configuration at workflow and agent levels
- Explicit context mode
- Conditional routing based on coverage
- Complex output schemas
conductor run examples/research-assistant.yaml --input topic="AI in healthcare"
# With custom depth
conductor run examples/research-assistant.yaml --input topic="Quantum computing" --input depth="comprehensive"The research assistant configured for Claude provider. Demonstrates:
- Claude provider with multi-agent workflow
- Model selection per agent
export ANTHROPIC_API_KEY=sk-ant-...
conductor run examples/research-assistant-claude.yaml --input topic="Machine learning"Research workflow demonstrating multi-provider patterns. Demonstrates:
- Provider configuration options
- Cross-provider workflow patterns
conductor run examples/multi-provider-research.yaml --input topic="Cloud computing"Routes the Copilot SDK at a local / custom OpenAI-compatible endpoint
(Ollama, vLLM, LM Studio, Azure OpenAI, etc.) via structured
runtime.provider configuration. Demonstrates:
- Object form of
runtime.provider(the bare-stringprovider: copilotshorthand still works) type/wire_api/base_url/api_keyforwarded to the Copilot SDK'screate_session(provider=…)parameter- Secret hygiene via
${OPENAI_API_KEY:-ollama}interpolation - Azure OpenAI variant in a commented block
# Requires Ollama running on http://localhost:11434
conductor run examples/copilot-local-llm.yaml --input question="What is Python?"See Configuration → Custom Provider Routing for env-var fallbacks, validator rules, and the security rationale.
Script step with shell command, JSON output parsing, and exit_code-based routing.
Demonstrates:
type: scriptagents (cross-platform shell command execution)- Capturing stdout/stderr/exit_code
- Routing on
exit_code(when: "exit_code == 0") - Passing script output to downstream LLM agents
conductor run examples/script-step.yamlHand a structured payload to a script step via stdin instead of
command-line args — the cross-platform-safe way to pass large or
structured data (no Windows ~32 KB command-line limit, no temp files). Demonstrates:
stdin:as a Jinja2 string template piped to the child as UTF-8- JSON handoff via the built-in
tojsonfilter ({{ x | tojson }}) - A script consuming an upstream agent's structured output (
json.load(sys.stdin))
conductor run examples/script-stdin.yaml --input topic="error handling"Polling pattern with a wait step and a routing loop-back. Demonstrates:
type: waitagents (pureasyncio.sleep, cross-platform — no shellsleepdependency)- Templated
duration("{{ workflow.input.poll_interval_seconds }}s") - Loop-back from wait → script for polling
reasonfield surfaced in the dashboard
conductor run examples/wait-step.yaml \
--input poll_interval_seconds=2 --input max_attempts=3Minimal wait-only workflow — no LLM, no scripts, no provider required. Useful as a smoke test for installation, dashboard rendering, and interrupt/timeout behavior. Three sequential wait steps demonstrate the three duration syntaxes (suffixed string, templated, plain numeric).
conductor run examples/wait-smoke.yaml
# Watch wait nodes animate in the dashboard:
conductor run examples/wait-smoke.yaml --web
# Trigger the workflow timeout cancelling an in-flight wait:
conductor run examples/wait-smoke.yaml --input middle_duration_ms=10000A comprehensive design and implementation planning workflow. Demonstrates:
- Architect agent for creating solution designs with implementation plans
- Reviewer agent for quality assessment of design and actionability
- Loop-back pattern until quality threshold is met (score >= 85)
- Structured output following design document and implementation plan templates
- MCP server integration (web-search, context7) for research
- Traceability between requirements and implementation tasks
conductor run examples/plan.yaml --input purpose="Build a user authentication system with OAuth2"
# Resume from existing plan
conductor run examples/plan.yaml --input purpose="..." --input existing_plan="path/to/plan.md"
# With verbose output
conductor -V run examples/plan.yaml --input purpose="..."An epic-based implementation workflow with multi-tier review. Demonstrates:
- Coder agent (Opus 4.5) for deep research, analysis, and implementation
- Epic reviewer agent (Opus 4.5) for per-epic quality assessment
- Committer agent (Sonnet) for git commits and plan updates
- Plan reviewer agent (Opus 4.5) for holistic review of all changes
- Fixer agent (Opus 4.5) for addressing plan-level issues
- Iterative epic-by-epic implementation with automatic plan tracking
- Two-tier review: epic-level (fast) and plan-level (thorough)
conductor run examples/implement.yaml --input plan="path/to/implementation.plan.md"
# With specific epic
conductor run examples/implement.yaml --input plan="..." --input epic="EPIC-001"
# With verbose output
conductor -V run examples/implement.yaml --input plan="..."-
Install Conductor:
uvx conductor
-
Ensure you have valid credentials for your provider:
- Copilot: GitHub authentication via
gh auth login - Claude: Set
ANTHROPIC_API_KEYenvironment variable
- Copilot: GitHub authentication via
You can validate a workflow without executing it:
conductor validate examples/simple-qa.yamlPreview the execution plan without actually running the workflow:
conductor run examples/simple-qa.yaml --dry-runSee detailed execution progress:
conductor -V run examples/simple-qa.yaml --input question="Hello"A multi-pattern workflow for testing the web dashboard. Demonstrates:
- Real-time DAG visualization with live node state updates
- Agent detail panel with streaming reasoning and tool calls
- Sequential, parallel, and script step patterns in a single workflow
# Foreground dashboard (keeps running after workflow completes)
conductor run examples/web-dashboard-test.yaml --web --input topic="Python async programming"
# Background mode (prints URL and exits immediately)
conductor run examples/web-dashboard-test.yaml --web-bg --input topic="Rust vs Go"Use the init command to create a new workflow from a template:
# List available templates
conductor templates
# Create from a template
conductor init my-workflow --template loop-
Start simple: Begin with a linear workflow and add complexity incrementally.
-
Validate often: Use
conductor validateto catch configuration errors early. -
Use dry-run: Preview execution with
--dry-runbefore running expensive workflows. -
Explicit context: Use
context.mode: explicitfor complex workflows to control exactly what context each agent sees. -
Safety limits: Always set appropriate
max_iterationsandtimeout_secondsfor workflows with loops. -
Optional dependencies: Use
?suffix for optional input references to avoid errors when agents haven't run yet.
- Workflow Syntax Reference - Complete YAML schema
- CLI Reference - Full command documentation
- Parallel Execution - Static parallel groups
- Dynamic Parallel - For-each groups