Skip to main content
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
The file has two levels. 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 in integrations.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 bundled default_session_start skill’s utter_greet response. Change it by declaring utter_greet in your project responses.yml, as described in Responses.

See also