Skip to content

tutorial

Chapter 1 of 10

Chapter 1 — Scaffold a voice agent

by Rod Rivera Published

Create a Skills project with Deepgram ASR and TTS, set your keys, and speak to Atlas for the first time.

Goal

Leave this chapter with a running voice shell: Inspector open, mic enabled, Atlas able to greet you.

Prerequisites

  1. Install uv
  2. Clone the companion repo:
git clone https://github.com/RasaHQ/rasa-community-resources.git
cd rasa-community-resources/tutorials/rasa-voice-agent-tutorial
make install
make env
  1. Open .env and fill in three values:
Variable Purpose
RASA_LICENSE Developer Edition licence
OPENAI_API_KEY LLM for routing and conversation (gpt-5.2 in this companion)
DEEPGRAM_API_KEY Speech-to-text and text-to-speech

make install pins rasa-pro==3.20.0.dev1.

  1. Gate the session:
make verify

Do not continue until checks pass (or only show expected warnings such as “no trained model yet”).

What rasa init --engine mantle creates

On a Mantle-capable Rasa build you can scaffold a fresh project with:

pip install rasa-pro==3.20.0.dev1
rasa init --engine mantle

The wizard asks where to create the project, collects your keys into a .env, installs Cursor / Claude Code compatible skills, validates and trains, and can open the Inspector. The resulting shape matches this companion:

my-agent/
├── agent.yml             # identity, persona, voice flags
├── integrations.yml      # LLM + channels
├── AGENTS.md             # context for your coding agent
├── .env                  # secrets (written by the wizard)
└── skills/               # what the agent can do

This tutorial’s companion already includes Deepgram ASR/TTS under integrations.yml (the wizard itself is LLM-focused). For the voice path here, paste the finished scaffold from the companion instead of starting from an empty wizard project:

Paste set: tutorial/snippets/step-00-scaffold/

Copy into the project root:

  • agent.yml
  • integrations.yml (includes Deepgram + gpt-5.2)
  • endpoints.yml
  • memory.yml
  • responses.yml
  • skills/intro/skill.md

The two config files are easy to mix up. integrations.yml is where the LLM and the Deepgram ASR/TTS for the Inspector live, which is what you will touch most. endpoints.yml covers optional platform services such as the response rephraser and a tracker store; it is optional for Mantle projects and can be omitted without rasa train errors.

Deepgram in integrations.yml

channels:
  inspector:
    enabled: true
    asr:
      name: deepgram
      language_map:
        en:
          model: flux-general-en
      eot_threshold: 0.7
      eot_timeout_ms: 5000
    tts:
      name: deepgram
      language_map:
        en:
          model: aura-2-andromeda-en

And in agent.yml:

voice:
  enabled: true
  asr: deepgram
  tts: deepgram

One API key covers both directions. Flux handles end-of-turn detection for ASR; Aura synthesises speech for TTS.

Train and talk

make train
make inspect

Verify: Inspector opens. Enable the microphone (or type) and say hello. Atlas should greet you and offer travel help.

Talking point

Skills projects are files in git — not a separate Studio-only artefact. Business teams and developers edit the same skill folders; Mantle serves them in production.

Next

Chapter 2 — First skill (FAQ)