osmTalk Docs
Agents

What is an Agent?

An agent is one AI assistant — its personality, voice, and rules in one place.

An agent is your AI assistant. One agent has:

  • A name (what callers hear: "Hi, this is Priya...")
  • A system prompt — a paragraph telling the AI who it is and what to do
  • A voice — which voice it speaks in (Helena, Brian, Hindi voices, etc.)
  • A language — English, Hindi, Tamil, etc.
  • Tools — optional powers (call your API, book on a calendar, hang up, transfer)
  • Settings — fine-tuning knobs you rarely need to touch

You can have as many agents as you want. Common setups:

You have...You'd build...
One business with one purpose1 agent ("Receptionist")
Sales + support team2 agents (Sales calls go to one, support to another)
Many product lines1 agent per product, or 1 agent that routes via keypad press
Multiple languages1 agent per language (Hindi vs Tamil) OR 1 multilingual agent

How agents talk to people

An agent doesn't care HOW the conversation happens. The same agent can:

  1. Answer phone calls when you link a phone number to it
  2. Take chat or voice on your website via the embedded widget
  3. Reply to WhatsApp messages
  4. Make outbound calls when you put it in a campaign

You build the agent once. It works everywhere.

The agent list page

Open Agents in the sidebar. Each row shows:

ColumnWhat it means
Name + avatarWhat you called the agent
ModelsThe AI brain (LLM), ears (STT), and voice (TTS) it uses
StatusGreen = active and reachable. Gray = paused.
CallsHow many calls this agent has handled

Click any row to open that agent.

The agent detail page

Three tabs at the top:

1. Overview

The headline numbers:

  • Total calls — lifetime
  • Avg duration — how long calls typically last
  • Success rate — what % completed normally
  • Active now — calls happening this second

Plus charts: call volume over 14 days, peak hours, status breakdown.

2. Calls

Just the calls handled by THIS agent. Filter and search as you would on the main Calls page.

3. Configure

Where you change the agent. The big sections:

  • Identity — name + avatar + image
  • System prompt — the instruction paragraph
  • Welcome message — the first thing the bot says
  • Providers — which LLM/STT/TTS to use (most users keep defaults)
  • Voice — pick a voice, adjust speed/stability
  • Background sound — optional office/cafe sound for realism
  • Tools — APIs, MCP servers, transfer rules, keypad routes
  • Advanced — VAD tuning, recording, voicemail detection, pronunciation, etc.

Buttons on the agent page

ButtonWhat it does
Test callTalk to the agent from your browser (uses real credits)
ConfigureOpen the editor
DeleteRemove the agent forever. You can't undo.

Common first-day errors (and what to do)

SymptomWhyFix
Phone rings but bot is silentTTS provider outageCheck provider health at the top of the agent page. If ElevenLabs/Deepgram shows degraded, swap TTS provider temporarily. Full diagnostics: Troubleshooting.
Bot keeps interrupting me mid-sentenceVAD stop_secs too aggressiveConfigure → Advanced → VAD → raise vadStopSecs to 0.4. See VAD tuning guide.
Bot doesn't react to me at allVAD confidence too high OR mic permissions deniedLower vadConfidence to 0.6. Or check browser mic permissions.
Bot mishears my company nameSTT confusion on rare wordsAdd it to Knowledge → Boosted Keywords or Pronunciation Dictionary. Most impactful single fix. See Pronunciation & Boost.
Agent gives weird/off-topic answersSystem prompt too vagueBe explicit about what NOT to do, not just what to do. Examples: "Never mention competitors", "Always end with a question".
Test call shows 503 / "Bot startup failed"Provider key missing/revoked, or LLM API rejecting the modelVerify provider keys in Settings → Providers. If using GPT-5 / o-series, the bot auto-routes — should "just work".
Invalid dynamicVariables when calling via SDKA key in your dynamicVariables dict starts with a digit, has consecutive spaces, or has leading/trailing whitespaceKeys now accept letters, digits, underscores, hyphens, dots, and single inline spaces — so Client Name, tracking-id, order.id all work. Reject reasons: leading whitespace, key longer than 64 chars. See Dynamic Variables.

Next steps

For developers

If you'd rather skip the dashboard for repetitive setup, the examples repo has 4 runnable TypeScript projects:

Repo exampleWhat
01-personalized-call/Place one call with per-recipient prompt substitution
02-bulk-campaign/Run a campaign from a CSV, watch progress live
03-webhook-receiver/Receive call.completed events with HMAC verification
04-simulate-before-going-live/Test your prompt with client.eval.simulate() — costs ₹0

Each ships an npm run check preflight that catches typos / wrong IDs / provider outages BEFORE any chargeable action.