Skip to main content

Agent Configuration

This guide covers the complete YAML schema for configuring agents in AxonFlow's Multi-Agent Planning system.

Configuration Format

Agents use a Kubernetes-style YAML format with apiVersion, kind, metadata, and spec fields:

apiVersion: axonflow.io/v1
kind: AgentConfig
metadata:
name: agent-name
domain: domain-name
labels:
environment: production
spec:
type: specialist
description: Agent description
capabilities:
- capability1
- capability2
# ... additional configuration

Schema Reference

Root Fields

FieldTypeRequiredDescription
apiVersionstringYesAPI version, currently axonflow.io/v1
kindstringYesResource type, must be AgentConfig
metadataobjectYesAgent metadata including name and domain
specobjectYesAgent specification

Metadata Fields

FieldTypeRequiredDescription
namestringYesUnique agent identifier (lowercase, alphanumeric, hyphens)
domainstringYesDomain grouping (travel, healthcare, finance, generic)
labelsmapNoKey-value labels for organization
annotationsmapNoAdditional metadata

Spec Fields

FieldTypeRequiredDescription
typestringYesAgent type: specialist or coordinator
descriptionstringYesHuman-readable description
capabilities[]stringYesList of agent capabilities
llmobjectNo*LLM configuration (required for llm-call)
connectorobjectNo*Connector configuration (for connector-call)
tools[]stringNoList of MCP connector IDs agent can use
delegatesTo[]stringNoAgent names this coordinator delegates to
promptTemplatestringNoPrompt template with variable placeholders
timeoutstringNoExecution timeout (default: 60s)
retryPolicyobjectNoRetry configuration

Agent Types

Specialist Agent

Specialist agents perform specific tasks with domain expertise:

apiVersion: axonflow.io/v1
kind: AgentConfig
metadata:
name: data-analyst
domain: analytics
spec:
type: specialist
description: Analyze data and generate insights
capabilities:
- data_analysis
- statistical_modeling
- visualization
llm:
provider: openai
model: gpt-4
temperature: 0.3
maxTokens: 2000
promptTemplate: |
You are a data analyst. Analyze the following data and provide insights:

Data: {{input.data}}
Question: {{input.question}}

Provide analysis with:
1. Key findings
2. Statistical summary
3. Recommendations

Coordinator Agent

Coordinator agents orchestrate other agents:

apiVersion: axonflow.io/v1
kind: AgentConfig
metadata:
name: research-coordinator
domain: research
spec:
type: coordinator
description: Coordinate multi-source research tasks
capabilities:
- research_coordination
- synthesis
delegatesTo:
- web-researcher
- document-analyzer
- fact-checker
llm:
provider: anthropic
model: claude-3-sonnet
promptTemplate: |
You are a research coordinator. Synthesize findings from multiple sources:

Web Research: {{steps.web-researcher.output}}
Document Analysis: {{steps.document-analyzer.output}}
Fact Check: {{steps.fact-checker.output}}

Provide a comprehensive summary.

LLM Configuration

The llm field configures the language model:

spec:
llm:
provider: openai # Provider: openai, anthropic, bedrock, ollama
model: gpt-4 # Model identifier
temperature: 0.7 # Sampling temperature (0.0-2.0)
maxTokens: 2000 # Maximum response tokens
topP: 0.9 # Top-p sampling
frequencyPenalty: 0.0 # Frequency penalty (-2.0 to 2.0)
presencePenalty: 0.0 # Presence penalty (-2.0 to 2.0)
stopSequences: # Stop generation sequences
- "\n\n"
- "END"

Provider-Specific Configuration

OpenAI

llm:
provider: openai
model: gpt-4 # gpt-4, gpt-4-turbo, gpt-3.5-turbo
temperature: 0.7

Anthropic

llm:
provider: anthropic
model: claude-3-sonnet # claude-3-opus, claude-3-sonnet, claude-3-haiku
temperature: 0.7

AWS Bedrock

llm:
provider: bedrock
model: anthropic.claude-3-sonnet-20240229-v1:0
region: us-east-1 # AWS region

Ollama (Local)

llm:
provider: ollama
model: llama2 # Local model name
endpoint: http://localhost:11434

Connector Configuration

For agents that query data sources:

spec:
connector:
name: postgresql # Connector ID
operation: query # Operation type
parameters:
database: analytics
timeout: 30s

Capabilities

Capabilities define what an agent can do. The planning engine uses capabilities to select agents:

spec:
capabilities:
- flight_search # Search for flights
- hotel_booking # Book hotels
- itinerary_planning # Create travel plans
- policy_compliance # Check travel policies

Common Capabilities by Domain

DomainCapabilities
travelflight_search, hotel_search, car_rental, itinerary_planning
healthcarepatient_lookup, appointment_scheduling, medical_records
financeaccount_lookup, transaction_analysis, fraud_detection
supportticket_creation, knowledge_search, escalation
genericresearch, summarization, analysis, writing

Prompt Templates

Prompt templates support variable substitution using {{variable}} syntax:

Input Variables

Access input data:

promptTemplate: |
Process the following request:
Query: {{input.query}}
User: {{input.userId}}
Context: {{input.context}}

Step Output Variables

Access outputs from previous steps:

promptTemplate: |
Combine these results:
Research: {{steps.research-step.output}}
Analysis: {{steps.analysis-step.output.summary}}

Context Variables

Access execution context:

promptTemplate: |
Current time: {{context.timestamp}}
Request ID: {{context.requestId}}
Organization: {{context.organizationId}}

Conditional Templates

promptTemplate: |
{{#if input.detailed}}
Provide a detailed analysis with examples.
{{else}}
Provide a brief summary.
{{/if}}

Topic: {{input.topic}}

Retry Policy

Configure automatic retries for transient failures:

spec:
retryPolicy:
maxRetries: 3 # Maximum retry attempts
initialDelay: 1s # Initial backoff delay
maxDelay: 30s # Maximum backoff delay
backoffMultiplier: 2.0 # Exponential backoff multiplier
retryableErrors: # Errors that trigger retry
- timeout
- rate_limit
- transient

Multiple Agents File

Define multiple agents in a single file using YAML document separators:

# config/agents/travel-agents.yaml
apiVersion: axonflow.io/v1
kind: AgentConfig
metadata:
name: flight-search
domain: travel
spec:
type: specialist
description: Search for flight options
capabilities:
- flight_search
llm:
provider: openai
model: gpt-4
promptTemplate: |
Search for flights from {{input.origin}} to {{input.destination}}
on {{input.date}}.
---
apiVersion: axonflow.io/v1
kind: AgentConfig
metadata:
name: hotel-search
domain: travel
spec:
type: specialist
description: Search for hotels
capabilities:
- hotel_search
llm:
provider: openai
model: gpt-4
promptTemplate: |
Find hotels in {{input.destination}} for {{input.checkIn}} to {{input.checkOut}}.
---
apiVersion: axonflow.io/v1
kind: AgentConfig
metadata:
name: trip-coordinator
domain: travel
spec:
type: coordinator
description: Coordinate travel planning
capabilities:
- trip_planning
delegatesTo:
- flight-search
- hotel-search
llm:
provider: openai
model: gpt-4
promptTemplate: |
Create an itinerary combining:
Flights: {{steps.flight-search.output}}
Hotels: {{steps.hotel-search.output}}

Domain Templates

AxonFlow includes built-in domain templates that provide default configurations:

Travel Domain

metadata:
domain: travel

Default capabilities: flight_search, hotel_search, car_rental, itinerary_planning

Healthcare Domain

metadata:
domain: healthcare

Default capabilities: patient_lookup, appointment_scheduling, medical_records

Finance Domain

metadata:
domain: finance

Default capabilities: account_lookup, transaction_analysis, risk_assessment

Generic Domain

metadata:
domain: generic

Default capabilities: research, summarization, analysis

Configuration Loading

File-Based Loading

Place agent files in the config directory:

config/
└── agents/
├── travel-agents.yaml
├── support-agents.yaml
└── analytics-agents.yaml

Configure the orchestrator to load agents:

# orchestrator.yaml
agents:
registry:
mode: file # file, database, or hybrid (Enterprise)
path: /etc/axonflow/agents
watchForChanges: true # Reload on file changes

Environment Variables

Override configuration via environment variables:

AXONFLOW_AGENTS_REGISTRY_MODE=file
AXONFLOW_AGENTS_REGISTRY_PATH=/etc/axonflow/agents

Validation

Validate agent configurations before deployment:

# Using the CLI
axonflow validate agents config/agents/

# Using the API
curl -X POST http://localhost:8081/api/v1/agents/validate \
-H "Content-Type: application/json" \
-d @config/agents/my-agent.yaml

Common Validation Errors

ErrorCauseSolution
missing required field: metadata.nameAgent name not specifiedAdd name to metadata
invalid domainUnknown domain valueUse: travel, healthcare, finance, generic
llm config required for llm-callLLM not configuredAdd llm section to spec
circular delegation detectedCoordinator delegates to itselfRemove circular reference

Best Practices

1. Use Descriptive Names

# Good
metadata:
name: flight-availability-checker

# Avoid
metadata:
name: agent1

2. Define Clear Capabilities

# Good - specific capabilities
capabilities:
- flight_search
- fare_comparison
- booking_validation

# Avoid - vague capabilities
capabilities:
- travel
- stuff

3. Keep Prompts Focused

# Good - clear, focused prompt
promptTemplate: |
Search for flights matching these criteria:
- From: {{input.origin}}
- To: {{input.destination}}
- Date: {{input.date}}

Return the top 3 options with prices.

# Avoid - overly complex prompts
promptTemplate: |
You are an AI assistant that can do many things including
searching for flights, hotels, cars, and more...

4. Set Appropriate Timeouts

spec:
timeout: 30s # Short tasks
# timeout: 120s # Complex analysis

5. Use Labels for Organization

metadata:
name: production-support-agent
domain: support
labels:
environment: production
team: customer-success
version: "2.1"

Next Steps