agent.yml is required at the project root. It carries the agent’s identity in
an agent: block, plus several top-level tuning sections.
agent.yml
id, language, and persona are the agent’s
identity and live inside the agent: block. rules, prompts,
references, conversation, tool_timeout, and session_config are tuning
sections and sit at the top level as siblings of it.
The agent: block
Required. A missing or non-mapping agent: section fails the load.
persona
The only mandatory field in the whole file. A missing or blank persona raises
config.agent.missing_persona at load.
It sets global tone and identity.
id
When absent or blank, a unique id is generated in the form
YYYYMMDD-HHMMSS-<duoname> and written back into agent.yml, with a warning.
language is not written back. The en default is applied at parse time only.
rules
A list of strings, rendered into the system prompt as a bullet list. These are
global do/don’t guidance applied across every skill: scope limits, tone guards,
ordering constraints.
A rule containing
: followed by a space parses as a YAML mapping and breaks
the load. Quote it, or use a > folded scalar as above.prompts
Overrides for individual sections of the system prompt. Every key is optional;
an empty or absent value falls back to the built-in default.
routing_no_active_skill is the lever for greeting/closing behaviour and for
telling the orchestrator when not to route into a skill.
references
Controls how the agent answers from retrieved knowledge.
The same model group embeds the corpus at
rasa train and loads it at serve
time, so keep it declared for as long as the trained model is in use.
conversation
before_end lists skill ids that should complete before the conversation ends.
The names are rendered into the routing prompt, so the orchestrator knows to
pick those skills up before wrapping up.
tool_timeout
Optional top-level key. Wall-clock timeout in seconds for tool calls.
agent.yml
10 second default.
session_config
Voice
Voice is configured as a channel inintegrations.yml, including the ASR and TTS
engines under that channel’s asr: and tts: keys. The runtime detects a voice
channel and applies prompts.voice_rules from this file, so what belongs here
is the persona and the voice channel rules.
Starting a conversation
The bundleddefault_session_start skill does not greet. Who speaks first
decides whether you should override it:
- Agent speaks first: override
default_session_startwith a greeting and have the channel send/session_startas the first user message. - User speaks first: leave the bundled skill silent so Mantle handles the first real utterance immediately.
rasa shell, the Inspector, and the built-in voice channels already send
/session_start. See
Start a conversation.
See also
- Start a conversation: who speaks
first, and when to override
default_session_start integrations.yml: LLM provider, channels, MCP servers (per-servertool_timeout), optional Langfuse tracing- Tools:
@toolinterface and timeout behaviour memory.yml: project-wide memory