Skip to main content
A Mantle project is two config files and a skills/ folder. Everything else is optional and added when a skill needs it.

The minimum

This is a complete, trainable agent:

Everything a project can hold

Each optional file is added only when a skill needs it:

What makes it a Mantle project

The engine is chosen by layout rather than by a config key. A project is Mantle when it has an integrations.yml and at least one skills/*/skill.md. That glob is one level deep, so a skill folder sits directly under skills/.

Agent root

A skill folder

The folder name is the skill id. A skill in skills/card_replace/ is @skill.card_replace in prose and session.card_replace.<entry> in memory, whatever its frontmatter name: says.

Declared or discovered

The difference decides whether a tool is usable without any config:
  • A skill’s own tools are auto-discovered from tools.py and tools/*.py in that folder. Nothing to declare. Within one skill, a tools/*.py definition shadows a same-named one in tools.py.
  • Shared tools in the agent-root tools/ folder must be named in the skill’s import_tools. A shared tool that is not declared is not attached to the skill.
  • MCP tools use mcp/<server-id>:<tool-name> in import_tools. Only listed tools are attached; see Import MCP tools.
  • On a name collision between skill-local and shared tools, the skill-local tool wins. An MCP bare name that collides with either fails rasa train.

What ships in the trained model

rasa train copies agent.yml, integrations.yml, memory.yml, responses.yml, and the skills/, tools/, and references/ directories into the model archive. Two consequences worth knowing:
  • The reference index is built at train time, so adding or editing a file under any references/ folder needs a retrain before the agent can answer from it.
  • The model group named by orchestrator.model_group, plus channels: and mcp_servers:, are read from your project directory at runtime. Changing the models inside that group, a channel, or an MCP connection only needs a restart. Changing which group orchestrator.model_group names needs a retrain.

Files the scaffold adds

rasa init --engine mantle also writes AGENTS.md, context for your coding agent, and .env, holding your keys. Neither is read by the engine: .env supplies environment variables referenced with ${VAR}, and AGENTS.md is for your IDE. It also writes .rasa/docs/mantle/, a local copy of this documentation for your coding agent to search. The engine never reads it, and deleting it only means your agent has to fetch the reference over the network instead. Restore it with rasa tools init docs mantle.

See also