Skip to content

agent.yaml Reference

agent.yaml is the heart of every agent package. It tells the Selu orchestrator who the agent is, how it should be routed, and which capabilities it can use.

name: hello-world
version: 0.1.0
display_name: Hello World
description: A simple greeting agent.
author: your-username
license: MIT
model:
default: anthropic/claude-sonnet
FieldTypeRequiredDescription
namestringYesUnique identifier. Lowercase, hyphens allowed. Must be unique in the marketplace.
versionstringYesSemantic version (MAJOR.MINOR.PATCH).
display_namestringYesHuman-readable name shown in the UI and marketplace.
descriptionstringYesOne-line summary (max 160 characters).
authorstringYesMarketplace username or organisation.
licensestringYesSPDX license identifier (e.g. MIT, Apache-2.0).
modelobjectYesLLM configuration.
routingobjectNoHow the orchestrator routes messages to this agent.
capabilitieslistNoCapabilities this agent can invoke.
memoryobjectNoSession and long-term memory settings.
eventsobjectNoEvent subscriptions and emission rules.
tagslist[string]NoMarketplace discovery tags.
model:
default: anthropic/claude-sonnet
fallback: openai/gpt-4o
temperature: 0.7
max_tokens: 4096
FieldTypeRequiredDescription
defaultstringYesProvider/model identifier. The user’s configured provider takes precedence.
fallbackstringNoUsed when the default is unavailable.
temperaturefloatNoSampling temperature (0.0–2.0). Default 0.7.
max_tokensintNoMaximum response tokens. Default 4096.

Capabilities are listed by reference. They can point to a local directory or a remote Docker image.

capabilities:
- name: weather
path: ./capabilities/weather
FieldTypeRequiredDescription
namestringYesIdentifier used in tool calls.
pathstringNoRelative path to a local capability directory.
imagestringNoDocker image URI. Used if path is not set.
parametersobjectNoStatic key-value config passed to the capability at startup.
routing:
mode: inline # inline | dedicated
triggers:
- mention: "@weather"
- intent: weather_query
priority: 10

See Routing & Sessions for full details.

memory:
session_ttl: 3600 # seconds
max_history: 50 # messages
long_term: true # enable vector-backed long-term memory

Run selu validate in your agent directory to check your agent.yaml against the schema before publishing.

Terminal window
selu validate ./my-agent