Migration Guide
Switching voice platforms can feel daunting, but it doesn't have to be. This guide walks you through migrating from Vapi, Retell, or Bland to Talk To My Agent, step by step. Most users are up and running in under 15 minutes.
If you're here, you've probably already felt the pain points: unpredictable per-minute bills, audio routing through someone else's servers, or bolting together STT + LLM + TTS pipelines just to get a voice agent that still sounds laggy.
TTMA is different. Your agent runs on your own server with native speech-to-speech (no pipeline), fixed monthly pricing, and a full agent brain with memory, skills, and CRM built in. For a detailed breakdown, see the full comparison.
The good news: your existing work is not wasted. Your prompts, call scripts, and API integrations all carry over. The concepts map cleanly, and TTMA's format is often simpler.
SSH into your VPS and run the installer. It sets up the voice gateway, configures a Cloudflare tunnel (no open ports needed), and gets you a working agent in one command.
curl -fsSL https://voice.moltbot.ninja/install | bashThe installer walks you through initial setup interactively. When it finishes, you'll have a running voice gateway ready to accept calls. Visit voice.moltbot.ninja for detailed install docs.
Your agent's personality and call script live in a playbook - a plain-text file that tells the agent how to handle calls. Here is how prompts from each platform map over.
1 From Vapi (system prompt)
// Vapi assistant config (before)
{
"model": {
"provider": "openai",
"systemPrompt": "You are a dental office receptionist named Sarah.
You help patients schedule appointments.
Always confirm the date and time before booking."
}
}# TTMA playbook (after) - just paste your prompt as plain text
You are a dental office receptionist named Sarah.
You help patients schedule appointments.
Always confirm the date and time before booking.2 From Retell (agent config)
// Retell agent config (before)
{ "agent_name": "Sarah", "response_engine": { "type": "retell-llm" },
"general_prompt": "You are a dental office receptionist..." }# TTMA playbook (after) - same idea, simpler format
You are a dental office receptionist named Sarah.
...your prompt text here...3 From Bland (Pathways)
Bland Pathways use a visual node graph. In TTMA, the same branching logic goes into your playbook as conditional instructions, without needing explicit graph edges.
# Bland pathway: "Greeting" -> "Qualify" -> "Book" or "Decline"
# becomes playbook instructions like:
Greet the caller warmly and ask how you can help.
If the caller wants to schedule an appointment:
- Confirm their preferred date and time
- Use the book_appointment tool to reserve the slot
If the caller is not interested:
- Thank them for calling and end the conversation politelyIf your current platform calls external APIs (booking systems, CRMs, databases), those integrations map to TTMA's voice-tools.json file. Each tool is a JSON object describing the API call and when the agent should use it.
// voice-tools.json - a tool your agent can call mid-conversation
[
{
"name": "book_appointment",
"description": "Book a dental appointment for the caller",
"endpoint": "https://your-api.com/appointments",
"method": "POST",
"parameters": {
"patient_name": { "type": "string", "required": true },
"date": { "type": "string", "required": true },
"time": { "type": "string", "required": true }
}
}
]If you had Vapi "Functions" or Retell "Custom LLM" webhooks, the same logic moves here. The endpoint, method, and parameters translate directly.
TTMA uses a dedicated telephony provider for phone connectivity. You have two options:
Either way, once the number is connected to your TTMA instance, incoming calls route directly to your voice gateway.
Place a test call to your TTMA number. Verify that:
If something sounds off, edit the playbook and call again. Changes apply immediately - no redeploy required.
Use this table as a quick reference when translating your setup.
| Vapi / Retell / Bland | TTMA equivalent | Notes |
|---|---|---|
| Assistant / Agent | Playbook | Plain-text file with your call script and personality |
| System prompt | Playbook content | Paste your prompt directly into the playbook |
| Functions / Webhooks | voice-tools.json | JSON file defining API endpoints the agent can call |
| Knowledge Base | kb_search + voice-context-sources.json | Point to docs, URLs, or files for RAG retrieval |
| STT + LLM + TTS config | Not needed | The voice model handles audio end-to-end natively |
| Voice selection | Voice config in dashboard | Choose from available voice options |
| Call transfer | transfer_call tool | Built-in tool, configured in voice-tools.json |
| Conversation variables | Agent memory + CRM fields | Persistent across calls, not just within a session |
| Analytics dashboard | Call log + dashboard | Transcripts, recordings, and metrics on your server |
| Per-minute billing | Fixed monthly subscription | No usage surprises |
Can I keep my existing phone number?
Yes. The telephony provider supports porting from all major carriers. Submit a port request and it transfers in 1-2 weeks. Your current service stays active until the port completes - zero downtime.
Do I need to rewrite everything from scratch?
No. System prompts paste directly into the playbook. API integrations translate to voice-tools.json with the same endpoints. You are removing abstraction layers, not adding them.
How long does migration take?
About 15 minutes for the technical setup (install + prompts + tools + test call). Number porting adds 1-2 weeks of carrier processing, but you can run both platforms in parallel.
What about complex branching logic (Bland Pathways)?
TTMA uses natural-language conditional instructions instead of a visual node graph. Most pathway logic becomes a few paragraphs of "If the caller says X, do Y" instructions that the agent follows conversationally.
Install TTMA on your server in under 3 minutes. Your prompts and tools carry right over.
Start your migration