Skip to content
RasaGet a free licence
Menu

tutorial

Chapter 0 of 4

Build a voice agent that builds travel agents

by Rod Rivera Published

Use Codex, Rasa Mantle and hosted OpenAI Agents sessions to build a travel desk backed by public APIs.

Key takeaways (3)
  • Make a voice call to a travel desk, then ask a second agent to build one from your brief.
  • Choose a flight record and its arrival time before deciding which weather forecast answers the traveller’s question.
  • Repeat an ambiguous flight request with labelled classroom data, then compare tool calls before and after a repair.

This workshop is planned for three hours and includes two voice calls. First, you’ll be a traveler asking a desk for advice. Later, you’ll be a developer asking a factory agent to build a new travel desk. You’ll run the resulting agent and call it yourself.

Ready to open your workspace? Jump to the Codespaces setup. If you’re working independently, leave this page open while GitHub prepares it.

Which forecast belongs to my flight?

“I’m flying from Oslo to Bergen tonight. Will I need a coat when I land?”

Imagine the agent replies, “It’s 9 °C in Bergen.” Before you decide whether to take a coat, what would you ask it to show you?

Inspect the answer

Ask for the flight’s arrival time and the hour covered by the forecast. If the plane lands tomorrow morning, a correct reading for tonight can still give poor packing advice. In Inspector you can compare the arrival from one tool call with the timestamp passed to the next.

Keep that question handy. You will first call a desk with weather and currency tools, then build a desk that can look up the flight for itself.

Tomorrow the travel team asks for a change

“When two records match my flight number, ask which date I mean before giving me the weather.”

As the developer, how would you know the change worked? You’d want to hear the desk ask for the date, see which record it selected after your answer, and check that a traveler with one clear match still gets a forecast directly.

That is the job of the software factory in this tutorial. A builder proposes a travel skill from your brief. You review the proposal, approve the saved version, and compile it with the selected tools into a separate Mantle project. Then you call that project to check its behavior. Because the software it produces is itself an agent, we call this an agent factory.

What runs where?

TechnologyIts job in your two calls
Rasa Mantle and DeepgramMantle runs the conversations and selects tools. Deepgram transcribes your speech and speaks each agent’s replies.
CodexIn the workbench exercise, Codex authors a candidate specification and helps you refine the travel skill.
OpenAI hosted Agents APIIn the factory exercise, Studio submits your spoken brief to a hosted build session and retrieves the proposed specification.
Avinor, Open-Meteo and FrankfurterThe traveler agent reads flight boards, forecasts and reference exchange rates. No participant travel-data key is required.
GitHub CodespacesYour browser workspace contains the project files, terminal and prepared runtimes.

Your route through the masterclass

Elapsed minutesOpenWhat you finish with
0–30Your first travel briefingA provider result and a two-turn voice call with the starter desk
30–75Build the full agent with CodexA separate four-tool Mantle project you can run
75–85BreakSave the candidate path and your agent directory
85–135Operate the Mantle factoryA proposed agent specification, hosted session ID when live, and a reviewed build
135–180Test a complete trip and take it homeA flight briefing with attributable sources and a next build

Presenting? Open the slide PDF and instructor card. Working alone? Each chapter ends with an observable checkpoint.

Before you start

You need a GitHub account with Codespaces access, a browser, a microphone, speakers or headphones, and the credentials below. A Codespace is your own temporary computer on GitHub. Its editor and terminal open in your browser. Your microphone and speakers stay on your device.

A. Get the three values for the complete workshop

If the workshop host gave you a value, use it in the matching row. One Deepgram key serves both agents and both directions of audio. The Rasa value is a license. GitHub itself needs only your sign-in.

Exact GitHub secret nameWhere to get the valueWhat it unlocks
RASA_LICENSEOpen the Rasa Developer Edition form, submit it and copy the full license string delivered to you.Training and running the Mantle factory and traveler agents.
OPENAI_API_KEYOpen OpenAI project API keys, select the intended project, choose Create new secret key, name it and copy the value when shown. Use a project with billing and access to the configured models.Mantle conversations, Codex API-key login, and hosted builds. The hosted exercise also needs Agents read/write and Responses write permissions.
DEEPGRAM_API_KEYOpen the Deepgram Console, choose your project at the top left, then Settings → API Keys → Create a New API Key. Name it, choose a role that permits speech requests, create it and copy the secret while visible. Your project needs speech usage available.Flux transcribes the user’s speech. Aura-2 speaks the reply. Both the developer and the traveler use this key.

Avinor supplies public airport boards. The flight exercise covers Oslo and Bergen in either direction. The weather tool uses Open-Meteo and the currency tool uses Frankfurter. The workshop endpoints require no additional participant keys. The Avinor feed documentation describes the board and its update interval. The server reuses each board for three minutes within the running agent.

B. Put the values in your personal GitHub settings

  1. Open two browser tabs. Keep this guide open. In the other tab, sign in to GitHub with the account you will use for the workshop.
  2. Click your profile picture at the top right, choose Settings, then choose Codespaces in the left sidebar. You can also open that exact settings page.
  3. Scroll to Codespaces secrets and click New secret. Think of a secret as a label paired with a hidden value.
  4. Try the first one together. In Name, type RASA_LICENSE. In Value, paste the license string. Under Repository access, select RasaHQ/rasa-community-resources. Click Add secret.
  5. Repeat step 4 for OPENAI_API_KEY and DEEPGRAM_API_KEY. Use each provider’s value in its own row. Confirm the names appear in the list. GitHub hides the saved values.
  6. If a name already exists, edit its repository access to include the workshop. If the repository is absent from the picker, enter the value in the matching recommended secret field on the creation form in step C instead. For a fork, grant access to the fork you actually open.

C. Create your first Codespace

  1. On the form check the repository RasaHQ/rasa-community-resources, configuration Rasa Travel Agent Factory, and a machine with at least four cores. Check which account will pay for Codespaces usage. For an unmerged edition, use the review branch supplied by the host and choose Code → Codespaces → New with options.
  2. Click Create codespace once. A browser editor opens. Leave it open while the preparation log runs. Wait for Travel factory dependencies ready before starting Mantle.
  3. In the editor’s top menu, select Terminal → New Terminal. If the menu is collapsed, open ☰ first. The panel at the bottom is where you type commands. Paste the line below and press Enter.
bash desk doctor

What you should see: three secret names followed by present, the Mantle and builder executables marked ready, and a Codex executable path. This checks availability inside the workspace. The voice exercise below tests the microphone, speech services and speaker together.

If a secret says missing: return to step B, correct the name or repository access, then open Your Codespaces. Find this workspace, choose … → Stop codespace, wait for it to stop, then click its name to reopen it. Open a terminal and rerun bash desk doctor. Your existing project stays in place.

D. Get a useful answer

In the browser editor choose Terminal → New Terminal. The terminal starts in workshops/software-factories-masterclass. Paste one command and press Enter:

bash desk data fx USD GBP 200

Find converted and reference_date. You can already tell a traveler approximately what $200 is worth in pounds and which day’s rate you used. Try bash desk data weather LHR next. For flights, run bash desk data flights OSL BGO and use a returned flight number in bash desk data status FLIGHT_NUMBER. If a source is unavailable, keep that result and try the other one.

How the two agents fit together

Two ways to build the traveler agent

The developer builds the product. The traveler uses it to call providers.

FigureTwo ways to build the traveler agent

The build inputs are specifications. The output is a real agent directory you can open, edit, train and run. The live readers are reusable tools authored in the repository. Your builder decides how the travel skill should use them.