What are Ensembles?
In Conductor’s musical metaphor, ensembles are the sheet music that coordinate your members (musicians) into a harmonious workflow. They’re YAML files that define what happens, when, and in what order.Why “Ensembles” instead of “Workflows”?While ensembles ARE workflows, we use this term to:
- Reinforce the musical metaphor (members = musicians, ensembles = sheet music, Conductor = orchestrator)
- Distinguish from traditional workflow engines and DAG builders
- Emphasize the composable, harmonic nature of coordinating multiple members
Basic Structure
An ensemble defines a workflow with members, flow, and optional features:Ensemble Components
Name and Description
- name: Unique identifier (lowercase, hyphens allowed)
- description: Human-readable explanation
Flow
The heart of every ensemble - defines the sequence of member executions:- Sequential execution by default
- Parallel execution supported
- Conditional branching
- Loops and iteration
- Error handling
Input
Data passed to the ensemble:Output
Shape the final result:Shared State
Enable members to share data without prop drilling:- No prop drilling through multiple members
- Selective access (members only see declared keys)
- Access tracking for optimization
- Type-safe with schema validation
Flow Patterns
Sequential Execution
Default behavior - one member after another:Parallel Execution
Execute multiple members simultaneously:Conditional Branching
Execute based on conditions:Loops
Iterate over data:Error Handling
Catch and handle errors:Caching
Cache member results to reduce costs and latency:- Reduce AI provider costs
- Faster execution
- Consistent results
Quality Scoring
Validate output quality with automatic retry:Webhooks
Trigger ensembles via HTTP:Scheduled Execution
Run ensembles on a schedule:Interpolation
Reference data throughout your ensemble:${input.field}- Input data${state.key}- Shared state${member-name.output.field}- Member outputs${env.VARIABLE}- Environment variables

