Skip to content

Blueprint Catalog

Every Blueprint-visible node 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.

All nodes live under two UObjects:

  • 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.)

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 Engine (ETryllInferenceEngine), Game Name (FString, default empty), Stt Engine / Tts Engine / Embedding Engine (ETryllInferenceEngine, default Mock), Storage Data Folder (FString, default empty) Sends CreateSessionRequest. Fires OnCreateSessionComplete(bSuccess). Mandatory and one-shot: only valid once, immediately after OnConnectionChanged(true). See Agent Parameters and Server Configuration.
Create Session From Settings Callable Same as Create Session but reads every engine field, Game Name, and Storage Data Folder from Project Settings → Tryll Client. 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 Inference Throttle Callable Level (float, 01) 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) Loads a locally-available model into the active inference engine. Fires OnLoadModelComplete(ModelName, bSuccess).
Request Unload Model Callable Model Name (FString) Unloads a loaded model. Fires OnUnloadModelComplete(ModelName, bSuccess).

Model listing is request/response driven — call the C++ UTryllSubsystem::ListModels (exposed as a blueprint-friendly callback shape) 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 using the component's configured graph / model / knowledge presentation. Fires OnAgentReady. Normally called automatically when the subsystem connects.
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. See Stream Answers to UI.
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.
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.
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.

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 Pure UTryllAgentVariables The agent's variables mirror. 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 set SttEngine = SherpaOnnx in project settings. 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.

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 KV Cache Prefilled FTryllKvCachePrefillResult A prefill request completed with aggregate counts and status.
On KV Cache Evicted FTryllKvCacheEvictResult An eviction request completed with aggregate counts and status.
On KV Cache Status FTryllKvCacheStatus A status request completed.
On KV Cache Prefill/Evict/Status Error ErrorMessage (FString) The corresponding lifecycle operation failed.

Events — Tryll|TTS (on UTryllSpeakerComponent)

Add a UTryllSpeakerComponent to an actor alongside UTryllAgentComponent to enable TTS audio playback. Bind these events to react to the audio lifecycle.

Event Payload Fires when
On Tts Audio Started The first PCM chunk of a turn is queued — speech is about to begin.
On Tts Audio Finished The audio component has drained — speech has finished playing.

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

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) A protocol-level voice error.
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.

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 ListModels.
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) A ToolCall node with a non-RouteOnly disposition detected a call. See Define and Handle Tool Calls.
On Intent Classified AgentId (int64), Intent (FString), RecordId (FString), RecordIndex (int64), Distance (float) A ClassifyIntent / ClassifyIntentLLM node with notify_client=true resolved an intent. See Build an Intent-Driven NPC.
On Paused AgentId (int64), NodeName (FString), PendingExit (FString) 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 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; auto-discovered at BeginPlay. See Add Voice Output to an Agent.
UTryllVoiceInputComponent UActorComponent Captures the microphone and streams STT. Add to an actor; routes the final transcript to a sibling UTryllAgentComponent. Requires SttEngine = SherpaOnnx.
UTryllGenerateAndSpeakParams UObject (EditInlineNew) Node params for the GenerateAndSpeak node. Set bOverrideTtsModelName = true and fill TtsModelName; SpeakerId and Speed are runtime-mutable.
FTryllGraphDescription USTRUCT(BlueprintType) The full graph: nodes, routes, start id.
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 ListModels; fields mirror Model Management.
FTryllError USTRUCT(BlueprintType) Error envelope used in some event payloads. Code matches ETryllErrorCode.
ETryllInferenceEngine UENUM(BlueprintType) Inference backend selector passed to CreateSession.
ETryllNodeType UENUM(BlueprintType) Node type selector used inside FTryllGraphDescription.
ETryllTurnStatus UENUM(BlueprintType) Turn outcome carried by OnTurnComplete (Success, Error, Cancelled).
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.
bAutoConnect true Connect once the subsystem initializes.
bAutoCreateSession true Create the session from the engine fields once connected.
Engine / SttEngine / TtsEngine / EmbeddingEngine LlamaCpp / Mock / Mock / Mock Per-kind backend. Set STT/TTS to SherpaOnnx for voice.
GameName empty Telemetry grouping slug.
StorageDataFolder empty Project-relative root for storage / hotword paths.
ConnectMaxAttempts / ConnectRetryDelaySeconds 5 / 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 subsystem, parse ArgumentsJson, run your game-side logic. See Define and Handle Tool Calls.

Speaking NPC — add UTryllSpeakerComponent to the actor alongside UTryllAgentComponent. Create the session with TtsEngine = SherpaOnnx. Use a UTryllWorkflowAsset with a GenerateAndSpeak node (fill in TtsModelName). Bind On Tts Audio Started / On Tts Audio Finished on the speaker component to drive mouth animations. 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.