How It Works
Quick Start
1
Run an agent workflow
The default execution path — one agent, one prompt:
2
Run a job workflow from YAML
Mix shell steps and agent steps in a deterministic pipeline:
At a Glance
Execution Systems
Extension Systems
Execution Systems
1. Job Workflows
Ordered step execution mixing deterministic automation and AI agent steps. Discriminator:type: job in YAML | Engine: JobWorkflowExecutor
Routing: Honored by both the CLI (praisonai workflow run ...) and the programmatic wrapper (AgentsGenerator.generate_crew_and_kickoff() / .agenerate_crew_and_kickoff())
Deterministic steps: run: (shell), python: (script), script: (inline Python), action: (custom/built-in)
Agent-centric steps: agent: (AI agent), judge: (quality gate), approve: (approval gate)
--dry-run, agent/judge/approve steps
Job Workflows
Step types, agent steps, flags, conditionals
Custom Actions
YAML-defined, file-based, and built-in actions
2. Agent Workflows
LLM-powered agent pipelines — AI agents collaborate on tasks. Discriminator: Notype field (default) | Engine: Agent Workflow Engine
Agent Workflows
Agent definitions, tasks, process types
2.5. Hybrid Workflows
Combines job workflow steps (deterministic + agent) with multi-agent collaboration steps. Discriminator:type: hybrid in YAML | Engine: HybridWorkflowExecutor
Routing: Honored by both the CLI (praisonai workflow run ...) and the programmatic wrapper (AgentsGenerator.generate_crew_and_kickoff() / .agenerate_crew_and_kickoff())
Supports all job workflow step types plus:
workflow:— execute a named agent from theagents:blockparallel:— run multiple sub-steps concurrently
Hybrid Workflows
Multi-agent + deterministic steps in one pipeline
3. Recipes
Packaged, distributable agent workflows with full lifecycle management. CLI:praisonai recipe (separate command group) | Engine: recipe.run()
Discovery (5-tier): $PRAISONAI_RECIPE_PATH → ./recipes/ → ~/.praison/recipes/ → agent_recipes pip package → built-in
pack/publish/pull/install, judge/optimize/apply lifecycle, policy packs, SBOM/audit, HTTP serving, trace replay
Recipes
Recipe structure, lifecycle, governance
4. Slash Commands
Interactive commands in the PraisonAI REPL. User types/cmd — no YAML, no CLI invocation outside REPL.
Extension Systems
5. Tools
Functional actions that agents call to interact with the outside world. Scope: Per-agent | Discovery: Lazy-loaded viapraisonaiagents.tools.registry.py entry points
Implementation options:
- Function-based:
@tooldecorated functions - Class-based:
BaseToolor Pydantic classes for stateful operations - External packages: Pip packages discovered via
entry_pointsunder the canonicalpraisonai.toolsgroup.praisonaiagents.toolsandpraisonai.tool_sourcesare kept as deprecated one-cycle aliases (they still resolve, with aDeprecationWarningon first discovery).
Key distinction: Tools are procedural — Python code that does something.
Tools Guide
Built-in tools, custom tools, tool classes
6. Skills
Declarative expertise modules — reusable prompts and knowledge. Scope: Per-agent | Standard: Agent Skills (agentskills.io) | CLI:praisonai skill list/install/validate
Key distinction: Skills are declarative — SKILL.md + prompt templates, not code.
Skills can be generated autonomously using the Identify-Scrape-Synthesize (ISS) pattern.
7. Plugins
System-wide extension bundles — the marketplace unit. Scope: System-wide | Manager:PluginManager (global registry + discovery) | Location: .praison/plugins/, pip packages
A plugin can bundle:
- Tools — adds new agent actions
- Skills — adds agent expertise templates
- Recipes — adds pre-defined agent teams
- Hooks — adds logging, security, monitoring
- Integrations — connects to Slack, Telegram, APIs
Key distinction: Plugins are containers — they deliver tools, skills, hooks, and recipes as a single installable unit.
8. Hooks & Callbacks
Lifecycle interception (hooks) and notification (callbacks). Hooks — middleware functions that can modify agent requests/responses:
Use for: Retries, caching, request modification, guardrails.
Callbacks — simple functions called after a Task completes. Cannot modify execution flow.
Use for: Logging, database updates, alerting.
How They Relate
Master Comparison
Identity & Scope
Distribution & Lifecycle
† Built-ins win over entry-point plugins. The Tools and Plugins registries subclass the base
PluginRegistry, so since PR #4176 an entry_points plugin whose name (case-insensitive) collides with a shipped built-in is skipped and the built-in is kept (a DEBUG line notes the collision). Runtime register(...) is the deliberate override path. See Plugin Precedence.Execution Model
Extensibility
Decision Guide
Best Practices
Start with Agent Workflows
Start with Agent Workflows
For a single AI task, use an
Agent in Python or a YAML agent workflow — no job steps required.Use Job Workflows for CI/CD
Use Job Workflows for CI/CD
When you need shell commands, conditionals, or quality gates, choose a job workflow with
run:, agent:, or judge: steps.Package with Recipes for distribution
Package with Recipes for distribution
Share workflows externally with
praisonai recipe pack — includes lifecycle tools like judge and optimize.Extend agents, not workflows
Extend agents, not workflows
Add capabilities via Tools and Skills on the agent; use Plugins when bundling tools, hooks, and recipes for install.
Agent Execution Configuration
Control per-agent execution limits withExecutionConfig:
ExecutionConfig SDK Reference
Full parameter reference for ExecutionConfig
max_steps is the unified outer-loop step budget honoured identically by both tool-execution loops. Detect truncation with agent.last_stop_reason == "max_steps". See Step Budget.
code_sandbox_mode still exists (default "sandbox") and round-trips through to_dict() / from_dict(), but it is inert — no execution path reads it. To isolate code the model runs, use AgentFlow(run_on=…) (shared sandbox) or Agent(sandbox=…) (explicit execute_code()). See Placement.Source Files
Related
Job Workflows
Deterministic + agent-centric steps
Hybrid Workflows
Job + multi-agent in one pipeline

