
Why should you use Workflows?
Workflows are a great way to automate complex processes by defining a series of steps that are executed in a flow that you control. This is particularly useful when you need to:- Automate a series of tasks
- Orchestrate multiple agents or teams of agents
- Have complex logic where you require agents to run in loops, or in parallel, or route different flows based on the output of previous steps
Step-Wise Controlled Execution
Agno Workflows are fundamentally an execution of a series of steps. These steps are executed in sequence, and the output of each step is passed to the next step. Each step can be executed by an agent, a team, or a custom Python function. These are individual components that can work independently but gain enhanced capabilities when orchestrated together:- Agents: Individual AI executors with specific capabilities and instructions
- Teams: Coordinated groups of agents working together on complex problems
- Functions: Custom Python functions for specialized processing logic
- Sequential step execution with output chaining
- Session management and state persistence
- Error handling and retry mechanisms
- Streaming capabilities for real-time feedback
Workflow Input
Workflows support multiple input types for maximum flexibility:Input Type | Example | Use Case |
---|---|---|
String | "Analyze AI trends" | Simple text prompts |
Pydantic Model | ResearchRequest(topic="AI", depth=5) | Type-safe structured input |
List | ["AI", "ML", "LLMs"] | Multiple items to process |
Dictionary | {"query": "AI", "sources": ["web", "academic"]} | Key-value pairs |
When this input is passed to an
Agent
or Team
, it will be serialized to a string before being passed to the agent or team.Architectural components
- The
Workflow
class is the top-level orchestrator that manages the entire execution process. Step
is the fundamental unit of work in the workflow system. Each step encapsulates exactly oneexecutor
- either anAgent
, aTeam
, or a custom Python function. This design ensures clarity and maintainability while preserving the individual characteristics of each executor.Loop
is a construct that allows you to execute one or more steps multiple times. This is useful when you need to repeat a set of steps until a certain condition is met.Parallel
is a construct that allows you to execute one or more steps in parallel. This is useful when you need to execute a set of steps concurrently with the outputs joined together.Condition
makes a step conditional based on criteria you specify.Router
allows you to specify which step(s) to execute next, effectively creating branching logic in your workflow.
When using a custom Python function as an executor for a step, 
StepInput
and StepOutput
provides standardized interfaces for data flow between steps: