Skip to main content
The framework: key in YAML picks which execution backend runs your agents — but the rules differ between agents.yaml and workflow YAML.
The user picks a YAML file; framework: selects the backend that runs the workflow.

Quick Start

1

agents.yaml — any registered framework

2

workflow YAML — needs SUPPORTS_WORKFLOW


Which file uses which?

Workflow YAML dispatch requires an adapter whose SUPPORTS_WORKFLOW = True. The built-in praisonai adapter has it. Third-party adapters opt in by setting the flag on their subclass — see Capability Flags. If framework: is omitted, agents.yaml defaults via FrameworkAdapterRegistry.pick_default() and workflow YAML defaults to praisonai.

What you’ll see if the framework isn’t workflow-capable

Selecting a framework whose adapter has SUPPORTS_WORKFLOW = False raises:
The trailing list names every registered adapter whose SUPPORTS_WORKFLOW flag is True, so it grows as you install workflow-capable plugins.

Make a custom framework workflow-capable

Set SUPPORTS_WORKFLOW = True on your adapter subclass to accept workflow YAML dispatch:
Once registered, myframework is accepted in workflow YAML and appears in the “Frameworks supporting workflow execution” list. See Capability Flags.

What to do


Programmatic check

framework_from_config({}) returns "praisonai" (safe default). framework_from_config({"framework": "CrewAI"}) returns "crewai" (lowercased before validation). validate_workflow_framework() reads the adapter’s SUPPORTS_WORKFLOW flag from the default registry. Pass registry= to test against an isolated registry:

How It Works


Best Practices

If you need CrewAI, AutoGen, or a custom framework, write your config as roles:/topic: agents.yaml. The framework: key there accepts any registered adapter.
The default is praisonai, so you can omit the framework: key entirely in workflow YAML. This avoids accidentally setting an unsupported value.
Call validate_workflow_framework(fw) immediately after parsing config if you’re building tooling around workflow YAML. It raises ValueError with an actionable message before any execution starts. Pass registry= to validate against an isolated registry in tests.
A custom adapter cannot run workflow YAML until it sets SUPPORTS_WORKFLOW = True (class-level). Leaving it False keeps the adapter agents.yaml-only and blocks workflow dispatch with a clear error.
Use list_framework_choices() from praisonai.framework_adapters.registry to populate dropdowns or CLI help text — it includes entry-point plugins automatically.

Add new execution backends via Python entry points

Full workflow YAML reference