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— aUGameInstanceSubsystem. Access from any Blueprint with theGet Tryll Subsystemnode (GameplayStatics → GetGameInstance → GetSubsystem<TryllSubsystem>).UTryllAgentComponent— anUActorComponent. Add one to any actor; whenbAutoCreateOnConnectistrue(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, 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) |
— | 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.
Related¶
- Unreal C++ API Reference — every header and class summarised.
- Component class pages: UTryllAgentComponent, UTryllSpeakerComponent, UTryllVoiceInputComponent, UTryllWorkflowAsset, UTryllRuntimeSettings.
- Agent Parameters
- Workflow Nodes
- Model Management
- Error Codes
- First Inference in Unreal