# Flow specification version
version: "0.1.0" # Flow specification version
metadata:
flow_type: "compound" # Specifies this as a compound flow
name: "your-flow-name" # Unique identifier
description: "Describe what this compound flow accomplishes"
author: "your-username" # Your Mira Flows username
tags: [tag1, tag2, tag3] # Discovery keywords
private: true # Access control setting
inputs:
prime_input_1: # Primary input parameter
type: string
description: "What is this input used for"
required: true
example: "Example value"
prime_input_2: # Secondary input parameter
type: string
description: "Description of this input"
required: false
example: "Example"
workflow:
# Elemental Flow stage - starts immediately
first_flow: # First processing stage
type: "elemental"
flow_name: "john_doe/first_elemental_flow"
inputs:
abc: ${inputs.prime_input_1}
xyz: ${inputs.prime_input_2}
# Custom processing stage - starts immediately (parallel to first_flow)
second_flow: # Parallel processing stage
type: "custom"
inputs:
input1: ${inputs.prime_input_1}
model:
provider: "provider-name" # e.g., anthropic, openai, meta, etc.
name: "model-name" # Specific model identifier
prompt: |
Your flow's primary instruction or role...
You can use {input1} placeholders to reference inputs.
# Waits for both first_flow and second_flow to complete
third_flow:
type: "custom"
depends_on: [first_flow, second_flow] # Dependent on fist_flow and second_flow
inputs:
input1: ${first_flow.output} # uses output of first_flow as input
input2: ${second_flow.output} # uses output of second_flow as input
model:
provider: "provider-name"
name: "model-name"
dataset:
source: "author_name/dataset_name"
prompt: |
Your flow's primary instruction or role...
You can use {input1} and {input2} placeholders to reference inputs.
output:
value: # Combine & customise outputs in order
- ${first_flow.output}
- ${second_flow.output}
- ${third_flow.output}
readme: |
This is a detailed explanation of what your flow does.
### Workflow Overview:
1. **First Flow**: Executes `john_doe/first_elemental_flow` with the provided inputs
2. **Second Flow**: Runs in parallel with first flow
3. **Third Flow**: Depends on both previous flows, executes after they complete
### Outputs:
- Combined outputs from all flows are returned in order