
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
Workflowclass is the top-level orchestrator that manages the entire execution process. Stepis 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.Loopis 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.Parallelis 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.Conditionmakes a step conditional based on criteria you specify.Routerallows 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: