Skip to main content
A running agent can delegate a sub-task to one of your own named agents by name, and that agent runs under its own model, tools, and permissions. Define an agent in .praisonai/agents/researcher.md, then let any run delegate to it — no Python file required.

Quick Start

1

Define a named agent

Create .praisonai/agents/researcher.md:
2

Delegate to it by name

Run any agent with the researcher subagent exposed:
The writer agent can now call researcher mid-run. researcher runs under its own model and tools.
--subagents applies to a named agent run (--agent <name>). The running agent gains a spawn_subagent tool whose description lists the agents it may delegate to.

How It Works

The wrapper discovers .praisonai/agents/*.md, builds a resolver, and hands it to the core subagent tool. When the model targets a named agent that resolves, that agent runs the sub-task under its own definition.

Two Ways to Opt In

Choose which named agents a run may delegate to with either a CLI allow-list or a frontmatter marker.
Expose specific agents for this run. The flag takes precedence over any markers:
mode: subagent is a marker, not a permission mode. It only makes a definition delegatable — it grants no permissions. Scope tools and permissions with model, tools, and the permission block.

Definition File Schema

Each .praisonai/agents/<name>.md file uses YAML frontmatter followed by the system prompt as the body. The Markdown body (after the frontmatter) becomes the agent’s instructions.

Common Patterns

Compose named agents into CLI-first workflows with no Python.
Two named agents, each in its own file:
Expose a reviewer the primary agent invokes only when it needs a second pass:
A whole multi-agent workflow lives in Markdown files under .praisonai/agents/:

Best Practices

The description (or goal) appears in the tool description the primary agent sees, so a specific one-liner helps it pick the right subagent for each sub-task.
A resolved named agent runs under its own model, tools, and permission — never the caller’s. Keep each definition’s tools minimal for its job.
--subagents a,b opts agents in without editing files, and wins over mode: subagent markers. Use markers for agents you always want delegatable.
With no delegatable agents, nothing changes — the spawn_subagent tool is not wired. An unresolved name falls back to the existing generic spawn.

Subagent Delegation

Programmatic spawn control, scoped permissions, and parallel fan-out.

Background Subagents

Fire-and-forget subagents that return a job ID and deliver results later.