Pipeline editor¶
Status: Current | Last reviewed: 2026-10-12
Expanded Preview also offers Telephony for dialing Genesys IVRs, selecting Amazon Connect entry flows, and following live routing through to a human agent. Connection, destination, and ANI defaults are remembered for your browser tab.
In maximized Preview, the phone scales to fit below the header with a little space beneath the frame. It stays slightly smaller than full size and adjusts when the window or header changes. Recording fits the phone to its capture area separately.
The pipeline editor is where you wire together the steps a voice agent takes on every turn: speech-to-text, language model, text-to-speech, plus tools and workflows that fire in between. You add stages on the canvas, connect them, and configure each one in the inspector.
View an agent without editing¶
Viewers can open Voice and Chat agents at any available version. The header shows View only, including when the selected version is a draft. Click a node or its eye icon to inspect Behavior and Properties. Text stays selectable, and Copy full prompt, subagent tabs, the hierarchy, expanded inspectors, capability details and advanced settings remain available.
Fields and choices show as read only. Adding, deleting, connecting or changing nodes, prompts, subagents, capabilities and routing settings is unavailable. You can still pan, zoom and change Canvas View options.
Use Preview in the header or right-hand panel to try the selected version. The Preview header identifies Draft or the published version number. Preview inputs affect that session only; they do not save changes to the agent. Saved tests opens the agent's existing test scenarios.
Screen layout¶
Non-maximized Preview shows Saved tests and the maximize control, with no header toggles. Maximize Preview to use Show AI Activity, Recording, Mock Caller, Telephony, and SMS (when available). Telephony is disabled while Mock Caller is on; turn Mock Caller off to test an IVR.
Maximize Preview and use the text-only Show AI Activity switch in its header to show the transcript, running action calls, connected systems, and expandable inputs and results beside the phone. The view is also available for chat and in Recording. See See the brain in Preview.
Opening an agent, changing Preview layout, and leaving a clean editor do not save a new draft or add a Change History entry. Autosave persists actual configuration or identity changes. While the collaboration room first connects, the toolbar can briefly show Checking save status…; a persistent connection failure still shows Save failing. History diffs include renames and description edits as well as runtime configuration changes.
For a voice agent with separate speech and reasoning models, select OpenAI GPT Live. Its voice node connects to a backend card through Background Thinking, with an automatic Results connection back. The backend card has a brain icon and Edit pencil; its connection is managed by the voice node. Edit voice behavior on the voice node and business prompts/model settings on the backend node. The backend card also shows tool and subagent counts; Client Delegation names this card Reasoning. See OpenAI GPT Live for backend configuration and use with payments, multimodal UI, and guided flows.
- Canvas (center): your pipeline as a graph on a dot-grid background. Cards are stages; lines show audio and text flow. The selected stage gets a teal highlight ring. Closing the inspector clears it.
- Inspector (left): configuration for the selected stage. It opens when you click a stage and shrinks the canvas instead of covering it. Use the chevron on its right edge to collapse it, or drag the edge to resize. Closing it returns the space to the canvas; select a node to reopen it.
- Preview (right): a live call or chat panel while you build. It starts collapsed; select the small Preview tab midway down the right edge to open it. Opening it shrinks the canvas so the zoom controls and minimap stay visible. Use the chevron on its left edge to close it, or drag the edge to resize. Preview has one compact header so the complete test phone fits more readily on a laptop screen. The full-screen icon replaces the canvas and inspector with the phone preview. If Preview is disabled, open Notifications in the header for the configuration/readiness issue; readiness rechecks automatically after you fix it. For chat agents, Start Chat appears inside the chat test panel before the session starts. Template variables appear below the chat and include editable values referenced by prompts, declared session variables, and caller fields such as
{{ani}}and{{dnis}}when applicable. In a multimodal voice Preview, an explicitanialso becomes the simulated handset's caller number; the demo fallback number is used only when ANI is blank. Runtime-only values such as{{conversationId}},{{agentId}},{{tenantId}}, and{{currentDateTime}}are available to prompts but are not shown as editable Preview inputs. - Assistant (lower right): click the round chat icon to ask about the open agent, debug a recent conversation, or request an edit. Assistant opens as a floating chat instead of replacing Preview. Use the minus icon in its header to collapse it; a response that is still streaming continues while the chat is collapsed.
- Toolbar: the agent name sits above its friendly agent type or sub-agent count, and version. Click an editable draft's name to rename it; Enter or clicking away keeps the name, while Escape cancels. Test opens the Agent Test dialog with Overview, Run Tests, and Results. Overview links to the full performance workspace. Saved-test selection survives switching tabs, and draft runs wait for pending edits to save. The full-width white header shows the text-only Agent Canvas title. More contains Export and, when editable, Delete agent; deletion still requires confirmation. Share is hidden while private-agent sharing is deferred. Save status appears before the action buttons: renaming immediately marks pending work; a spinner becomes Saved after acknowledgement. Checking save status… and Save failing identify unknown or failed saves. Click the saving or error chip to retry saving now.
- Notifications: the header bell collects editor errors, validation warnings, readiness checks, Preview connection errors and save failures. Its count reflects current notices. In full-screen Preview the bell appears in the Preview header. Each issue has a short label and next step; View details expands the affected setting and useful diagnostics. Blocking restrictions stay visible. Resolved checks clear automatically; action messages can be dismissed. See Agent editor notifications.
- Activity: a centered modal with Change History and Conversation History tabs, using the same plain underline styling as Settings. Change History shows edits and publications across this agent's drafts and published versions, labelled per entry; expand an entry for its change details. Conversation History shows seven conversations per page across versions and draft tests, with version labels. Version navigation stays in the canvas header. Select a row to read the transcript and play an available recording. Back to conversations restores the same page and selected row. Filters and duplicate section headings are omitted in this modal.
- Settings: edit identity-level Tags with Save tags, independently of draft autosave. Tags apply across all versions and are editable by authorized authors even while viewing a published version. Tabs group Identity & Branding, Conversation Controls, Media & Recording, Routing Rules, and Compliance & Security. Only sections applicable to this agent appear; Connections and Cost Estimates are additional sections when available. The selected tab has a teal underline; scroll the tab row horizontally on phones. Draft configuration saves automatically; Done closes the dialog. Routing, connections and cost assumptions retain their own save controls. Published configuration is read only. Under Routing Rules, Traffic Distribution manages published-version weights and Resilience manages fallback and health-check behavior. Identity & Branding shows the stable Agent ID without a version suffix. The Variants section is hidden.
Clicking empty canvas closes the node inspector; selecting a node opens it again.
The canvas re-centers itself when the visible area changes: opening or closing the inspector or Preview, or resizing the window. The pipeline stays centered in the space you can see.
Use the canvas zoom strip to Zoom out, read the current zoom percentage, Zoom in, or Fit view to show the complete pipeline.
For voice agents, the canvas additionally shows two flows: incoming (caller → agent) and outgoing (agent → caller). Most agents only need to edit incoming; outgoing is filled in for you. The Input and Output blocks use neutral backgrounds; their colors do not indicate success or failure. They have pencil icons that open their lifecycle workflow settings. On speech agents, the Audio Input block also holds voice branching behavior because it controls how parallel voice branches take turns from the caller's input.
Line colors show data flow. Each connecting line uses the color of the data moving along it: green for audio, purple for transcripts, blue for text. A line shows everything passing through at that point, not only what the previous stage produced. Data keeps flowing until a stage consumes it. If you turn Enable Voice off on a speech-to-speech stage, green stops at that stage and reappears later if you add a Text-to-Speech stage. An unrelated or incomplete stage in the middle does not change a line's color because that stage only affects the data types it handles. The + buttons keep the same line color before and after the button.
Input blocks use a pale green fill and Output blocks a pale red fill. Service stages use their category color for the border and a matching halo when selected. Behavior summaries appear in a separate strip at the bottom of each stage card.
Canvas View¶
The Canvas View control (top-right of the canvas) offers these view options:
- Structural: hide the Start / End blocks so only your service stages remain. While hidden, the + add buttons on the canvas are tucked away too. You can still add sub-agents because those live inside the node. A "click to reveal" pill brings the structural blocks back.
- Mini Map: immediately below Structural, choose Hidden to reclaim the lower-right canvas area or Visible to restore the overview.
- Sub-Agents: for orchestrator-style agents, collapse the sub-agent box inside each node down to a small "N sub-agents hidden · click to reveal" pill.
Press Escape while working in Canvas View to close its options and return focus to the trigger. The selected Hidden/Visible option is also announced to assistive technology.
These view preferences do not change your agent's configuration, and teammates do not inherit them. Your browser remembers them.
Keyboard Undo/Redo remains available for canvas actions such as adding or removing stages and branches, changing edge frame types, wiring lane connections, and moving nodes.
Variables appear inline in prompts as {{name}} references. Use the prompt's variable controls to inspect or configure them; Canvas View no longer contains a separate variable list. Declared template variables, lifecycle workflow values, caller fields and runtime values retain their existing meanings.
The agent Share button is currently hidden while private-agent sharing is deferred. Existing access rules still apply.
Expanded prompt workspace¶
Select a stage and choose Expand to full screen. Behavior comes before Properties; an incomplete stage still opens Properties when required inputs need attention. Use the node selector to move between supported selections and Canvas to return. The live preview can stay open alongside your work.
The Prompt library lists your saved snippets and full templates. Search or filter by type, preview the instructions, then choose Insert. Insertion uses the active instruction prompt's cursor (or the end if it has not been focused), and does not modify the greeting. Main and supported smart-subagent instructions use the same library. Guided step lists keep their existing authoring controls.
On phones the library starts collapsed. Use Hide prompt library to reclaim the column and Show prompt library to bring it back. Properties uses the full editing area. A failed library request shows Try again and leaves your prompt intact. Published prompts cannot be changed through the library.
Inserted content is a copy, including any variable references. Configure their values and sources in Variables; insertion does not import defaults or change a variable's binding. Later edits to the saved library item do not change copies already inserted into an agent. Draft edits use the existing automatic save path.
Adding a stage¶
Click the + below the last stage, or the + on the line between two stages. The final + sits on the line to Output; it is an add control, not a pipeline stage. The Add to flow picker opens on the left, in place of the inspector, with your options:
- Add a stage: pick the kind of stage you want: Add Assistant Agent, Add Speech-to-Speech, Add Speech-to-Text, Add Text-to-Speech, Add Large Language Model, Add Translation, and so on. The stage is created with that type selected, so the inspector opens ready for a provider and model. The picker shows only types that fit your agent. A chat agent will not offer speech stages, and OCR/document extraction belongs in workflows. Use the search box to filter the list.
- Branch on ...: split the flow, for example to tap transcripts into a separate lane. Branch options appear when the upstream stage produces something branchable. Chat agents use text branches; they do not offer audio branches.
Use the same picker to link sub-agents. Newly added stages open in the inspector. Closing the picker also closes the inspector, so the canvas returns to the same state as closing the node editor.
Working with a branch¶
When you add a branch, an empty branch card appears on the canvas and the editor selects it, with the Add to flow panel already open so you can fill it in. Audio/text branches sit beside the main lane; transcript branches sit to its right in the transcript lane. While empty, the card behaves like any node: click it (or its pencil icon) to reopen the panel, and use its trashcan to remove the branch. From the panel you can:
- Add a stage or Branch on ...: same options as anywhere else, to build out the branch.
- Connect to: instead of adding a stage, wire the branch into an existing node downstream. The panel lists the nodes it can connect to, including the agent's output node (Audio Output for voice agents or Text Output for chat agents). Pick one and the branch joins it.
Once you add a stage to the branch, your stage replaces the empty card, and the branch tail goes back to a normal + button. That + still offers Connect to. If the branch is already connected to a node, it shows Reconnect to (pick a different node) and Disconnect, so you can re-point the branch without rebuilding it. Branch editing stays in the side panel rather than becoming buttons on the canvas.
Junction markers¶
The canvas shows a small diamond in the lane's color where the flow splits, where branches rejoin, and above the Output block. These are visual markers for the split/join point; they aren't clickable and you don't add anything to them. They keep the + add buttons tidy and the lanes evenly spaced: stages line up row-by-row across lanes, and a shorter lane's trailing + is centered in its leftover space rather than crowding under the last stage.
Configuring a stage¶
Changing a stage’s provider or service keeps its sub-agents and their instructions, guided steps, and routing rules. A provider change resets provider-specific settings, so check the model, voice, and integration before testing.
The behavior counts on a stage card summarize its configuration. Select a count, the stage or its pencil icon to edit.
The inspector opens on Properties while required properties are still missing, and jumps straight to Behavior once they're set — so a configured stage lands on its prompt. Conversational stages have a Behavior tab for prompts, stage tools, sub-agents, and node capabilities:
- Properties: stage name and description, Agent Identity (a display name and accent colour shown on this agent's chat replies — set it on a single agent or on each branch of a multi-agent chat), service/provider/model, voice, integration, and advanced options. The canvas card shows the stage name and optional description; provider, service, model, and type details live in the inspector. New stages default the name to the provider plus service, while the generated stage id stays stable unless you edit the id directly in raw config. Add an optional description to show text on the stage card and make the pipeline easier to scan.
- Behavior: the system prompt editor (for LLM stages), stage tools, sub-agents, node capabilities, and variables. Capabilities → Multimodal UI is the single control for enabling visual A2UI on a stage; provider Advanced sections do not add a second multimodal toggle. Its catalog chooser stays collapsed until you open it and summarizes selected catalogs as pills. Expand it to select catalogs and choose a version policy; uncheck one there or use the × on a selected-catalog pill to remove it. Catalog URLs and tenant/shared badges are not shown here. You don't need to select Standard Primitives — the basic building blocks (text, buttons, cards, layout, input fields) are always loaded for you, so picking only an industry catalog is fine. Type
@or{{to see available variables and tools, or\to browse and insert a prompt template at your cursor. The list is grouped into sections — Variables, Tools, Sub-agents, and, when Multimodal UI is enabled on the stage, one section per enabled catalog listing that catalog's UI components. Keep typing to filter the list, then press Tab or click to insert. Picking a catalog component inserts a{{COMPONENT:…}}reference; at runtime the agent receives the exact instructions for displaying that component (the render call and its properties), so you can point the prompt at a specific component by name without writing the call yourself. Click that component pill to map its submitted answers into variables; this mapping belongs to the component, so there is no unrelated Map answers to variables block in the Multimodal capability card. Variables referenced in sub-agent prompts share the same agent-level scope, so they appear in the same dropdowns and in Preview's editable template-variable inputs when they are user-settable.
Runtime variables in the prompt dropdown include caller values ({{ani}}, {{dnis}}) and system values ({{conversationId}}, {{agentId}}, {{tenantId}}, {{currentDateTime}}). System values are populated by TrueServe at runtime. You can insert them in prompts and use them in tool mappings, but you do not type test values for them in Preview.
Choose Tool → Add a tool… from the @ or {{ menu to open the tool
library. The prompt menu closes while you select or create an inline tool.
Saving inserts its reference at the original cursor position.
At the top of the prompt box, a slim header offers Copy full prompt — it copies the complete prompt the model actually receives: your text with variables filled in and tool/component references resolved, plus every auto-injected block below. Useful for reviewing the real prompt in another tool or sharing it. If anything couldn't be resolved (for example a reference to a deleted tool), the copy still works and a warning tells you what stayed literal.
At the bottom of the prompt box you'll see a row of auto-injected chips — full transparency into everything the platform adds to your prompt beyond what you wrote, shown where it actually goes (these blocks are appended after your text): the current date and time (so the agent never guesses the date), your tenant's global instructions, and the guidance each enabled capability injects (Payments, Customer Authentication, External Consult, End Session). Click a capability chip to read the exact text and see the tools it contributes. Those tools are available in @ and {{ prompt menus but are grouped under the capability here rather than repeated as removable items in Actions. On Main and each subagent tab, the expanded capability has an Include this guidance in… switch for that prompt only. The text itself is shared: Edit shared text and Remove everywhere affect Main and all subagents. A chip hidden only on the current tab is dashed and says hidden here; a globally removed chip is struck through, and an edited one turns amber. Published versions keep this same authored view, while Copy full prompt includes only the guidance enabled for the open prompt tab. One caution: the Payments block contains the rules that keep card numbers away from the AI, so weakening or removing it shows a warning and is a PCI compliance risk. Everything ships with its defaults unless you change it here.
The Tools dropdown in Behavior lets you select shared tools or choose Create Inline Python Tool / Create Inline API Tool for a one-off tool that belongs only to this agent stage. It also lists callable built-in tools for that node. After you select a tool, expand its row to configure Variable Mapping. Each enabled operation has its own expandable section with only that operation's input variables. Global mappings appear as read-only defaults; node-level mappings you add here take precedence. Variable mappings use the same syntax as prompts, such as {{conversationId}} or {{ani}}. For workflow tools, Definition opens the workflow directly with the Start node's Inputs section highlighted.
Every entry in Capabilities — Multimodal UI, Video input, Message Injection, Human Supervision, External Consult, Customer Authentication, Payments — is a collapsible card. Each one starts collapsed so the whole section fits on screen; click the card's title (or its chevron) to expand its settings, and switching a capability on expands it for you. The switch itself is separate from the fold, so turning a capability off never loses your place. Whether a card is open is remembered in your own browser per capability, so it is a personal preference and not something your teammates see when they open the same agent.
Message Injection is a receiving-side toggle in Capabilities. Enable it on the node that should accept externally injected instructions; its generated node ID becomes the injection target. Its priority, response, and speech-wait defaults apply to both voice and chat conversations. Only one node can own this capability.
Human Supervision is a toggle in Capabilities for letting the agent bring a human supervisor into the loop. Turn it on and set four things: Request support with — choose whether the agent escalates by running a Tool or a Workflow, then pick which one (when you pick a Workflow, it appears as a compact row like a selected tool — use the Definition link to open the workflow in a new tab, and the pop-out or chevron to open Map workflow inputs, where you bind each of that workflow's declared inputs the same way a tool call maps its arguments — type a fixed value, or use the link button beside a field to pick a runtime variable such as {{conversationId}}, {{ani}}, or {{dnis}}); a Supervisor chat agent (a chat agent that engages the supervisor); a Stream transcripts to the chat agent switch; and Transcript-handling guidance — optional text telling the chat agent how to treat the incoming transcript. Leave it blank and a platform default applies: the transcript arrives as live-call context and the chat agent stays silent unless something important happens or the supervisor asks; anything you type here replaces that default. Only one node can own this capability, and because the relay streams a live call, it is offered on voice agents — a chat agent's Capabilities library doesn't list it. The agent can now call the tool or workflow you attach here: it appears to the model as a callable function and the agent runs it when it decides a human should be brought in (for a workflow, your input mappings are passed in as its arguments). The attached tool or workflow also appears in the prompt editor's Tools dropdown and its Run an action picker, so you can reference it at the exact point in your prompt where the escalation belongs — a workflow is listed under its own name but inserts its runtime token, e.g. picking Request Salesforce Approval inserts {{TOOL:request_salesforce_approval}}, and you can write Call {{TOOL:request_salesforce_approval}} before promising the customer a fee reversal. If you set a Supervisor chat agent and leave Stream transcripts to the chat agent on, then when the agent escalates it also opens a chat conversation running that chat agent and streams the live call into it — both the caller's and the agent's turns arrive as they are spoken, prefixed [Caller] / [Agent], so a human supervisor joins with full context. The transcript reaches the chat agent as live-call context, and by default it stays silent unless something important happens; your Transcript-handling guidance is delivered once as the chat agent's opening instruction and overrides that default. Streaming stops automatically when the call ends. On the supervisor chat agent itself, the Capabilities section shows the relationship from the other side: a read-only Supervisor chat agent entry saying "This agent serves as the supervisor chat agent for N agent(s)", listing each voice agent that names it with a link — it appears automatically and has no switch, because the setting lives on the voice agents that reference it.
Inject Message to Conversation is the corresponding sender in Tools. It exposes one operation that works with live voice and chat conversations. Its settings contain only the destination conversation ID binding; bind a runtime variable such as {{relatedConversationId}}, enter a literal conversation UUID, or leave it blank so the agent supplies the destination at call time. IVR Navigation remains a configurable, single-owner built-in tool.
External Consult (on voice agents) is not in the Tools list — it's a toggle in Capabilities, next to Multimodal UI. Turn it on to hand the live call to a human specialist. The editor asks for the Provider, the Target DNIS (a specific number, or "let the agent choose the target at call time"), an Outbound Agent (a separate voice agent that dials out and briefs the human — only agents with the Transfer Agent capability appear here), a Place caller on hold during consult toggle, and a Timeout (default 180 seconds). You can reuse a predefined profile, and the Advanced section holds the Consult prompt, IVR goal prompt, routing rule, and post-merge behavior. What number gets dialed depends on your telephony platform. On Genesys it is the Routing Number configured on the integration's External Consults section (the per-destination number rides the SIP headers). On Amazon Connect there is no routing number and no External Consults switch: TrueServe asks Connect to dial the target number directly using the integration's Outbound Contact Flow ID and Outbound Source Phone Number (or Outbound Queue ID), and the answered call comes back to TrueServe over your Chime SDK Voice Connector — so that flow must transfer it back, and a missing field is named in the message the agent gives the caller. See Adding an integration. If you have no outbound agent yet, use Create External Consult agent to open the New Agent wizard preset to the External Consult Agent template in a new tab. Transfer Agent is the other half: add it (from the Tools picker) to a voice agent to make that agent the one that gets dialed during an external consult — it automatically receives the tools to brief the human and signal readiness to merge, so it shows up in other agents' External Consult Outbound Agent pickers. Its settings can also select a fixed translation pipeline that starts only after the two humans merge, with either an always-on or prompt-driven decision and optional runtime language detection. See Translation after an external consult.
You can test an untranslated external consult straight from the Preview/Studio test call: your telephony platform dials the specialist and mixes that call into your browser session, so hold, briefing and merge behave as they do on a real call (you'll hear a soft repeating tone while on hold). Post-merge translation needs the SIP/ARI media topology and is intentionally refused in direct browser Preview before either AI agent is removed; test that final translated handoff on a real SIP/Genesys or Amazon Connect call. The Provider select above is what a Preview call uses to choose the platform — a real call is identified by the call itself, a browser call has nothing to be identified from — so a Connect tenant sets it to Amazon Connect and rehearses the Connect dial-out from the panel. The outbound agent runs its draft on a Preview consult, so one you just created from the template is rehearsable before you publish it. Genesys still needs External Consults enabled with a Routing Number on the integration, or the agent will say it can't reach a specialist. Placing the call over a phone route instead (/emulator through a configured SIP integration, dialing the agent's numeric id; drafts are reachable) still works and is the way to check real codec negotiation, but a SIP call carries no simulated Messages tray. See Testing with the emulator.
With External Consult enabled, its callable operations also appear in the prompt editor's Tools dropdown — start_consult, send_to_consult, merge_calls, cancel_consult — so you can tell the agent exactly when to use each one, e.g. Call {{TOOL:start_consult}} once the customer agrees to speak with a specialist. A Transfer Agent stage offers its own three: send_to_origin, request_merge, abort_consult.
When an LLM stage has Structured Output enabled, the System Prompt Override in Properties uses the same prompt editor as the main Behavior prompt, including {{ merge fields and @ tool suggestions. If you leave the override empty, the structured suggestion processor uses the stage's normal prompt. Use this for simple suggestion extraction types such as response suggestions, article suggestions, FAQ answers, and entity extraction.
For Smart Reply, add a Processor stage and choose Smart Reply. Its Properties form has Assessment, Knowledge Source, and Suggestions sections. Assessment selects the provider and model that detect actionable customer questions and produce the {{query}} lookup text. Knowledge Source lets you pick one tool and map {{query}} into that tool's argument. Suggestions selects the provider and model that turn the tool result into cited replies; its prompt can merge {{knowledge}}, the raw tool result. Cited Smart Replies appear in the AI Suggestions panel with citation hover cards when the tool returns source metadata.
AWS Bedrock OpenAI and Azure OpenAI are additive choices in LLM stages and in the model selectors for Smart Reply, Form Filling, Transcript Enhancement, and LLM Translation. AWS exposes GPT-OSS 120B/20B for ordinary text and GPT-5.6 Luna/Terra/Sol for text and vision. Azure exposes the deployment names available on the selected Microsoft integration; the supported authored defaults are GPT-5.5 and GPT-5.6 Terra. Azure also appears as a first-class provider for Realtime speech-to-speech, GPT Live Transcribe, and GPT-4o Mini TTS. Direct OpenAI remains available, and Responses API features remain Direct OpenAI-only.
Repeated response messages¶
The Reasoning setting for OpenAI → Responses API includes None (supported models). Choose it only for a model that supports disabling reasoning, and qualify the resulting responses before publishing.
For OpenAI → Responses API, the advanced option Deliver each response message once removes adjacent identical messages returned in one response. It also keeps distinct messages separated so sentence guardrails can check them individually. It defaults off and does not remove repeated words within a message or answers repeated on later turns. Use a Keep silent guard for authored silence instructions.
Need more room? Click the expand icon in the inspector header to open the full-screen editor. A slim toolbar runs across the top with ‹ Canvas, a Node dropdown, and the Properties / Behavior tabs. The node editor and live preview take the rest of the screen.
The Node dropdown lists every stage in your pipeline and its sub-agents, indented under their parent so you can see the hierarchy (sub-agents can nest several levels deep). Pick any one to jump straight to it without leaving full-screen. Sub-agents open in their own form (name, prompt, tools, and any nested sub-agents), so the Properties / Behavior tabs only appear for stages.
For demo capture, open the Preview full-screen view and turn on Recording. The Recording widget beside the phone contains Test & Record, recording controls and downloads; the Preview header stays the same. Preview and Recording use the same iPhone frame and call controls. Enable Show AI Activity to include the transcript and action panel beside the phone in the recording; otherwise only the phone is captured. Keep the recording area visible and choose the current tab when prompted. Download MP4 saves an MP4, converting it on the server when needed. Collapsing Preview clears all header switches and stops any active recording, Mock Caller or Telephony test. Saved caller and telephony settings remain available. Saved tests appears only in the sidebar. By default, both multimodal links and Customer Authentication messages arrive in the simulated Messages app; authentication ceremonies still open in the outer browser so they can use the device authenticator.
Some deployments also expose SMS in the full-screen Preview header. Fill in Template Variables → ANI before enabling it. The call audio still runs through the phone emulator, but all capability texts—including multimodal and Customer Authentication messages—go through the configured real SMS integration to that ANI. With SMS off, they return to the simulated Messages app.
When a stage enables Multimodal SMS, select an active integration that provides the SMS capability (AWS messaging profiles are included). SMS Origination Identity lists active SMS-capable phone numbers and active pools from that integration. You can choose one, use the integration default, or enter a custom sender identity if the live list is unavailable.
- Service: pick a provider, service, and model. Only supported agent providers appear here. Model lists prefer live provider metadata when the integration supports it, then show the newest stable models first. Preview, latest-alias, experimental, legacy, and end-of-life models remain selectable but sit lower in the list and are not auto-selected while a stable model is available. Azure OpenAI deployments stay deployment-name sorted unless Azure exposes recency metadata. If the model you want is missing, add the integration first and confirm that the provider returns that model for the integration's project, account, region, or deployment.
- Integration Profile: when a stage, template, or service has no saved profile yet, TrueServe auto-selects the tenant's default active profile for the required provider capability. If there is no default but exactly one active matching profile is available, that single profile is selected. When multiple active profiles exist and none is marked default, the field stays blank so authors choose deliberately.
- Parameters: provider-specific options, such as language code, voice ID, and temperature. Defaults are sane; tweak only what you need.
- Capabilities → Turn control: configure interruption, turn detection and voice isolation in the shared collapsible capability card. Turn control is always available; individual controls determine its behavior. Add Idle detection through Add capability to configure idle timeout and maximum prompts in its own card. Krisp VIVA voice isolation is on by default for every voice agent and cleans the caller audio before speech detection and transcription. Choose Off only when the microphone is intentionally far from the speaker; Krisp Voice Isolation is designed for near-field capture. Auto keeps the best turn behavior for the service: provider-native handling for speech-to-speech services and local Pipecat behavior for cascaded speech and chat. Idle prompts work with cascaded/chat stages, OpenAI Realtime, AWS Nova Sonic, Google ADK, Google GECX, ElevenLabs Agent, and Deepgram Voice Agent. Maven Voice, NVIDIA PersonaPlex, and Salesforce Agentforce Voice do not currently expose a live text/message control, so TrueServe disables idle prompting for those services rather than ending a silent call after unseen retries. Krisp VAD, turn detection, and interruption prediction are separate opt-ins—choosing one does not enable the others. The packaged interruption-prediction model is English-only. Leave Krisp VIVA integration blank to use the platform-managed license and packaged models; select a profile only for an intentional override. OpenAI Realtime stages show their native Server VAD / Semantic VAD settings here, including threshold, padding, silence, and eagerness options. The idle timer measures silence after the floor comes back to the caller: it never runs while the agent is speaking, an idle check that finds either side talking is dropped rather than spoken over, and each completed agent turn — including a long one waiting on a tool — clears the retry count, so Prompts before ending counts only prompts the caller actually ignored. Timing follows what the caller is hearing, not how fast the model produced it, so a long speech-to-speech answer plays out in full and the caller still gets the whole idle timeout to reply. Showing the caller a visual card also counts as activity while they read it. The timer also holds while the agent owes the caller a reply — from the moment the caller finishes a sentence until the answer starts, which is what stops a prompt landing in the gap before the reply — and it is paused entirely while the agent is calling a tool, so a slow lookup never produces “are you still there?” over the top of it.
For translation flows, add a Speech-to-Speech Translation stage, then choose Krisp → Voice Translation to use Krisp's speech-to-speech service. Source and target languages come from Krisp's live BCP-47 language list, with a built-in fallback if discovery is temporarily unavailable. Krisp Voice Translation has no Behavior tab; selecting it opens Properties directly. Properties shows expanded Languages, Voice, Vocabulary and Glossary, Audio Processing, and Output Control groups. These include male/female output voice, vocabulary terms, source-to-target dictionary pairs, server-side Background Voice Cancellation, and independent translated-audio, source-transcript, and translated-text outputs. Configure the incoming and outgoing stages separately when both call directions need translation; each direction receives its own short-lived Krisp session.
For direct-config speech-to-speech stages such as OpenAI Realtime, Google ADK, AWS Nova Sonic, and Deepgram Voice Agent, Background Audio appears below the output-audio control in Properties. Turn it on to choose the background audio type and mix level. Managed remote-agent stages such as Google GECX, Salesforce Agentforce Voice, and ElevenLabs Agent do not show this control because their prompt and audio behavior are owned in the provider console.
For AWS Nova Sonic speech-to-speech stages, Enable Voice controls whether Nova emits native audio. Turning it off keeps Nova's text response flowing so a downstream Text-to-Speech stage can speak in another voice; without downstream TTS, the agent can answer silently on voice calls. The editor shows this as a warning instead of blocking save.
For non-realtime OpenAI LLM stages, use Responses API for new work. It supports OpenAI-hosted tools such as Web Search, File Search, Code Interpreter, and Image Generation alongside your configured TrueServe tools. Its Output Token Cap is blank by default; use it only when you intentionally want a hard limit. Enable Reasoning Summary when you want the tester/debug surface to show OpenAI's visible reasoning summary. This is a summary from the provider, not raw hidden chain-of-thought. Streaming Completions remains available for older agents and should be left in place until you choose to migrate that stage.
For Salesforce Agentforce Voice stages, choose Salesforce as the provider and Agentforce Voice as the service. Then select the Salesforce integration and pick the Agentforce agent from the main Agentforce Agent dropdown in Properties. The dropdown is loaded from the connected Salesforce org; if Salesforce's official discovery endpoint is unavailable, it can still show active Agentforce candidates with voice-linkage hints. Agentforce prompts, actions, and channels are managed in Salesforce, so the Behavior tab does not expose a local TrueServe prompt.
Agentforce Voice also has an optional End session analysis section in Properties. Turn it on when the Salesforce agent cannot call a TrueServe end_session tool directly but you still need TrueServe to detect a completed call, populate output variables, and close the session. Choose the analyzer LLM provider, service, model, and integration using the same LLM options available for normal LLM stages. The analyzer returns GECX-style end-session metadata: reason, session_escalated, and custom output variables under params.
Google GECX voice and text stages have no Behavior tab — everything lives in Properties, and GECX looks like any other service (there's no "Google GECX" card anymore). Pick a Region, then a GECX Agent and a Deployment from dropdowns populated from your Google integration (choosing an agent auto-selects its API deployment). The Project comes from the integration, so there are no Project or App-version fields to fill in. Below that you set Tools, Session variables, and the GECX Tool dispatch choices. To show visual UI, turn on Capabilities → Multimodal UI and pick your catalogs the normal way; GECX then shows an OpenAPI tool URL per catalog to add to your GECX agent as an API tool (the API tool is more reliable than MCP for multimodal). To hand off to a human, turn on Capabilities → External Consult: pick a consult profile and copy the consult MCP URL to add in GECX. Google-side prompts and tools are still edited in Google's console.
For Maven AGI stages, choose Maven AGI as the provider. Use Chat Agent for text/chat pipelines and Voice Agent for speech-to-speech pipelines. After selecting the Maven integration profile, pick the Maven agent from the Maven AGI Agent dropdown; TrueServe connects to that agent at runtime and renders Maven forms, charts, objects, OAuth buttons, and follow-up suggestions through the normal visual response surface.
For Assistant Agent preview chat stages, choose Google / Antigravity, OpenAI / Codex, or Anthropic / Claude Code. Claude Code's Integration Profile picker accepts native Anthropic profiles, Amazon profiles for Bedrock, and Google profiles for Vertex AI when they have the matching LLM or Assistant Agent capability; the option label shows the cloud when multiple credential families are available. Write the agent's instructions in the Behavior tab's Prompt editor — the same field every other stage uses — and they are sent to the underlying CLI as its system instruction. The Behavior tab also shows Skills instead of the normal primary tool picker. Select reusable Library Skills, create Inline Skills, attach shared governed tools, or create skill-local inline Python/API tools inside each skill. See Assistant Agent skills for the full workflow. The runner connection, sandbox policy, and raw skills JSON are managed automatically and are not shown as editable fields. Model Override (under Advanced) is an optional dropdown whose choices match the selected runtime — Claude Code lists Claude models, Codex lists Codex models — and defaults to Installed default (the CLI's own default). For inline skill Resources, the Content box uses the same rich editor as prompts, with markdown preview for markdown resources.
Assistant Agent local file/search/write/command tools are separate from governed TrueServe tools and only run inside the runner's ephemeral workspace. Antigravity command execution asks the user for approval and denies commands when no interactive approval surface is attached. Codex and Claude Code default to a deny-shell policy in this preview unless runtime policy explicitly enables workspace writes. Temporary workspace paths are shown as "the workspace" in reasoning, response text, tool traces, and errors. Reasoning, local tool calls, command approvals, unrecoverable error events, and non-empty workspace artifact summaries appear in the chat trace when the surface has Show reasoning enabled. Assistant Agent subagents are disabled in the preview.
If you have not enabled sandbox tools, selected skills with business/data tools, or added resource files, Assistant Agent stages answer from general knowledge instead of trying to inspect the temporary workspace or showing generic product onboarding. For data-specific trend analysis, select or create a skill that attaches the governed data tool or resource files the agent should use. The preview defaults to minimal reasoning for these blank-context turns.
Note: Editing a stage's config does not rebuild the canvas. You can keep typing while the inspector saves in the background.
Voice and service properties¶
Model, Enable Voice, and Voice controls use compact labels without explanatory text below each field. Voice previews remain available where the provider supports them. Under Background Audio, use Audio Type to select the recording and the Volume slider to choose 0–100%.
Provider turn detection settings, including Nova Sonic's endpointing sensitivity, are under Behavior → Turn Control, alongside the other turn settings.
Auxiliary Services¶
Open Properties → Auxiliary Services to configure the private prompt voice (TTS), guided-flow speech to text (STT), guided matcher model, and logic checker model. Each expandable section uses the same provider, service, integration, model, voice, preview, and service settings controls as its ordinary node. The SLM choices are Bedrock, OpenAI, and Gemini completions.
The controls show the effective defaults and Default selected. Change only the settings you need; Use defaults removes that service's overrides. Integration choices are limited to enabled platform integrations and integrations belonging to the current tenant.
Expand a matcher or checker prompt to view and override its instructions. Use default prompt restores the inherited instructions. Choice lists, caller input, evidence, and the required JSON format are still supplied by the runtime. AI judge criteria remain on each condition in Behavior. Published versions are read-only.
Session variables (Google GECX, Salesforce Agentforce, ElevenLabs Agent, Maven AGI)¶
Stages backed by systems that manage their own agents can pass variables into that system when each conversation starts. This applies to Google GECX, Salesforce Agentforce Voice, Maven AGI Chat / Voice, and the ElevenLabs Agent. Open the stage's Properties tab and use Session variables (called Dynamic variables on ElevenLabs). The remote agent can reference these values and forward them to its own tools. For GECX, they populate $context.variables, which is how templated MCP headers resolve. In Salesforce, you must set up the variables as API-settable Agentforce variables.
Add a row for each variable:
- Variable name: the name the remote agent expects (e.g.
customer_tier,account_id). - Default: an optional fallback value. Leave it blank when the value should normally come from Preview, a SIP/API session header, or another external session setup path.
- Binding: a live value pulled from the conversation at session start. Pick from the list (or type a name): Caller Number (ANI), Called Number (DNIS), Conversation ID, Agent ID, Tenant ID, Current Date/Time, or the name of any variable set on the session at runtime.
Unbound rows are treated as declared session inputs. As soon as you name one, it appears under Template Variables in the Preview panel so test calls can supply a value. External sessions can pass the same names through the session variables API or X-Template-Variables; those runtime values override the configured default. For example, map caller_number → binding Caller Number (ANI) when it should always use the real caller's number, or add Caller_Name with no default when the caller name should be supplied by the test panel or an upstream system. Defaults and bindings can be mixed freely across rows.
For Salesforce Agentforce, every variable you configure is sent as a Salesforce context variable. For example, Caller_Name becomes $Context.Caller_Name, and ani / dnis become $Context.ANI / $Context.DNIS. If the Salesforce prompt or topic references {!$Context.Caller_Name}, create or enable the corresponding API-settable Agentforce context variable in Salesforce, then add Caller_Name in TrueServe and either leave it unbound for runtime input, provide a default, or bind it to a known runtime value. TrueServe also sends conversation_id and orchestrator_session_id for correlation; the Salesforce Agent API session's external session key uses the same TrueServe conversation id.
Sub-agents (orchestration)¶
An agent can route to specialized sub-agents. When a stage has sub-agents enabled, the canvas grows a dashed sub-agent box beneath that node that expands as you add to it. Each sub-agent shows as a card you can click to edit. Add one with + Add subagent in that box, or with Add Agent in the node editor. Either opens the Link Sub-Agent picker and then the same sidebar editor; the edit button in the node's sub-agent list opens that sidebar too.
The picker offers Start from scratch and saved subagent templates only. It does not list full agents or normal agent templates. Scratch sub-agents and template-based sub-agents open in the same subagent form, including the shared prompt variable dropdown, tool picker, tool binding configuration, and inline Python tool editor used by normal LLM stages.
Sub-agents can themselves have sub-agents: a nested sub-agent gets its own dashed box, tinted a different color so you can see the levels at a glance. For realtime and speech-to-speech agents, every named sub-agent is automatically available as a transfer destination from the main agent and every other sub-agent, including enabled nested sub-agents. The active agent receives a Transfer Agents tool listing the main agent and all named peers except itself. Use Can transfer to in any sub-agent sidebar only to opt out: uncheck a destination to prevent that route. If the selector shows only Main agent, name another sub-agent first; unnamed entries cannot be runtime destinations. You can keep adding sub-agents even when Structural is hidden. The Canvas View Sub-Agents toggle collapses every sub-agent box to a small pill when you want a cleaner view.
Validation¶
The editor runs a strict validation pass on every change:
- Required fields must be filled.
- Service-to-service compatibility must hold (you can't pipe a Deepgram-formatted transcript into an OpenAI Realtime endpoint, etc.).
- The pipeline must terminate. Every input has to reach an output.
Errors show up as red dots on the offending stage, with a tooltip explaining what's wrong. The agent cannot be tested or published until validation is clean.
Warnings are informational and do not block testing or publishing. For voice agents, the editor warns when a design can produce overlapping speech, such as a Speech-to-Speech stage that still has voice enabled before a Text-to-Speech stage, multiple Text-to-Speech stages in one branch, or multiple audio-producing branches that can run at the same time. Overlap is allowed when you intend it. If you only want the downstream Text-to-Speech voice, turn off Enable Voice on the Speech-to-Speech stage.
For an ElevenLabs Text-to-Speech stage, choose the service that matches the model family. WebSocket API is the low-latency choice for Flash, Turbo, and Multilingual v2. HTTP Streaming accepts complete text before synthesis. Text to Dialogue streams generated text into Eleven v3 and supports v3's expressive cues such as [whispers], [laughs], and conversational pacing. Text to Dialogue requires a v3 model and PCM output; leave Aggregate Sentences off for the earliest audio, or turn it on when complete-sentence prosody matters more than first-audio latency.
Common pipelines¶
These pipeline shapes cover most voice agents:
| Shape | When to use |
|---|---|
| Deepgram STT → OpenAI LLM → ElevenLabs TTS | Cheapest, lowest latency. Works for most retail / support flows. |
| OpenAI Realtime (single stage) | Lowest latency for free-form conversation. Pricier per minute. |
| Google GECX (single stage) | If you're already invested in GECX dialog design and want to keep that authoring surface. |
| Salesforce Agentforce Voice (single stage) | If the agent is authored and governed in Salesforce Agentforce and TrueServe should provide the browser/audio surface. |
| Maven AGI Voice Agent (single stage) | If the voice agent is authored in Maven AGI and TrueServe should provide the browser/audio surface. |
For chat agents, replace the STT/TTS stages with a single LLM stage. Choose Maven AGI / Chat Agent when the text agent is authored in Maven AGI.
Branching behavior¶
Agents with two or more parallel branches use Branching Behavior to control how branches take turns. The card appears in Settings for multi-branch chat agents. For speech-to-speech agents, open the Audio Input block with its pencil icon; the same controls live there alongside When the conversation starts.
For chat agents, add a second branch to the pipeline, each with its own LLM stage, prompt, and persona. The Branching Behavior card includes:
- Turn behavior
- Concurrent branches: every branch answers each user message in parallel; replies are delivered one at a time, each labeled with the agent's name.
- Sequential branches: branches reply one after another over a shared conversation, so a later branch can build on what an earlier one said.
- Branch reply order: By completion (whoever finishes first speaks first) or By configuration (the order the branches appear on the canvas).
- Allow silent branches: lets a branch skip a turn when it has nothing to add, instead of forcing a reply every time.
For speech-to-speech agents, Audio Input → Branching Behavior uses the same turn-taking language but adds audio controls:
- Turn behavior: Free-flowing branches lets voice branches speak at the same time, One branch at a time keeps a single active speaker, and One branch at a time + caller barge-in lets caller speech preempt the active branch when the service supports it.
- Branch audio output: Mix lets the caller hear all branches, First speaker only passes only the active branch, and Drop branch audio keeps a branch analysis-only.
In the chat, each agent's messages are shown with their own avatar (initials on the agent's accent colour), a name label, and an accent-tinted bubble, so you can tell at a glance who said what. Each agent greets according to its own greeting setting. When you set an Agent Identity on a multi-agent branch, TrueServe uses it; otherwise it assigns each agent's accent colour by position on the canvas. A single agent shows its display name and accent too — but only when you set them explicitly under Properties → Agent Identity; leave them blank and its replies show the default label and colour.
Long conversations (context summarization)¶
Every message in a conversation is sent back to the model on each turn, so a very long chat or call can eventually outgrow the model's context window. At that point the agent stops responding. The Context Summarization card in Settings prevents that:
- Summarize long conversations: when on, TrueServe condenses older parts of the conversation into a short summary once the conversation gets large, so it keeps going instead of hitting the model's limit. Off by default.
Turn it on for chat agents and any agent expected to hold long sessions. When summarization runs it adds a brief extra step, so for latency-sensitive voice agents leave it off unless you're seeing long calls cut off. The card doesn't appear for speech-to-speech (realtime voice) agents, which manage their own conversation history.
Compliance and recording settings¶
Open Settings → Media & Recording to choose whether transcripts are saved. Voice and audio agents can also suppress recording entirely and choose whether to store audio.
Agents with compliance configuration have a Compliance & Security tab.
When transcript storage is enabled and recording is not suppressed, use
Redact PII in transcripts there to replace detected personally identifiable
information with [REDACTED]. Switching tabs preserves your draft edits.
See also¶
Updated voice authoring controls¶
Input and Output nodes use neutral cards; their edit actions remain available. Properties show language names and option dropdowns where supported. Key terms are removable chips: press Enter or leave the field to add typed terms. You can paste a comma-separated list. Duplicate terms are ignored. Voice volume uses a percentage slider; supported native turn controls appear under Behavior → Turn Control. Sample-rate fields are hidden; existing saved values are retained.
Expand an Auxiliary services slot to inspect or customize its service and configuration. Default selected inherits the tenant defaults; Use defaults removes that slot's override without changing other slots. Published versions remain read only. Integration and voice choices refresh when their provider or tenant changes, and changing the voice stops a pending sample preview.
The save chip spins while edits await confirmation and shows Saved only after the gateway reports a live, clean document. Save failing means saving is unavailable; click it to retry. A disconnected gateway never shows Saved.