Skip to main content

Live conversation monitor

The Live tab is the dashboard surface for supervising AI-agent conversations while they are still running. Instead of polling the API, you open one page and see every conversation the agent is holding right now — voice calls and chat threads (web chat, SMS, WhatsApp, and the other messaging channels) — and can click into any of them to watch the transcript and send the agent a note. Access is limited to the owner, admin, and supervisor roles, because the surface shows live customer conversation content.

Open the Live tab

  1. Open Agents in the dashboard.
  2. Select the Live tab.
A direct visit to /agents/live redirects to Agents → Live — the tab is the canonical surface.

Reading the live list

The page polls every 5 seconds, so the list is at most a few seconds behind reality. Each live conversation is a row: Conversations appear while they have activity in the last few minutes; once one goes quiet it drops off. The list starts page-sized and grows a Load more control when the contact center is busy, and a Refresh control is there when you want an update before the 5-second poll fires. The triage habit that makes this list useful: sort your attention by the last message and turn count, not by arrival order. Open the row that annoys you.

Work a single conversation

Select any row (or its View button) to open the per-conversation detail at /agents/live/[conversationId]. There is a three-stage flow that keeps this fast at scale:
  1. Open the detail. The page polls every 2 seconds and auto-scrolls to the newest message, so you are always looking at the latest turn without touching anything. The header shows the agent name, the channel, a status badge, and the conversation id.
  2. Scan the role badges. Every message carries a role badge so you can tell speakers apart at a glance:
    • Agent — a reply the AI generated.
    • User — what the customer said.
    • Tool — an action the agent executed (the tool name is shown with it), rendered in a monospace block so call details are easy to scan.
    • System — internal context messages, shown dimmed.
    Read the badges top to bottom: User messages are the customer’s need, Agent messages are the answer quality you are grading, and Tool messages are the actions you are accountable for. If the last badge is User and nothing follows it, the agent is mid-turn — that is the moment a whisper still lands.
  3. Decide whether to whisper. Whisper when the agent is still going and you can improve its next turn: it stated a wrong fact, it is circling without calling the obvious tool, or a human queue should take over. Do not whisper when the conversation is already escalating to a human (the customer has been told) or when it is at its last exchange — send the note and it will sit pending forever.
While the detail poll refreshes the transcript, the note history and approval strip refresh with it — one page, no manual reload.

The whisper playbook

The panel under the transcript is a whisper: a one-way note from you to the agent, applied on its next turn. The customer never sees it. A note is 1–1000 characters — the counter shows your position, and anything past the limit is cut off rather than sent. Type the note, then send it with the button or Ctrl+Enter (Cmd+Enter on macOS). Keep the shortcut in muscle memory; a whisper sent two seconds earlier lands on a turn a whisper sent late misses. Below the input, the last five notes are listed with a pending or read badge — a note is pending until the agent picks it up on a later turn, then read. Three scenarios, with the note to send for each. Write them as direct instructions to the agent — imperative, one point per note, in the language the agent is conversing in:

When the whisper lands but the conversation ends anyway

This is the failed end-state worth internalizing: the note is pending, the customer says “actually that’s everything, thanks,” and the conversation closes before the agent takes another turn. The note was never applied — it stays unread in the history, and the write path now returns 404 for that conversation. What to do, in order:
  1. Accept that steering is moot once the transcript ends. A pending note on a closed conversation is a record of intent, not a backlog to drain — do not re-send it.
  2. Recover the outcome, not the note. If the issue the whisper addressed still matters (the wrong price got quoted), handle it through the usual follow-up channel on the contact — a callback, a reply on the original thread, or your own ticket. The whisper surface is mid-conversation tooling, not an order queue.
  3. Tighten your timing. A whisper that missed the last turn teaches you one thing: send it at the first wrong sentence, not at the end of the paragraph you disagreed with.
The other end-state is friendlier: if the agent reads the note and goes quiet anyway, the badge flips to read — you know the instruction landed even when no new turn shows it.

Pending approvals

A Pending approvals strip appears above the transcript whenever the agent has paused on a sensitive tool call and is waiting for a human decision. It lists each paused call — the tool name, the arguments the agent proposed, and when it was requested — and the strip only disappears when there is nothing left to decide. Resolve each row from the same page: approve to let the call run, reject to block it (add a reason so the decision is documented). Approving re-queues the paused turn so the agent resumes and completes the action; rejecting tells the agent the call was refused so it can answer the customer without it. While the strip is up, the agent does not guess. It sits mid-turn on that conversation — it will not run the tool on its own, and it will not close the matter — which is exactly why the pile needs a human regularly. On a busy shift, clear approvals before whispers: an approval unblocks a conversation that is frozen; a whisper improves one that is still moving.

What “live” means — and where 404s come from

The list treats a conversation as live when its status is active or open (a voice call in progress counts too) and it saw activity within the last few minutes. The note endpoint is broader — it accepts active, open, and escalated, so you can still whisper to an agent on a conversation that has been handed to a human. What the statuses mean in practice:
  • active / open — the agent is answering; your notes apply on its next turn.
  • escalated — a human has the conversation; the agent stops replying until control is handed back. Whispers are still accepted so the note is waiting if the agent resumes.
  • closed — the conversation is over. Its id stops resolving on the write path: sending a note to it returns 404, exactly as the API does.
The detail page renders that 404 as a “Conversation not found — it may have ended” state instead of a retry loop, so a supervisor watching a conversation as it ends gets a clean explanation rather than an error flash.

Where the API complements the dashboard

The Human-in-the-loop oversight page documents the same actions from the API side — supervisor notes, tool approvals, hand-off — with request/response examples you can script. The Live tab is the day-to-day workstation for the same operations: open it during staffed hours, and fall back to the API when you are wiring oversight into your own tooling — an alerting hook on the pending-approvals queue, a bulk whisper from a runbook, or an audit export of decisions.

See also