Key takeaways (3)
- Make the helper ask before acting, then inspect the command it records instead of trusting a reassuring reply.
- Keep the builder separate from the helper, and check the saved proposal before deciding whether to accept it.
- Rehearse with a labeled sample first; start a billed builder session only when you choose to test generation.
You are building a support assistant that can restart a customer’s router. A restart keeps the settings; a factory reset erases them. The words sound similar, so a fluent answer is not enough. You need to inspect what the assistant would do.
You will build that helper in Rasa Mantle, then connect a builder that proposes a small code change. A separate check accepts or rejects the saved file. You make the final decision. Everything runs in a browser Codespace; you install nothing on your laptop.
This is a small software factory: one agent takes the request, another proposes a change, and a check controls what moves forward. The example simulates router commands. It never contacts a router or changes your internet connection.
Choose your pace
These are planning estimates, not measured completion times. Allow extra time for account setup, downloads and model responses. You can stop after any part.
| Part | Allow | You finish with |
|---|---|---|
| Open the Codespace and build the helper | 25–35 minutes | A conversation that asks before recording a restart |
| Test resets and the recorded command | 20 minutes | A refusal check, a cancellation check and a source check you have made fail |
| Connect the builder | 25–35 minutes | A visible receipt for a saved proposal, using a labeled sample first |
| Judge the proposal | 20 minutes | Accepted and rejected files, plus your written decision |
What you need
- A personal GitHub account with Codespaces available and enough compute and storage allowance. Check GitHub’s usage guidance; a Codespace is not an unlimited free machine.
- Your own free Rasa Developer Edition license. Save the license value you receive, not the confirmation-page address.
- Your own OpenAI application programming interface (API) key with model access and billing available. Mantle uses it for conversation turns. ChatGPT subscriptions and API billing are separate.
- Familiarity with a terminal, opening files and basic Python functions. You do not need prior Rasa experience.
You add the two keys as Codespaces secrets in the first part. Do not put them in source files, commands, screenshots or chat messages. There is no preparation to complete before starting this page.
What each check can tell you
| What you inspect | What it establishes | Outside this check |
|---|---|---|
| The helper’s reply | What the customer was told | Which command the tool recorded |
| The Inspector’s tool result | The simulated command returned in that conversation | A physical router restart |
| The source-file check | The configured restart value in the file you chose | That a live conversation reached the tool |
| The proposal gate | A saved file has the narrow structure and values this exercise accepts | That arbitrary generated Python is safe to run |
Why does the tutorial use more than one check?
Keep these results separate. A convincing reply cannot replace the tool result. A passing source check cannot replace the conversation. The final gate deliberately accepts a very small kind of file so it can inspect it without running it.

The dashed connection is deliberately absent from the implementation. You inspect the proposal before making a decision about future changes.
Source and scope
The runnable companion comes from the Software Factories workshop. This path adapts its steps for working alone, with recovery beside each operation. Its pinned revision is 816b0c8; the completed Mantle reference includes a dependency lock and native checks.
The completed reference adds these files alongside the existing skills:
Files in this step
Created: mantle/agent.yml, mantle/responses.yml, mantle/integrations.yml, mantle/uv.lock
You create your own helper during the exercise. The completed reference gives you a fixed project to compare against, rather than a substitute for following the steps.
The fixture tests file handling and the local tool connection. It does not test an Agents session or prove what a new model-generated proposal will contain. Treat the optional live build as a separate result, and keep its receipt.
Studio 2 is coming later. Join the Rasa Community to hear when it is released. This tutorial uses Mantle throughout.
Begin with your first confirmed restart
Start with your router helper.