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, 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.
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.
The opening message
The first thing the agent says comes from the bundleddefault_session_start
skill’s utter_greet response. Change it by declaring utter_greet in your
project responses.yml, as described in
Responses.
See also
integrations.yml: LLM provider, channels, optional Langfuse tracingmemory.yml: project-wide memory