Overview | Rasa Documentation

Build your first agent in just a few minutes with Rasa Copilot.

You can customise many aspects of how your assistant project works by modifying the following files: config.yml, endpoints.yml, and domain.yml.

A minimal configuration for a CALM assistant looks like this:

config.yml

recipe: default.v1
language: en
assistant_id: 20230405-114328-tranquil-mustard

pipeline:
  - name: CompactLLMCommandGenerator

policies:
  - name: rasa.core.policies.flow_policy.FlowPolicy

Default Configuration

For backwards compatibility, running rasa init will create an NLU-based assistant. To create a CALM assistant with the right config.yml, add the additional --template argument:

rasa init --template calm

Assistant ID

The assistant_id key should be a unique value and allows you to distinguish multiple deployed assistants. This id is added to each event's metadata, together with the model id. See event brokers for more information. Note that if the config file does not include this required key or the placeholder default value is not replaced, a random assistant name will be generated and added to the configuration every time you run rasa train.

Recipe

The recipe key only needs to be modified if you want to use a custom graph recipe. The vast majority of projects should use the default value "default.v1".

Language

With these settings, your assistant will default to its primary language but can recognize and respond in all configured languages. You can further translate your assistant’s content. For more details, refer to our Translating Your Assistant guide.

Here’s the example for assistant which is using English as default while also supporting Italian, German, and French:

config.yml

# ...
language: "en" # Default language: English
additional_languages:
  - "it" # Italian
  - "de" # German
  - "fr" # French
# ...

You can use any valid language or locale-specific code following the BCP 47 standard:

Make sure all language codes adhere strictly to this format to avoid unexpected validation errors.

BCP 47 Standard

Rasa adheres to the BCP 47 standard for language codes. This ensures compatibility with platforms such as Twilio Voice, Genesys Cloud, and Amazon Connect.

Pipeline

The pipeline key lists the components which will be used to process and understand the messages that end users send to your assistant. In a CALM assistant, the output of your components pipeline is a list of commands.

The main component in your pipeline is the LLMCommandGenerator. Here is what an example configuration looks like:

config.yml

  pipeline:
    - name: CompactLLMCommandGenerator
      llm:
        model_group: openai_llm
      flow_retrieval:
        embeddings:
          model_group: openai_embeddings
      user_input:
        max_characters: 420

endpoints.yml

   model_groups:
     - id: openai_direct
       models:
         - model: "gpt-5.1-2025-11-13"
           provider: "openai"
           timeout: 7
           temperature: 1.0
     - id: openai_embeddings
       models:
         - model: "text-embedding-3-large"
           provider: "openai"

The full set of configurable parameters is listed here.

Policies

The policies key lists the dialogue policies your assistant will use to progress the conversation.

config.yml

policies:
  - name: rasa.core.policies.flow_policy.FlowPolicy

The FlowPolicy currently doesn't have an additional configuration parameters.

Silence Timeout Handling

Silence timeouts help your assistant handle situations where the user doesn’t respond. For now, this setting only works with voice-stream channels, such as:

There are two types of timeouts you can configure.

Global Silence Timeout

You can set a default silence timeout across your assistant by adding this to your endpoints.yml:

endpoints.yml

interaction_handling:
  global_silence_timeout: 7

This means the assistant will wait 7 seconds (or your configured value) for a user reply before treating it as silence and triggering fallback logic.

By default the global silence timeout is set to 7 seconds.

Local (Per-Step) Silence Timeout

You can override the global value for specific Collect steps:

steps:
  - collect:
      name: ask_email
      silence_timeout: 10

or for a specific channel in that step:

steps:
  - collect:
      name: ask_email
      silence_timeout:
        twilio_media_streams: 10

For channels not listed, the timeout set in credentials or global silence timeout of 7 seconds (if not set for a channel in credentials.yml) will be used.

This allows you to fine-tune the timing for specific questions. For example, you may want to:

Tailoring silence handling this way improves the conversational experience.

Disabling Silence Timeouts

If you want to disable silence detection so it never triggers during a conversation, you can set the timeout to a very high value. For example, to disable it globally:

endpoints.yml

interaction_handling:
  global_silence_timeout: 70000

Use this approach if you want to avoid fallback interruptions but still need a valid numeric value for configuration or platform compatibility.

Disabling Silence Timeouts at step level If silence timeout is set at the step level, that value has precedence over the global or channel-specific setting. In order to disable silence timeout for a specific step, set it to a very high value (e.g., 70000 seconds) in that step's configuration.