# Preview Calls (/docs/agents/voice-agents/preview-calls)

> For the complete documentation index, see [llms.txt](https://docs.tandemcx.ai/llms.txt). Any page on this site can be fetched as Markdown by appending `.md` to its URL.

**Call Agent** opens a live voice call to the agent you're editing, in the browser. You talk into
your computer's microphone and the agent answers, so you can hear a prompt change without
publishing a workflow, routing a number, or picking up a phone.

The call runs the configuration currently on screen, including edits you haven't saved yet.

## Start a preview call

Select **Automations → Agents** in the left navigation and open an agent. **Call Agent** sits
in the top right of the editor, in the same row as the save and publish actions.

Every agent has it, on every version. **Add Agent** creates the agent before the editor opens, so
there is no point at which you are editing an agent that can't be called, and a published version
can be called as readily as a draft.

Clicking it checks the same rules **Save Configuration** checks. If something is incomplete, the
editor reports it under **Couldn't call agent** and opens the section that owns the field, rather
than failing later inside the call.

It deliberately does **not** apply the stricter checks **Publish** runs. An agent that isn't ready
to go live — one whose tool points at a colleague's unpublished draft, say — can still be called
here. Being able to try out work in progress is the point.

Your browser then asks for microphone permission. Grant it and the preview opens in place
of the editor, with **Back to Agent** at the top left.

<Callout type="info">
    **Use headphones.** Your microphone will otherwise pick up the agent's own voice through your
    speakers, and the agent will interrupt itself.
</Callout>

## What the preview shows

The page has a row of numbers across the top, the agent on the left, and the conversation on
the right.

- **The numbers row** counts the call so far: the average and 95th-percentile time to first
  audio, and how many turns, barge-ins, tool calls, and transfers there have been. The two
  latency numbers show a dash until the agent has replied.
- **The agent** is the avatar and name of the agent you're talking to, with the model under
  it. After a transfer it shows the new agent, with "via" and the agent that handed over.
- **The orb** is the agent's own avatar, moving, sized to fit the window and centered with the
  caption under it. While the agent talks, the eye comes forward, its iris turns and
  brightens, the orb swells, and a soft glow in the agent's color follows the voice. When the
  agent stops, the eye sinks back a little to listen. While you talk, it looks toward you and
  a purple light falls on it from your side, following your voice; the orb itself holds still.
  When nobody is talking it glances around and blinks.
  If no purple light reaches it while you speak, the browser isn't hearing you. The line under it
  says the same thing in words: **Agent speaking**, **Listening to you**, or **Listening**.
  While you're muted it dims, and it stops glancing around and blinking unless the agent is
  talking. With the **Initials** [avatar style](/docs/agents/voice-agents/persona#appearance)
  the orb has no eye, and its colors flow with the voice instead.
- **The caption** is your last line and the agent's latest one, in large type. Both show the
  same text as the conversation.
- **Response latency** charts each agent reply's time to first audio, one bar per reply,
  blue under 800 ms, yellow under 1,500 ms, and red from 1,500 ms up, with a dashed line at
  the average. Point at a bar for the agent and the time.
- **Caller sentiment** adds a colored band each time the agent's read on you changes.
- **The conversation** is every turn as the agent and the brain produce it, your lines on the
  right and the agent's on the left with its avatar. Under each agent line are the agent's
  name, **`NNNms to first audio`** (how long you waited between finishing your sentence and
  hearing the reply start, measured at the brain), and **Barge-in** on a turn you interrupted.
  It follows the newest turn unless you have scrolled up to re-read something.

    Lines appear as they are spoken. Yours shows, dimmed, while you talk, rewriting itself as
    speech recognition settles on what you said, and becomes your line once you finish. The
    agent's line shows the reply as the brain recorded it. That record usually arrives before
    the agent starts talking, so most replies appear whole at once. When the agent starts
    talking first, its words appear in time with its voice until the record arrives, and the
    wording can then change slightly. After you interrupt the agent, its line can include words
    you never heard.

    A tool call appears as a row of its own, collapsed, carrying the tool, how it turned out
    (**Succeeded**, **Failed**, **Running** while it is still in flight, or **No result** when
    the call ended before it answered), and how long it took when the platform timed it. Expand
    one for the arguments the agent sent, the tool's own name as your configuration spells it,
    and, on a failure, the reason the tool gave. An integration tool's row also shows the HTTP
    status, and admins get tabs with the request and response. See [What the agent
    did](/docs/agents/live-conversations#what-the-agent-did) for the outcomes in full and for why
    a duration is sometimes missing, and [Request and response
    details](/docs/agents/live-conversations#request-and-response-details) for the tabs.

- **The timer** at the bottom counts up to the five minute limit.
- **The call controls** sit beside the timer while the call is up. **Mute** stops sending your
  microphone. **Hang Up** and **Back to Agent** both end the call and return you to the editor.

On a narrow window the two halves stack, and the agent side shrinks to one row: avatar, name,
a small orb, and the agent's latest line.

The conversation stays on screen after the call ends, and the orb settles. When the agent picks
a disposition, the ending names it.

**Restart** starts a fresh call against whatever the form says now. Use it after an edit.

### Visual quality

**Visual quality**, next to **Restart**, sets how the orb is drawn. Your choice is saved in this
browser for your sign-in.

| Choice      | What it does                                                                                                                                                                                                                                                                                            |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Auto**    | The default. Uses **Quality** when your browser supports WebGL2, and **Basic** when it doesn't or when your system asks for reduced motion. If a typical frame in the first 60 takes more than 20 ms (the median, so one slow frame doesn't count), it switches to **Basic** until you reload the page. |
| **Quality** | A lit, 3D-shaded orb drawn on the graphics card. It keeps animating when your system asks for reduced motion: only **Auto** switches to **Basic** for that. Without WebGL2 you get **Basic**.                                                                                                           |
| **Basic**   | The avatar itself, animated. Lighter on the device. When your system asks for reduced motion it is drawn once and holds still.                                                                                                                                                                          |

If the **Quality** orb can't start, or the browser loses its graphics context during a call, the
orb switches to **Basic** by itself.

### Transfers during a test call

When the agent uses **Transfer to another agent**, the conversation marks the moment with a line
in the new agent's color, "Now talking to" and its name, and the page takes on that agent: its
avatar, its orb, and its model. Its replies carry its own avatar.

## It runs your unsaved edits

The configuration is snapshotted when the call starts, not read live. Editing the form during a
call does not change the agent you're talking to, which is why the bar at the top prints
**Running draft as of** and the time the call began. To hear an edit, click **Restart**.

This is the loop the preview exists for: change a prompt, restart, listen, change it again. Nothing
is written to the agent until you save.

It also means a preview call tells you about **the version you are looking at**, not the one
callers reach. Open a draft and you hear the draft; open the published version and you hear what is
live. See [Versioning](/docs/agents/voice-agents/versioning).

## What a preview call does not do

A preview has no phone call behind it, and several things behave differently as a result.

- **It leaves no call record.** A preview does not appear in **Recent Calls**, produces no
  post-call analysis, and reports nothing to a workflow.
- **Caller memory is off**, both conversation depth and dropped-call resume. The agent starts with
  no history of you, so a returning-caller greeting won't fire and a memory instruction won't have
  anything to read.
- **Telephony built-ins simulate success.** **Transfer to an outside number** reports that it
  connected without dialing anywhere, **Pause and resume recording** reports success without a
  recording to pause, and keypad capture returns the sample digits `1234`. **Transfer to another
  agent** is not simulated: see [Transfers during a test call](#transfers-during-a-test-call). See
  [Built-in Tools](/docs/agents/voice-agents/built-in-tools#preview) for what the simulation does
  and doesn't prove.
- **A handoff ends the call.** When the agent hands back to a workflow, there's no workflow session
  to hand to, so the preview reports the target and stops.

Your own tools are the exception: an integration tool that calls your API on a real call calls it
on a preview call too, with real data. To exercise a request without that, use **Test This Tool**
in the tool's own editor, covered in
[Tools](/docs/agents/voice-agents/tools#test-a-tool-before-you-call).

## Limits and defaults

| Limit               | Value                                                              |
| ------------------- | ------------------------------------------------------------------ |
| Call length         | 5 minutes, then the call ends with the preview limit as its reason |
| Concurrent previews | One at a time per signed-in user                                   |
| Leaving the preview | Confirmed while the call is up, then the call ends                 |

**Hang Up** and **Back to Agent** end the call without asking. Anything else that would
navigate away — a link in the left navigation, a breadcrumb — asks first, under **End the
call?**, because leaving cannot be undone. Ending the call discards nothing you have saved,
but the transcript goes with it.

## Troubleshooting

**Permission needed.** The browser refused microphone access. Enable it for this site in your
browser's settings, then use **Try Again**.

**A preview call is already active for your account.** You have another preview running, most
likely in a tab you left open. End it, or wait for it to hit the five minute limit.

**This preview session is invalid or has expired.** The session that started the call is no longer
good. Click **Call Agent** again to start a new one.

**Your sign-in session expired.** Reload the page and start the call again.

**The connection dropped unexpectedly.** The media socket closed without an ending. Retry; if it
keeps happening on one network, it is worth reporting.

## When to use a real call instead

The preview covers the agent: its prompt, its voice, its tools, its endings. It does not cover the
path a caller takes to reach it. Verify these on a real call to a routed number:

- the number or SIP trunk is pointed where you think it is
- the workflow reaches the **AI Voice Agent** node and wires its exits somewhere
- a transfer destination is a queue that exists and answers
- audio quality over the carrier, rather than over your laptop's microphone

[Using an Agent in a Workflow](/docs/agents/voice-agents/using-in-workflows) covers that side.

## Next steps

<Cards>
    <Card
        title="Persona"
        href="/docs/agents/voice-agents/persona"
        description="The prompt, the greeting, the endings you'll be restarting the preview to test, and the agent's color and avatar."
    />
    <Card
        title="Voice & Speech"
        href="/docs/agents/voice-agents/voice-and-speech"
        description="Interruption and pause settings, which a preview call is a fast way to hear."
    />
    <Card
        title="Built-in Tools"
        href="/docs/agents/voice-agents/built-in-tools"
        description="What the telephony tools do when there is no phone call behind them."
    />
    <Card
        title="Using an Agent in a Workflow"
        href="/docs/agents/voice-agents/using-in-workflows"
        description="Publishing and routing, once the agent sounds right."
    />
</Cards>
