Skip to content

Feature: Workflow Composition (Sub-Workflows) #79

@jrob5756

Description

@jrob5756

Summary

Allow agents to reference external workflow files as sub-workflows via a new type: workflow agent type, enabling composable and reusable workflow building blocks.

Motivation

The industry is moving toward composable agent architectures — Stripe's "blueprints" (deterministic routines composed with LLM loops), Google ADK's progressive disclosure (agents loading skills on demand), and Claude Managed Agents with multi-agent coordination all point to the need for workflow composition.

Today conductor workflows are flat single-YAML files. Complex workflows become unwieldy and can't share common patterns across projects.

Proposed Design

agents:
  - name: deep_research
    type: workflow                        # new agent type
    workflow: ./research-pipeline.yaml    # reference to external workflow
    input:
      topic: "{{ workflow.input.topic }}"
    output:
      findings:
        type: string
    routes:
      - to: synthesizer

Key Semantics

  • Sub-workflow runs as a black box — internal agents aren't visible to the parent
  • Input/output contract enforced at the boundary
  • Sub-workflow inherits parent's provider config unless it specifies its own
  • Recursive composition supported (with depth limit for safety)
  • Sub-workflow events bubble up to parent's event system (prefixed with sub-workflow name)

Validation

  • conductor validate follows sub-workflow references and validates the full tree
  • Circular references detected and rejected
  • Input/output type compatibility checked across boundaries

Why It Fits Conductor

  • YAML-native, version-controllable, no new runtime concepts
  • Clean separation of concerns enables a library of reusable workflow "skills"
  • The sub-workflow is just another YAML file — same tooling, same validation, same dashboard

Effort Estimate

Medium — requires new agent type in executor, schema changes, and cross-file validation.

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions