How It Works
Quick Start
At a Glance
Execution Systems
| System | CLI | What Runs | Deterministic | Needs API Key |
|---|---|---|---|---|
| Job Workflows | praisonai workflow run | Shell, Python, actions, agent steps | Mostly ✅ | Only for agent steps |
| Agent Workflows | praisonai workflow run | LLM agents collaborating | ❌ | ✅ |
| Hybrid Workflows | praisonai workflow run | Job + multi-agent steps | Mixed | ✅ |
| Recipes | praisonai recipe run | LLM agents + lifecycle | ❌ | ✅ |
| Slash Commands | /cmd in REPL | Handler functions | ✅ | ❌ |
Extension Systems
| System | Scope | What It Provides |
|---|---|---|
| Tools | Per-agent | Callable functions (@tool, BaseTool) |
| Skills | Per-agent | Declarative expertise (SKILL.md + prompts) |
| Plugins | System-wide | Bundled tools + hooks + skills + recipes |
| Hooks & Callbacks | System-wide | Lifecycle interception and notification |
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_points(praisonaiagents.toolsgroup)
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:| Category | Hooks |
|---|---|
| Lifecycle | ON_INIT, ON_SHUTDOWN |
| Agent | BEFORE_AGENT, AFTER_AGENT |
| LLM | BEFORE_LLM, AFTER_LLM |
| Tools | BEFORE_TOOL, AFTER_TOOL |
| Messages | BEFORE_MESSAGE, AFTER_MESSAGE |
How They Relate
Master Comparison
Identity & Scope
| Job Workflows | Hybrid | Agent Workflows | Recipes | Tools | Skills | Plugins | Hooks | |
|---|---|---|---|---|---|---|---|---|
| Type | Execution | Execution | Execution | Execution | Extension | Extension | Extension | Extension |
| AI-powered | Optional | ✅ | ✅ | ✅ | N/A | N/A | N/A | N/A |
| Scope | Project-local | Project-local | Project-local | External | Per-agent | Per-agent | System-wide | System-wide |
| Deterministic | Mostly ✅ | Mixed | ❌ | ❌ | ✅ | N/A | ✅ | ✅ |
Distribution & Lifecycle
| Job Workflows | Agent Workflows | Recipes | Tools | Skills | Plugins | |
|---|---|---|---|---|---|---|
| Registry | ❌ | ❌ | ✅ | ✅ (entry_points) | ❌ | ✅ (pip) |
| pack/publish | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ (pip) |
| judge/optimize | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| HTTP serve | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| SBOM/audit | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Versioned | ❌ | ❌ | ✅ | ✅ (pip) | ❌ | ✅ (pip) |
Execution Model
| Job Workflows | Hybrid | Agent Workflows | Recipes | |
|---|---|---|---|---|
| Dry-run | ✅ | ✅ | ❌ | ✅ |
| Agent steps | ✅ agent, judge, approve | ✅ | ✅ (native) | ✅ (native) |
| Multi-agent | ❌ | ✅ workflow:, parallel: | ✅ | ✅ |
| Streaming | ❌ | ❌ | ❌ | ✅ --stream |
| Background | ❌ | ❌ | ❌ | ✅ --background |
| Replay | ❌ | ❌ | ❌ | ✅ export/replay |
Extensibility
| Job Workflows | Hybrid | Agent Workflows | Recipes | |
|---|---|---|---|---|
| Custom actions | ✅ YAML, file, built-in | ✅ (via job engine) | ❌ | ❌ |
| Custom tools | ✅ (agent steps) | ✅ | ✅ Tool plugins | ✅ tools.py |
| Conditionals | ✅ if: expressions | ✅ if: | ❌ (LLM decides) | ❌ (LLM decides) |
| CLI flags | ✅ Custom flags: | ✅ | ❌ | ❌ |
| Env vars | ✅ ${{ env.X }} | ✅ | ❌ | ✅ via config |
| Variables | ✅ vars: + --var | ✅ | ✅ --var | ✅ --var, --input |
Decision Guide
| If you want to… | Use |
|---|---|
| Automate shell commands / CI/CD | Job Workflow |
| Create reusable build actions | Job Workflow + Custom Actions |
| Mix shell + single AI agent in a pipeline | Job Workflow (agent steps) |
| Add a quality gate to a pipeline | Job Workflow (judge: step) |
| Mix shell + multi-agent collaboration | Hybrid Workflow |
| Run checks in parallel | Hybrid Workflow (parallel: step) |
| Orchestrate AI agents on a task | Agent Workflow |
| Share an AI workflow as a package | Recipe |
| Improve AI output iteratively | Recipe (judge/optimize) |
| Serve an AI workflow as an API | Recipe (serve) |
| Generate a job workflow from a prompt | praisonai workflow auto --type job |
| Give an agent a new capability | Tool |
| Give an agent expertise / personality | Skill |
| Add logging / security / guardrails | Hook |
| Bundle tools + skills + hooks for distribution | Plugin |
| Quick interactive commands | Slash Command |
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.
| Option | Type | Default | Description |
|---|---|---|---|
max_steps | int | None | None | Unified tool-use budget honoured by both loops. None falls back to max_iter. Must be >= 1. |
max_iter | int | 20 | Legacy per-loop iteration cap, used when max_steps is unset |
max_rpm | int | None | None | Max requests per minute (rate limit) |
max_execution_time | int | None | None | Max wall-clock seconds per run |
max_retry_limit | int | 2 | Max LLM retries on error |
max_tool_calls_per_turn | int | 10 | Max tool calls per single turn |
code_execution | bool | False | Allow agent to execute generated code |
code_mode | str | "safe" | "safe" or "unsafe" code execution mode |
code_sandbox_mode | str | "sandbox" | "sandbox" (subprocess) or "direct" (in-process) |
code_tools | bool | False | Allow code to call agent tools directly |
code_tools_allow | list | None | None | Allowlist of tool names callable from code |
context_compaction | bool | False | Auto-compact context when approaching token limit |
max_context_tokens | int | None | None | Token limit before compaction triggers |
max_budget | float | None | None | Hard USD budget limit per run |
on_budget_exceeded | str | "stop" | "stop" / "warn" / callable |
parallel_tool_calls | bool | False | Execute batched tool calls in parallel |
Source Files
| System | Core Implementation | CLI |
|---|---|---|
| Job Workflows | cli/features/job_workflow.py | cli/commands/workflow.py |
| Hybrid Workflows | cli/features/hybrid_workflow.py | cli/commands/workflow.py |
| Agent Workflows | cli/features/workflow.py | cli/commands/workflow.py |
| Workflow Generation | auto.py (JobWorkflowAutoGenerator) | workflow auto --type job |
| Recipes | recipe/core.py + cli/features/recipe.py | cli/commands/recipe.py |
| Tools | praisonaiagents/tools/ | Via agent config |
| Skills | praisonaiagents/skills/ | praisonai skill |
| Plugins | praisonaiagents/plugins/ | praisonai plugin |
| Hooks | praisonaiagents/hooks/ | Programmatic |
| Slash Commands | In-memory registry | /cmd in REPL |
Related
Job Workflows
Deterministic + agent-centric steps
Hybrid Workflows
Job + multi-agent in one pipeline

