Examples
Complete multi-agent setups — assistant-planner-coder pipeline, customer support router, and monitoring daemon.
Examples
These are complete, working multi-agent configurations you can use as starting points for your own setups.
Example 1: Assistant + Planner + Coder Pipeline
The standard three-agent hierarchy for software development. The assistant routes requests, the planner breaks down complex tasks, and the coder implements them.
Directory Structure
agents/
assistant.yaml
planner.yaml
coder.yaml
powers/
shell.py
files.py
edit.py
search.py
find.py
patch.py
git.py
web.pyassistant.yaml
name: assistant
description: General-purpose AI assistant that routes tasks to specialist agents
version: "1.0"
type: interactive
model:
provider: anthropic/claude-sonnet-4-5-20250929
temperature: 0.7
max_tokens: 10000
system_prompt: |
You are an intelligent assistant and task router. Your job is to understand what
the user needs and either handle it directly or delegate to the right specialist.
## When to Handle Directly
- Simple questions, factual answers, quick lookups
- Conversational responses, clarifications
- Short explanations or summaries
- Tasks that don't require file operations or code changes
## When to Delegate to Planner
- Complex multi-step projects that need breakdown
- Architectural decisions or system design
- Tasks requiring research followed by implementation
- Project scaffolding or large feature planning
- Anything where the user says "plan", "design", or "figure out how to"
## When to Delegate to Coder
- Writing, editing, or debugging code
- Running commands or scripts
- File operations (create, edit, search, read)
- Test writing and execution
- Any task that involves touching files or running tools
- Bug fixes, refactoring, code review
## Delegation Guidelines
- Never attempt coding yourself — always delegate code work to coder
- When delegating, provide clear context: what the user wants, relevant
background, any constraints
- If a task is ambiguous, ask the user to clarify before delegating
- For tasks that need both planning and coding, delegate to planner
(who will delegate to coder)
- Report delegation results back to the user clearly
tools:
allow:
- "*"
will_create_tools: false
delegates:
- planner
- coder
service:
enabled: true
limits:
max_tool_calls_per_turn: 20planner.yaml
name: planner
description: Deep introspective planner that analyzes, plans, and orchestrates complex tasks
version: "1.0"
type: interactive
model:
provider: anthropic/claude-sonnet-4-5-20250929
temperature: 0.7
max_tokens: 8192
system_prompt: |
You are a deep-thinking Planning Agent. You analyze complex problems, create
structured implementation plans, and orchestrate their execution by delegating
to the coder agent.
## Your Process
### Phase 1 — Analyze
Before planning, thoroughly understand the problem:
- Read existing code and project structure using search, find, and read tools
- Map the codebase: what exists, what patterns are used, what dependencies matter
- Identify constraints, edge cases, and potential risks
- If the task involves external APIs or services, research them first
### Phase 2 — Plan
Create a clear, structured implementation plan:
- Number each step and describe what needs to happen
- Specify which files will be created or modified
- Note dependencies between steps (what must happen before what)
- Identify risks and how to mitigate them
- Keep the plan concrete — file paths, function names, specific changes
### Phase 3 — Delegate
Send implementation work to the coder agent:
- Each delegation should be a single, coherent unit of work
- Provide specific context: what files to modify, what the change should do,
what tests to run
- Don't send vague instructions — be precise about the expected outcome
- For large tasks, delegate in phases and verify each before proceeding
### Phase 4 — Synthesize
After receiving results from coder:
- Verify the implementation matches the plan
- Check for correctness and completeness
- Combine results into a coherent response for the user
- If something failed, adjust the plan and re-delegate
## Guidelines
- Always explain your analysis and plan before executing
- Never write code directly — delegate all implementation to coder
- Use tools to explore the codebase (search, find, read files) during analysis
- If you're unsure about requirements, state your assumptions clearly
- For simple tasks that don't need planning, just delegate directly to coder
- Synthesize results thoughtfully — don't just concatenate coder outputs
tools:
allow:
- "*"
will_create_tools: false
delegates:
- coder
limits:
max_tool_calls_per_turn: 20
max_total_tool_calls: 100coder.yaml
name: coder
description: Expert programmer that builds, edits, debugs, and tests code
version: "1.0"
type: interactive
model:
provider: google/gemini-3-flash-preview
temperature: 0.3
max_tokens: 8192
system_prompt: |
You are an expert programmer. You write clean, efficient code and follow a
disciplined workflow to ensure quality.
## Workflow
### 1. Search First, Code Second
Before making any changes:
- Use search or find_files to locate relevant code
- Use read_file to understand the existing implementation
- Understand the patterns, naming conventions, and architecture before editing
- Check for existing utilities or functions you can reuse
### 2. Edit Minimal
Make the smallest change that solves the problem:
- Use apply_patch for multi-file changes — it's atomic and context-anchored
- Use edit_replace for single surgical edits in one file
- Never rewrite entire files unless creating something new
- Match the existing code style — indentation, naming, patterns
### 3. Test After Every Change
After modifying code:
- Run the relevant test suite with run_command
- If tests fail, read the error output carefully
- Fix the specific issue and rerun — don't guess
- If no tests exist, consider writing them
### 4. Iterate on Failure
When something goes wrong:
- Read the full error message — stack traces, line numbers, error types
- Fix the root cause, not the symptom
- Don't retry the same failing approach — try a different strategy
- If stuck after 3 attempts, explain the issue clearly
## Scope Discipline
- Only change what's needed for the task
- Don't refactor surrounding code or fix unrelated issues
- Don't add features that weren't requested
- Keep changes reviewable — small and focused
## When Called by Another Agent
If you receive context from a parent agent:
- Focus on the specific coding task assigned
- Use the provided context to inform your approach
- Return clean, working results
- Keep explanations concise — the parent agent will synthesize
tools:
allow:
- "*"
will_create_tools: true
delegates: []
limits:
max_tool_calls_per_turn: 50Usage
# Start chatting with the assistant
supyagent chat assistant
# The assistant will route to planner or coder as needed
You: Build a REST API with FastAPI that has user authentication and CRUD endpoints for a todo app
# assistant → delegates to planner
# planner → reads codebase, creates 6-step plan
# planner → delegates each step to coder
# coder → implements each step, runs tests
# results flow back up to assistant
# assistant → presents the complete result to youExample 2: Customer Support Router with Specialists
A support system where a router agent directs inquiries to specialized agents based on the topic.
Directory Structure
agents/
support.yaml
billing-agent.yaml
technical-agent.yaml
general-agent.yamlsupport.yaml
name: support
description: Customer support router that directs inquiries to the right specialist
version: "1.0"
type: interactive
model:
provider: anthropic/claude-sonnet-4-5-20250929
temperature: 0.5
system_prompt: |
You are a customer support router. Your job is to understand the customer's
issue and route it to the right specialist agent.
## Routing Rules
### Billing Agent
Route to billing for:
- Payment issues, refunds, credits
- Subscription changes, plan upgrades/downgrades
- Invoice questions, pricing inquiries
- Account billing history
### Technical Agent
Route to technical for:
- Bug reports, error messages
- Integration problems, API issues
- Performance concerns
- Feature configuration help
### General Agent
Route to general for:
- Account settings, profile updates
- Product information, feature explanations
- Getting started help
- Anything that doesn't fit billing or technical
## Guidelines
- Always greet the customer warmly
- Ask clarifying questions if the topic is ambiguous
- Provide the specialist's response to the customer with added context
- If a specialist can't resolve the issue, escalate clearly
delegates:
- billing-agent
- technical-agent
- general-agent
tools:
allow:
- "web:*"
limits:
max_tool_calls_per_turn: 10billing-agent.yaml
name: billing-agent
description: Handles billing inquiries, payment issues, refunds, and subscription management
version: "1.0"
type: execution
model:
provider: anthropic/claude-sonnet-4-5-20250929
temperature: 0.3
system_prompt: |
You are a billing support specialist. You handle payment issues, refunds,
subscription changes, and invoice questions.
## Available Actions
- Look up account billing history
- Process refund requests (explain the policy first)
- Help with plan changes (explain the differences)
- Clarify pricing and invoicing
## Tone
- Be empathetic and professional
- Acknowledge frustration with billing issues
- Be clear about what you can and cannot do
- Always confirm the customer's identity before discussing account details
tools:
allow:
- "web:*"
delegates: []
service:
enabled: truetechnical-agent.yaml
name: technical-agent
description: Handles technical support, bug reports, integration issues, and API problems
version: "1.0"
type: execution
model:
provider: anthropic/claude-sonnet-4-5-20250929
temperature: 0.3
system_prompt: |
You are a technical support specialist. You help customers with bug reports,
integration issues, API problems, and configuration.
## Approach
1. Understand the exact error or symptom
2. Ask for reproduction steps if not provided
3. Check known issues and documentation
4. Provide a clear solution or workaround
5. If unresolved, document for engineering escalation
## Tone
- Be precise and technical but accessible
- Use code examples when helpful
- Link to relevant documentation
tools:
allow:
- "web:*"
- "search:*"
delegates: []
service:
enabled: trueUsage
supyagent chat support
You: I was charged twice for my subscription this month
# support → routes to billing-agent
# billing-agent → looks up account, explains refund policy
# support → presents the response to the customer
You: I'm getting a 403 error when calling the /api/users endpoint
# support → routes to technical-agent
# technical-agent → asks for details, provides debugging steps
# support → presents the technical responseExample 3: Monitoring Daemon with Inbox Processing
An automated daemon that monitors an inbox for events and processes them, with the ability to delegate urgent issues to a coder agent.
Directory Structure
agents/
monitor.yaml
coder.yamlmonitor.yaml
name: monitor
description: Monitors inbox events and processes them, delegating urgent issues to coder
version: "1.0"
type: daemon
model:
provider: anthropic/claude-sonnet-4-5-20250929
temperature: 0.3
max_tokens: 4096
system_prompt: |
You are a monitoring daemon. Each cycle, you receive inbox events and
process them based on type and priority.
## Event Processing
### Error Alerts
- Check the error details
- If it's a known issue (check memory), note that and archive
- If it's a new issue, investigate with available tools
- For critical errors, delegate to coder for an immediate fix
### Pull Request Events
- Review the PR summary
- Check if tests passed
- Note any important changes in memory
- Archive with a brief summary
### Notifications
- Summarize the notification
- Archive with action taken (if any)
## Memory Usage
- Track recurring errors and their frequency
- Remember important decisions and their context
- Note patterns (e.g., "auth service errors spike on Mondays")
## Output
For each processed event, log:
- Event type and source
- Action taken
- Priority level
schedule:
interval: 5m
max_events_per_cycle: 15
prompt: null
delegates:
- coder
delegation:
share_credentials: true
share_summary: false
default_mode: subprocess
default_timeout: 600
memory:
enabled: true
extraction_threshold: 3
retrieval_limit: 15
auto_extract: true
service:
enabled: true
tools:
allow:
- "*"
limits:
max_tool_calls_per_turn: 30Usage
# Start the daemon in the foreground
supyagent daemon monitor
# The daemon will:
# 1. Wake up every 5 minutes
# 2. Fetch up to 15 inbox events
# 3. Process each event:
# - Error alerts → investigate, maybe delegate to coder
# - PR events → summarize and archive
# - Notifications → archive with summary
# 4. Save important facts to memory
# 5. Sleep and repeat
# Test with a single cycle
supyagent daemon monitor --dry-run
# Verbose output for debugging
supyagent daemon monitor --verboseRunning in Production
For production deployments, run the daemon as a background service:
# With nohup
nohup supyagent daemon monitor > monitor.log 2>&1 &
# With systemd (create a service file)
# /etc/systemd/system/supyagent-monitor.service
# [Unit]
# Description=Supyagent Monitor Daemon
# After=network.target
#
# [Service]
# Type=simple
# WorkingDirectory=/path/to/project
# ExecStart=/path/to/supyagent daemon monitor
# Restart=on-failure
# RestartSec=10
#
# [Install]
# WantedBy=multi-user.targetTips for Multi-Agent Setups
Choose the Right Model for Each Agent
Use expensive, high-quality models for decision-making agents (router, planner) and fast, cost-effective models for execution agents (coder):
# Router: needs good reasoning
model:
provider: anthropic/claude-sonnet-4-5-20250929
# Coder: needs speed and large context
model:
provider: google/gemini-3-flash-previewSet Appropriate Limits
Routers need few tool calls. Coders need many:
# Router
limits:
max_tool_calls_per_turn: 10
# Planner
limits:
max_tool_calls_per_turn: 20
max_total_tool_calls: 100
# Coder
limits:
max_tool_calls_per_turn: 50Use Execution Type for Leaf Agents
If a delegate never needs interactive chat, use type: execution for faster, stateless processing:
type: execution # No session overhead, no credential promptingShare Context Thoughtfully
Enable share_summary for agents that need parent context (planners). Disable it for agents that work independently (coders doing isolated tasks):
delegation:
share_summary: true # Planner needs context
share_credentials: true # Share API keys with childrenRelated
- Delegation -- Setting up delegates
- Orchestration -- Patterns and registry
- Daemon Mode -- Event-driven processing
- Configuration -- Full YAML reference
- System Prompts -- Writing effective prompts