Skip to content

Blueprint Catalog

The Blueprint-visible nodes exposed by the Tryll Unreal plugin, grouped by category. Use this page to find which Blueprint function or event to place; use the Unreal C++ API Reference and the feature reference pages for parameter-level detail.

Most nodes live under two UObjects; the speaker, lip-sync and voice-input components add their own (below):

  • UTryllSubsystem — a UGameInstanceSubsystem. Access from any Blueprint with the Get Tryll Subsystem node (GameplayStatics → GetGameInstance → GetSubsystem<TryllSubsystem>).
  • UTryllAgentComponent — an UActorComponent. Add one to any actor; when bAutoCreateOnConnect is true (the default), it auto-creates its agent once the session is ready (connected and the session created), queuing if it spawns earlier. (The property name predates the session-ready semantics.)

Static helper libraries (Tryll|Languages, Tryll|Intent), the UTryllKvResidencyPolicy component (Tryll|KV Cache), and the generated node-params factory are not listed here; see their class pages.

Categories use the pipe convention (Tryll|Connection, Tryll|Models, …) so everything appears grouped under a single Tryll folder in the Blueprint context menu.

Connection — Tryll|Connection

On UTryllSubsystem.

Node Kind Inputs Outputs Notes
Connect Callable — — Starts the background connect. Fires OnConnectionChanged(true) when ready. Uses the host/port from project settings; see Run the Tryll Server.
Disconnect Callable — — Closes the socket. Fires OnConnectionChanged(false) once torn down.
Is Connected Pure — bool True while the background state is Connected.
Get Session Id Pure — int64 Server-assigned session id; 0 when disconnected.

Session — Tryll|Session

On UTryllSubsystem.

Node Kind Inputs Outputs Notes
Create Session Callable Game Name (FString, default empty), Locale (FString, BCP-47, default empty), Use Project Locale When Empty (bool, default true) — Sends CreateSessionRequest. Fires OnCreateSessionComplete(bSuccess). Mandatory and one-shot: only valid once, immediately after OnConnectionChanged(true). Storage root comes from Project Settings Storage Data Folder via the launcher (--storage-root), not this node. See Agent Parameters and Server Configuration.
Create Session From Settings Callable — — Same as Create Session but reads Game Name and Locale from Project Settings → Tryll Client, and sends the engine warm-up hint built from the Model Manager manifest. There are no engine settings: each model's catalog entry names its engine. This is what Auto Create Session calls for you.
Is Session Ready Pure — bool True once the session has been created (connected and CreateSession succeeded).
Set Session Locale Callable Locale (FString, BCP-47; empty clears it) — Changes the session language without recreating the session. Applies to every agent from its next turn (TTS language, locale template keys); content already bound to a node does not swap. Fires OnSetSessionLocaleComplete(Locale, bSuccess).
Set Inference Throttle Callable Level (float, 0–1) — Reports how hard the server should yield the GPU back to your game. 0 = full speed (the default for a session that never calls it), 1 = maximum yielding. Fire-and-forget — no response, no completion event, nothing to await — so calling it every tick is fine. Never changes what is generated, only how fast. See Wire Protocol.

Models — Tryll|Models

On UTryllSubsystem.

Node Kind Inputs Outputs Notes
Request Download Model Callable Model Name (FString) — Kicks off a download. Progress arrives via OnDownloadProgress; completion via OnDownloadComplete.
Request Load Model Callable Model Name (FString), Placement (ETryllMemoryPlacement, default Auto), Is Override (bool, default false) — Loads and pins a locally-available model. The model's catalog entry names the engine that runs it. Placement applies to this load only and is used only when Is Override is true; otherwise the session's per-model hint applies. Placement is a hint the server may downgrade. Fires OnLoadModelComplete(ModelName, bSuccess).
Request Unload Model Callable Model Name (FString) — Unloads a loaded model. Fires OnUnloadModelComplete(ModelName, bSuccess).
Build Engine Declarations Flat Callable (static, on UTryllRuntimeSettings) — TArray<int32> The optional engine warm-up hint as flattened (role, engine) ordinal pairs, derived from the models registered in the Model Manager. Advisory only: it never selects or gates an engine.
Set User Models Catalog Path Callable (static, on UTryllRuntimeSettings, category Tryll) Relative Path (FString; empty clears) bool, Out Error (FString) Stores a project-relative custom models catalog. Returns false for a path outside the project. With auto-launch on, a running server is restarted and an open session is dropped.

Model listing is not a Blueprint node. Call the C++ UTryllSubsystem::RequestListModels(OnComplete), then read the result in its callback or bind OnListModelsComplete. See Model Management for lifecycle rules.

Agent — Tryll|Agent

On UTryllAgentComponent.

Node Kind Inputs Outputs Notes
Create Agent Callable — — Creates a server-side agent from the component's Workflow Asset (fails with OnError if none is assigned). Fires OnAgentReady. With bAutoCreateOnConnect (the default) it runs automatically once the session is ready (Is Session Ready, after CreateSession succeeds), not on raw connect.
Destroy Agent Callable — — Destroys the server-side agent. Fires the subsystem's OnAgentDestroyed(AgentId).
Send Message Callable Message (FString) — Sends a user turn. Streams back via OnAnswerText; ends with OnTurnComplete. If the agent exists but is busy (a running turn or a KV-cache operation), the message is queued instead of dropped (only the newest is kept) and OnMessageQueued fires. See Stream Answers to UI.
Try Flush Pending Message Callable — bool Hands the queued message to the agent if it can accept one now. Returns true only when a message was sent. Called automatically on agent-ready, turn-complete, and cache-operation-complete.
Has Pending Message Pure — bool True while a queued message is waiting for the agent.
Get Pending Message Pure — FString The queued message, or empty.
Is Turn In Flight Pure — bool True while a turn this component started has not completed.
Get Paused Node Pure — FString The node the turn is paused after, or empty when not paused. While non-empty, Send Message fails with AgentBusy until Resume or Cancel.
Cancel Callable Mode (ETryllCancelMode, default StopAndKeep) — Cooperatively stop the in-flight turn. Ends with OnTurnComplete(Cancelled). Idle cancel is a no-op. See Cancelling a turn.
Resume Callable Resume Node (FString, default empty) — Resume a paused turn. Empty continues via the pending exit; non-empty jumps to that node. Fires OnResumed. See How to pause and resume a turn.
Get Node Params Baseline Callable Node Name (FString) UTryllNodeParamsBase The authored params for a node. Clone it, edit fields, then pass to Change Params. Call after OnAgentReady; returns null for an unknown node.
Change Params Callable Node Name (FString), Params (UTryllNodeParamsBase) — Mutate a node parameter at runtime (the agent must be idle or paused). Fires OnParamChanged. See Change Agent Parameters.
Is Agent Ready Pure — bool True after OnAgentReady has fired.
Get Agent Id Pure — int64 Server-assigned agent id; 0 before ready.

See UTryllAgentComponent for the full property and method reference.

Tools — Tryll|Tools

On UTryllAgentComponent. Use these to answer a paused AwaitResult tool call from Blueprint.

Node Kind Inputs Outputs Notes
Resume With Tool Result Callable Tool Result (FTryllToolResult: CallId, Result), Resume Node (FString, default empty) — Resumes the paused turn with one result correlated to a tool-call id. Fires OnResumed.
Resume With Tool Results Callable Tool Results (TArray<FTryllToolResult>), Resume Node (FString, default empty) — Resumes with the complete result batch for one paused tool-call pass. An incomplete or duplicate batch is rejected (InvalidToolResults, 3016). Fires OnResumed.
Retry Paused Tool Batch Callable — — Re-runs the retained paused batch: handlers that already produced a result are skipped, the rest run, and a fresh resume is sent. No-op without a retained batch.
Has Paused Tool Batch Pure — bool True while a paused tool-call batch is retained (until a successful resume, turn end or cancel, destroy, or disconnect).

KV Cache — Tryll|KV Cache

On UTryllAgentComponent. Calls are idle-only.

Node Kind Inputs Outputs Notes
Prefill KV Cache Callable — — Synchronises every eligible language-model context to its reusable prefix. Fires OnKvCachePrefilled or OnKvCachePrefillError.
Evict KV Cache Callable — — Releases every eligible raw language-model context while retaining the agent. Idempotent. Fires OnKvCacheEvicted or OnKvCacheEvictError.
Get KV Cache Status Callable — — Reads aggregate residency and prefix status. Fires OnKvCacheStatus or OnKvCacheStatusError.

The component's KV Cache Initialization property is in the same category.

Event Payload Fires when
On KV Cache Prefilled Result (FTryllKvCachePrefillResult) A prefill request completed with aggregate counts and status.
On KV Cache Evicted Result (FTryllKvCacheEvictResult) An eviction request completed with aggregate counts and status.
On KV Cache Status Result (FTryllKvCacheStatus) A status request completed.
On KV Cache Prefill Error / Evict Error / Status Error ErrorMessage (FString) The corresponding lifecycle operation failed.

Dialog — Tryll|Dialog

On UTryllAgentComponent. Both calls are strict idle-only (AgentBusy while a turn is running, paused, or during a KV-cache operation). See Seed and edit dialog history.

Node Kind Inputs Outputs Notes
Append Interactions Callable Interactions (TArray<FTryllDialogInteraction>) — Appends scripted user/assistant pairs without running the graph. An empty side is omitted; both empty is skipped. Fires OnInteractionsAppended or OnAppendInteractionsError.
Remove Interactions From End Callable Count (int32) — Removes whole interactions from the end of the dialog. Fires OnInteractionsRemoved or OnRemoveInteractionsError.
Event Payload Fires when
On Interactions Appended Count (int32) Append Interactions succeeded.
On Append Interactions Error ErrorMessage (FString) Append Interactions failed.
On Interactions Removed Count (int32) Remove Interactions From End succeeded.
On Remove Interactions Error ErrorMessage (FString) Remove Interactions From End failed.

Variables — Tryll|Variables

On UTryllAgentComponent, via Get Variables. See Agent Variables for the full model. Setters validate locally and return an FTryllError immediately for an unknown name or type mismatch — no wire round-trip. Writes are batched and flushed automatically immediately before the next Send Message / Resume / Change Params call.

The component Details panel also exposes declaration-driven Variable Overrides and a Live Agent — Variables section (dirty status + Flush Now) when a PIE agent or Tryll Chat preview agent is attached. Unchecking an override assigns the workflow declaration default on the live mirror.

Node Kind Inputs Outputs Notes
Get Variables Callable (on UTryllAgentComponent) — UTryllAgentVariables The agent's variables mirror, or null when no agent is ready. Has an execution pin. Call after OnAgentReady.
Set Int Variable Callable (on UTryllAgentVariables) Name (FString), Value (int64) FTryllError Assigns a declared Int variable.
Set Float Variable Callable Name (FString), Value (float) FTryllError Assigns a declared Float variable.
Set String Variable Callable Name (FString), Value (FString) FTryllError Assigns a declared String variable.
Set Bool Variable Callable Name (FString), Value (bool) FTryllError Assigns a declared Bool variable.
Set String Set Variable Callable Name (FString), Value (TArray<FString>) FTryllError Replaces a declared StringSet variable wholesale.
Add To Set Variable Callable Name (FString), Element (FString) FTryllError Idempotent insert into a StringSet variable.
Remove From Set Variable Callable Name (FString), Element (FString) FTryllError Idempotent removal from a StringSet variable.
Reset Variable Callable Name (FString) FTryllError Restores the CreateAgent-time initial value.
Is Dirty Pure — bool True when staged mutations have not been flushed yet.
Flush If Dirty Callable — — Eager wire flush (same as Details Flush Now). No-op when clean.
Get Int Variable Pure Name (FString) int64, bFound (bool) Current value; bFound is false if the name isn't declared.
Get Float Variable Pure Name (FString) float, bFound (bool) Current value; bFound false if undeclared.
Get String Variable Pure Name (FString) FString, bFound (bool) Current value; bFound false if undeclared.
Get Bool Variable Pure Name (FString) bool, bFound (bool) Current value; bFound false if undeclared.
Get String Set Variable Pure Name (FString) TArray<FString>, bFound (bool) Current value; bFound false if undeclared.

Voice Input — Tryll|Voice

On UTryllVoiceInputComponent. Add one to an actor (optionally alongside a UTryllAgentComponent) and download an STT model in the Model Manager. See UTryllVoiceInputComponent for the full property list.

Node Kind Inputs Outputs Notes
Create Voice Input Callable — — Creates the server-side STT handle. Fires OnVoiceInputCreated. Normally automatic when bCreateOnConnect is true.
Destroy Voice Input Callable — — Releases the server-side STT handle.
Begin Utterance Callable Agent Override (UTryllAgentComponent, optional) — Opens an utterance and starts mic capture. The final transcript routes to the override, else TargetAgent, else transcribe-only.
End Utterance Callable — — Commits the utterance (push-to-talk release).
Cancel Utterance Callable — — Drops the utterance without producing a transcript.
Has Voice Input Pure — bool True once the handle exists.
Is Utterance Active Pure — bool True while an utterance is open.
Get Microphone Status Pure — ETryllMicrophoneStatus Result of the last microphone check: Unknown, Available, NoDevice or CaptureFailed.
Get Microphone Status Message Pure — FString Why the microphone is unavailable; empty when it is not.
Is Microphone Unavailable Pure — bool True for NoDevice or CaptureFailed. Show "type to chat"; Begin Utterance re-checks and recovers once a microphone appears.

Events — Tryll|Events (on UTryllAgentComponent)

Bind these on each agent component instance. All are BlueprintAssignable, so Bind Event to … nodes work directly.

Event Payload Fires when
On Agent Ready — Server confirms agent creation.
On Answer Text NodeName (FString), Text (FString), bIsFinal (bool) Streaming token chunk. NodeName names the producing node (multi-sender graphs). bIsFinal is true on the last chunk before OnTurnComplete. (No bIsDelta pin — the Blueprint delegate is 3-param; the C++ agent handle carries bIsDelta separately.)
On Answer Full FullText (FString) After OnTurnComplete, with the full accumulated response.
On Turn Complete Status (ETryllTurnStatus), DebugInfo (FString), TokensGenerated (int32) Turn ended. DebugInfo is populated only when bEnableDiagnostics is set.
On Error ErrorMessage (FString) Any agent-level error (send failure, server error response).
On Param Changed bSuccess (bool), ErrorMessage (FString) A ChangeParams request completed; ErrorMessage is empty on success.
On Resumed bSuccess (bool), ErrorMessage (FString) A Resume request completed; ErrorMessage is empty on success, otherwise describes AgentNotPaused (3012) or UnknownNode (3005).
On Tool Call ToolName (FString), ArgumentsJson (FString) A ToolCall node on this agent with a non-RouteOnly disposition detected a call. No agent id: this component is the agent.
On Tool Call With Id CallId (FString), ToolName (FString), ArgumentsJson (FString) Same call, with the id to echo in tool_results.
On Tool Call Detailed Call (FTryllToolCall) Same call, including node name and disposition. Also suppresses this component's On Node Event.
On Intent Classified Classification (FTryllIntentClassification) Embedding ClassifyIntent on this agent. The struct has no AgentId.
On Intent LLM Classified Classification (FTryllIntentLlmClassification) ClassifyIntentLLM on this agent. The struct has no AgentId.
On Paused NodeName (FString), PendingExit (FString) This agent's turn paused between nodes. Binding it suppresses this component's On Node Event for the pause.
On Node Event NodeName (FString), EventType (FString), KvPairs (TArray<FTryllNodeEventKeyValue>) Generic fallback for this agent when no typed listener is bound on this component.

A typed listener on this component does not suppress the subsystem events below, and the reverse.

The KV-cache and dialog events are listed with their nodes above. One more component event sits under Tryll|Agent:

Event Payload Fires when
On Message Queued Message (FString) Send Message could not hand the message over yet and queued it. Use it to show a "waiting to send" state.

Voice — Tryll|TTS (on UTryllAgentComponent)

The agent's voice is a voice profile: a UTryllVoiceProfile data asset (Content Browser Tryll ▸ Voice Profile) assigned to the component's Voice Profile property (Tryll|TTS, editable, Blueprint read-only). Every speaking node of the workflow (Speak, Generate And Speak) uses it. A workflow that speaks needs one: without it the server refuses the agent with AgentVoiceRequired (3025), the component logs an error at Create Agent, and Data Validation flags the component. One workflow can serve many characters, each with its own profile.

The component's Voice Delivery row is a per-agent override of the profile's default mode. Enable its checkbox and choose neutral or one of the assigned profile's modes. It is used by the next Create Agent without modifying the shared profile asset, and a change applies immediately to a live PIE or Tryll Chat agent.

Node Kind Inputs Outputs Notes
Set Voice Callable New Voice (UTryllVoiceProfile) — With a live agent, replaces its voice (idle only: AgentBusy 3004 during a turn; InvalidVoiceProfile 3023 when the model cannot use the profile, and the old voice stays) and assigns Voice Profile on success. The active delivery mode survives when the new profile defines a mode of the same name. Without an agent it only assigns Voice Profile for the next Create Agent. Fires OnVoiceChanged.
Set Delivery Mode Callable Mode (FString), Intensity (float, default 1, advanced) — Switches the voice's delivery mode, for example angry. Allowed mid-turn; applies from the next sentence. neutral always works; a mode the profile does not define fails with UnknownDeliveryMode (3024) and the current mode stays. Intensity (0–1) scales the mode where the model can use it. Fires OnDeliveryModeChanged.
Get Delivery Mode Pure — FString The mode last applied to the live agent; the profile's default mode (empty = neutral) before any switch.
Event Payload Fires when
On Voice Changed Error (FTryllError) Set Voice completed. Error.Code is 0 on success.
On Delivery Mode Changed Mode (FString), Error (FTryllError) Set Delivery Mode completed. Error.Code is 0 on success, 3024 for an undefined mode, 3025 when the agent has no voice.

Events — Tryll|TTS (on UTryllSpeakerComponent)

UTryllAgentComponent plays TTS audio through the UTryllSpeakerComponent on its actor, and adds one at CreateAgent if the graph speaks and there is none. Add one yourself to bind these events to react to the audio lifecycle. Every Started is followed by exactly one Finished (unless the component ends play mid-speech). The agent's Speaker property (Tryll|TTS, Blueprint read/write, set on a placed instance) picks a specific speaker; it is read at CreateAgent.

Event Payload Fires when
On Tts Audio Started — The first PCM chunk of a turn is queued — speech is about to begin. Once per turn, even when several nodes speak.
On Tts Audio Finished — The turn is complete and its queued audio has been handed to the audio engine (its own buffers, a few tens of ms, still play out). Also fires immediately when Stop Playback cuts speech off.
Function Kind Returns Description
Stop Playback Callable — Drops all queued audio and ignores further audio until the next turn announces its audio format. Fires On Tts Audio Finished if speech was playing. Does not cancel the turn — call Cancel on the agent for that. Safe to call repeatedly.
Get Sample Rate Pure int32 Sample rate of the current TTS stream, in Hz. 0 before the first format announcement.
Get Output Latency Ms Pure float Audio engine output buffering after the speaker's playback clock, in milliseconds. 0 without an audio device. Tryll Lip Sync subtracts it when Compensate Output Latency is on.

See Add Voice Output to an Agent for the full setup workflow.

Functions — Tryll|Lip Sync (on UTryllLipSyncComponent)

Tryll Lip Sync plays the server's viseme track on a face with ARKit morph targets. See Add Lip Sync to a Character.

Function Kind Parameters Returns Description
Set Intensity Callable InIntensity (float) — Scales every mouth pose. 0 keeps the mouth at rest.
Bind Face Callable InFaceMesh (USkeletalMeshComponent) — Rebinds to a face mesh, for example after spawning or swapping it at runtime.
Is Face Bound Pure — bool true once at least one ARKit morph target from the pose table was found on the face.
Get Bound Channel Count Pure — int32 How many pose-table channels were found as morph targets.
Get Active Viseme Pure — ETryllViseme The viseme showing now.
Get Applied Jaw Open Pure — float jawOpen as written this frame, 0–1.
Property Type Access Description
Speaker UTryllSpeakerComponent Blueprint read/write The speaker whose track plays. Empty = the first one on the owner.
Face Mesh USkeletalMeshComponent Blueprint read/write The face to drive. Empty = searched on the owner; a mesh named Face wins.
Settings FTryllVisemeSettings Blueprint read/write Intensity, smoothing, sync offset and latency compensation; applied every tick.
Poses TArray<FTryllVisemePose> Editor only The pose table. Read at BeginPlay.

Events — Tryll|Events (on UTryllVoiceInputComponent)

Event Payload Fires when
On Transcript Update Update (FTryllTranscriptUpdate) Each transcript update — partial and final. Read Update.Kind (SpeechStart / Partial / SegmentFinal / UtteranceFinal) and Update.Text.
On Error ErrorMessage (FString) Any voice error, message only.
On Error Detailed Error (FTryllError) Fires with On Error, carrying the code — e.g. MicrophoneUnavailable (4108) when there is no usable microphone, VoiceInputStarting (4109) while voice input is being (re)created.
On Voice Input Created — The STT handle has been created.

See Use Voice Input and UTryllVoiceInputComponent.

Events — Tryll|Events (on UTryllSubsystem)

Bind these once per connection, typically in Event BeginPlay. The tool-call, intent, pause, and node-event rows are the all agents surface. Prefer the matching events on UTryllAgentComponent when you only care about one NPC.

Event Payload Fires when
On Connection Changed bConnected (bool) Transport state flipped. true means the session is ready to configure.
On Error ErrorMessage (FString) Subsystem-level error (transport, protocol, model).
On Agent Destroyed AgentId (int64) A server-side agent was destroyed (by DestroyAgent or session tear-down).
On Create Session Complete bSuccess (bool) Response to CreateSession.
On List Models Complete Models (TArray<FTryllModelInfo>), bSuccess (bool) Response to the C++ RequestListModels.
On Set Session Locale Complete Locale (FString), bSuccess (bool) Response to Set Session Locale.
On Get Memory Consumption Complete Snapshot (FTryllMemorySnapshot), bSuccess (bool) Response to RequestGetMemoryConsumption. Session-scoped, server-wide; never AgentBusy. Bind after a C++ call — the request itself is not a Blueprint node. See Inspect Server Memory.
On Download Progress ModelName (FString), BytesDownloaded (int64), TotalBytes (int64), Percent (float) Periodic download update. Percent is 0–100. TotalBytes may be 0 when the server does not know the content length — fall back to Percent.
On Download Complete ModelName (FString), bSuccess (bool), ErrorMessage (FString) Download finished or failed. ErrorMessage is empty on success.
On Load Model Complete ModelName (FString), bSuccess (bool) Response to RequestLoadModel.
On Unload Model Complete ModelName (FString), bSuccess (bool) Response to RequestUnloadModel.
On Tool Call AgentId (int64), ToolName (FString), ArgumentsJson (FString) All-agents form of the component event. A ToolCall node with a non-RouteOnly disposition detected a call. See Define and Handle Tool Calls.
On Intent Classified AgentId (int64), Classification (FTryllIntentClassification) All-agents form. Embedding ClassifyIntent with notify_client OnFound/Always. The agent id is this pin; the struct does not repeat it. See Build an Intent-Driven NPC.
On Intent LLM Classified AgentId (int64), Classification (FTryllIntentLlmClassification) All-agents form. ClassifyIntentLLM with notify_client OnFound/Always. The agent id is this pin.
On Paused AgentId (int64), NodeName (FString), PendingExit (FString) All-agents form. The executor paused a turn between nodes (Pause node, or a ToolCall with a pausing disposition). See How to pause and resume a turn.
On Tool Call With Id AgentId (int64), CallId (FString), ToolName (FString), ArgumentsJson (FString) All-agents form of the component event. Use CallId when resuming with a result.
On Tool Call Detailed AgentId (int64), Call (FTryllToolCall) All-agents form. Fired in addition to On Tool Call / On Tool Call With Id; binding it does not suppress On Node Event.
On Node Event AgentId (int64), NodeName (FString), EventType (FString), KvPairs (TArray<FTryllNodeEventKeyValue>) All-agents generic fallback when no typed listener is bound on the subsystem. An agent-scope listener does not suppress this, and the reverse.
On Create String Storage Complete Name (FString), bSuccess (bool) Response to CreateStringStorage.
On Destroy String Storage Complete Name (FString), bSuccess (bool) Response to DestroyStringStorage.
On Create Embedded String Storage Complete Name (FString), RecordCount (int32), bSuccess (bool) Response to CreateEmbeddedStringStorage.
On Destroy Embedded String Storage Complete Name (FString), bSuccess (bool) Response to DestroyEmbeddedStringStorage.

String-storage requests are C++-only

The four completion events above are Blueprint-assignable, but the matching request calls (RequestCreateStringStorage and its …FromFile / …Keyed variants, RequestCreateEmbeddedStringStorage and its …FromStrings variant, and the two destroy calls) take C++ callbacks and are not exposed as Blueprint nodes — initiate them from C++. For most graphs you don't need them at all: pin a storage by relative path in the node's params and the server loads it at agent-creation time. See String Storage and Embedded String Storage.

Assets and structs (editable in Details panel)

These are Blueprint-visible types, not callable nodes. You configure them on the UTryllAgentComponent's Details panel or inside a UTryllWorkflowAsset.

Type Kind Purpose
UTryllWorkflowAsset UDataAsset Content-Browser asset wrapping an FTryllGraphDescription. Assign one to the component to avoid authoring the graph in C++.
UTryllSpeakerComponent UActorComponent Plays streaming TTS audio from an agent. Add to the same actor as UTryllAgentComponent; found at CreateAgent, or added then if the graph speaks and the actor has none. See Add Voice Output to an Agent.
UTryllLipSyncComponent UActorComponent Tryll Lip Sync: plays the viseme track on ARKit morph targets. Add next to a UTryllSpeakerComponent. See Add Lip Sync to a Character.
UTryllVoiceInputComponent UActorComponent Captures the microphone and streams STT. Add to an actor; routes the final transcript to a sibling UTryllAgentComponent. Requires an STT model on disk (Model Manager).
UTryllVoiceProfile UPrimaryDataAsset An agent's voice. Content Browser Tryll ▸ Voice Profile; assign it to UTryllAgentComponent::VoiceProfile. Its Details panel shows only the fields the chosen model can use (from the model catalog) and lists what the server would reject.
FTryllVoiceProfileData USTRUCT(BlueprintType) The profile's fields (Voice on the asset): TtsModelName (required), SpeakerId, ReferenceVoice, VoiceDescription, Speed, Lang, Expressiveness, Prepare, bEmitVisemes (turns on the lip-sync track), DeliveryModes, DefaultDeliveryMode.
FTryllDeliveryMode USTRUCT(BlueprintType) One named delivery: Name, ReferenceVoice, Instruction, Expressiveness (-1 = the profile's), SpeedScale.
UTryllGenerateAndSpeakParams, UTryllSpeakParams UObject (EditInlineNew) Node params for Generate And Speak and Speak. They hold no voice settings (protocol v27): only text routing and sentence chunking. The voice is the agent's Voice Profile.
ETryllViseme, FTryllVisemeEvent UENUM / USTRUCT(BlueprintType) The 15 visemes, and one track event: SampleOffset (int64), Viseme, Weight.
FTryllVisemePose, FTryllVisemeChannelWeight, FTryllVisemeSettings USTRUCT(BlueprintType) A viseme's ARKit channel weights, and the lip-sync tuning settings.
FTryllGraphDescription USTRUCT(BlueprintType) The full graph: Nodes, StartNode, and DefaultModelName. Exits are fields on each node's params; there is no separate routes list.
FTryllVariableDecl USTRUCT(BlueprintType) Declares one Agent Variable: name, type, initial value. Editable in the UTryllWorkflowAsset's Variables array.
FTryllVariableOverride USTRUCT(BlueprintType) Per-instance override of a declared variable's initial value, editable in UTryllAgentComponent::VariableOverrides (Material-Instance pattern).
FTryllModelInfo USTRUCT(BlueprintType) Row returned by RequestListModels / OnListModelsComplete; fields mirror Model Management.
FTryllMemorySnapshot USTRUCT(BlueprintType) Server-wide RAM/VRAM snapshot from RequestGetMemoryConsumption.
ETryllMemoryTier UENUM(BlueprintType) Confidence of a memory figure: Measured, Derived, Estimated.
FTryllIntentClassification USTRUCT(BlueprintType) Embedding ClassifyIntent payload: node name, intent, record id, record index, distance, not-found reason. No AgentId — the session event pin or the component scope carries it.
FTryllIntentLlmClassification USTRUCT(BlueprintType) ClassifyIntentLLM payload: node name, intent, top and second probability, label probabilities, not-found reason. No AgentId.
FTryllNodeEventKeyValue USTRUCT(BlueprintType) One key/value pair on On Node Event.
FTryllError USTRUCT(BlueprintType) Error envelope used in some event payloads. Code matches ETryllErrorCode.
ETryllInferenceEngine UENUM(BlueprintType) Names the catalog engines (LlamaCpp, SherpaOnnx, OnnxRuntime, …). Each model's catalog entry names its engine. CreateSession does not take this enum.
ETryllNodeType UENUM(BlueprintType) Node type selector used inside FTryllGraphDescription.
ETryllTurnStatus UENUM(BlueprintType) Turn outcome carried by OnTurnComplete (Success, Error, Cancelled, PauseTimedOut). PauseTimedOut means a pause outlived its timeout and the pausing node had no timeout exit.
ETryllCancelMode UENUM(BlueprintType) Cancel mode for Cancel: StopAndKeep (chat Stop) or StopAndDiscard (rollback the interaction).
ETryllKvCacheInitialization UENUM(BlueprintType) Agent-creation choice: AllocateOnly, Prefill, or DeferAllocation.
FTryllKvCacheStatus USTRUCT(BlueprintType) Aggregate KV-cache applicability, residency, reusable-prefix status, eligible-node count, and optional diagnostics.
ETryllModelStatus UENUM(BlueprintType) Model lifecycle state returned inside FTryllModelInfo.
ETryllErrorCode UENUM(BlueprintType) Mirrors the server error codes.

Project Settings — Tryll Client

Set under Project Settings → Plugins → Tryll Client (UTryllRuntimeSettings, persisted to Config/DefaultGame.ini). These drive the auto-launch / auto-connect / auto-create-session flow, so the components above create themselves with no code.

Setting Default Purpose
bAutoLaunchServer true Spawn the bundled server on startup.
LlamaCppBackend Vulkan llama.cpp GPU plugin (Vulkan / Auto). Passed as --llama-backend. Auto prefers CUDA on NVIDIA and ships CUDA DLLs; Vulkan skips them. Ignored when auto-launch is off.
bAutoConnect true Connect once the subsystem initializes.
bAutoCreateSession true Create the session from registered models once connected.
GameName empty Telemetry grouping slug.
StorageDataFolder TryllStorage Project-relative root outside Content/; launcher passes --storage-root.
ConnectMaxAttempts / ConnectRetryDelaySeconds 20 / 1.0 Connect-retry policy.

Full per-field detail: UTryllRuntimeSettings.

Typical Blueprint flows

First inference — bind OnConnectionChanged on the subsystem, call CreateSession on bConnected=true, wait for OnCreateSessionComplete, then call CreateAgent on the component. See First Inference in Unreal.

Streaming a reply — bind OnAnswerText on the agent component, append Text to your UI widget on each event, show the "done" state on OnTurnComplete. See Stream Answers to UI.

Handling a tool call — bind OnToolCall on the agent component, parse ArgumentsJson, run your game-side logic. The subsystem event is the all-agents form. See Define and Handle Tool Calls.

Speaking NPC — add UTryllSpeakerComponent to the actor alongside UTryllAgentComponent. Download a TTS model in the Model Manager. Use a UTryllWorkflowAsset with a GenerateAndSpeak (or Speak) node, create a Voice Profile asset that names the TTS model, and assign it to the agent component's Voice Profile. Call Set Delivery Mode to make the character sound angry or calm. For mouth movement, add Tryll Lip Sync and turn on Emit Visemes in the voice profile (see Add Lip Sync to a Character). Bind On Tts Audio Started / On Tts Audio Finished on the speaker component for other reactions, and call Stop Playback on it to cut the NPC off. See Add Voice Output to an Agent.

Prepare an NPC during loading — set the component's KV Cache Initialization to Prefill, or call Prefill KV Cache while the agent is idle. Evict KV Cache later to release only LLM context memory; the next Send Message restores it automatically. See Manage an Agent's KV Cache.

Save and load — ExportDialog / ImportDialog are C++ only (the snapshot is not Blueprint-exposed). Store the canonical TDLG bytes in your own save file next to variables and game state. See Save and Load Agent State.