# Tryll Engine > On-device SLM inference for games and tools — C++, Python, Unity, Unreal. Tryll runs small language models **on the player's own machine**. A C++ TCP server hosts the models; game code drives it through a client library (Unity C#, Unreal C++, C++, or Python) over a binary FlatBuffers protocol. There is no cloud API and no per-token cost. A Tryll **agent** is not a prompt — it is a **workflow graph** of typed nodes that communicate through named **slots** on a per-turn blackboard. Read `concepts/workflows-graphs-nodes.md` and `concepts/slots-and-inter-node-value-passing.md` before writing any graph. Facts that are easy to get wrong, because they differ from cloud LLM SDKs: - Models are **never** auto-downloaded. Acquire a model first (editor Model Manager, or `DownloadModel` over the wire); otherwise `CreateAgent` fails with `GraphCompilationFailed`. - `CreateSession` is **mandatory and one-shot**. Every other request before it is rejected with `SessionNotReady`. - Graph wiring lives on each node's own params as `_exit` string fields (`default_exit`, `then_exit`, …); an empty string means END. There is no `routes` array. - Wire delivery is `send: SendAnswer {None, Whole, Streamed}` and cross-turn history replay is `history_role`. There is no `stream: bool`. - Client node enums (`NodeType`, `TryllNodeType`) and the wire `NodeParams` union use **two different numbering schemes**. Never translate between them by hand. - Some node params are **structural** and fixed for the agent's lifetime; `ChangeAgentParam` rejects them with `ParamNotMutable`. ## Getting Started - [Home](https://docs.tryllengine.com/v0.10/index.md): What Tryll is, who it is for, and where to start. - [Getting Started](https://docs.tryllengine.com/v0.10/getting-started/index.md): Pick a platform, check the hardware requirements, and run your first on-device inference in ~15 minutes. - [First inference in Unity](https://docs.tryllengine.com/v0.10/getting-started/first-inference-unity.md): End-to-end Unity setup — install the UPM package, bundled server, first streamed answer. - [First inference in Unreal](https://docs.tryllengine.com/v0.10/getting-started/first-inference-unreal.md): End-to-end Unreal setup — install the plugin, bundled server, first streamed answer. - [First inference in C++](https://docs.tryllengine.com/v0.10/getting-started/first-inference-cpp.md): Build the C++ client library from source and run the bundled console demo. - [First inference in Python](https://docs.tryllengine.com/v0.10/getting-started/first-inference-python.md): Install the `tryll-client` wheel from the release, start the server bundled with the Unity or Unreal release, and drive a turn from Python. ## Use Cases - [Use Cases](https://docs.tryllengine.com/v0.10/use-cases/index.md): What you can build with Tryll (talking NPC, ambient world, voice control, in-game assistant, AI director) and which building blocks each one needs. - [AI director (idea)](https://docs.tryllengine.com/v0.10/use-cases/ai-director.md): Idea, not a built feature — an LLM that plans (quests, factions, NPC days) as grammar-constrained JSON while game systems validate and execute; build sketch with Tryll blocks, risks, and verified research papers. - [Ambient world](https://docs.tryllengine.com/v0.10/use-cases/ambient-world.md): Agents that talk on their own — barks, overheard NPC conversations, radio/newspaper/chronicler narrators fed by game events — and keeping them off the player's critical path with Background workload and the inference throttle. - [In-game assistant](https://docs.tryllengine.com/v0.10/use-cases/in-game-assistant.md): A helper that answers from game knowledge (retrieval with spoiler filters) and playthrough history (tool calls into game records, or a writable knowledge base), and acts for the player through tool calls. - [Talking NPC](https://docs.tryllengine.com/v0.10/use-cases/talking-npc.md): The talking NPC feature by feature — basic (natural dialogue, voice in and out, roleplay guardrails) and advanced add-ons (knowledge and lore, classification-driven mechanics, emotions, tool-call actions, memory and summarization) — with the demo workflow for each. - [Voice control](https://docs.tryllengine.com/v0.10/use-cases/voice-control.md): Turn free-form player speech into game commands — tool calls vs a GBNF grammar, validating commands in game code, hotwords and push-to-talk, stateless command agents, and which models parse commands best. ## Concepts - [Concepts](https://docs.tryllengine.com/v0.10/concepts/index.md): Map of the mental models behind Tryll's API. - [Tryll in ten minutes](https://docs.tryllengine.com/v0.10/concepts/tryll-in-ten-minutes.md): Start here — what Tryll is, why on-device, agents as workflows, the building blocks, and where to go next. - [Architecture at a glance](https://docs.tryllengine.com/v0.10/concepts/architecture-at-a-glance.md): The engineer's view — server, session, agent, graph, model, and the hot path of one turn. - [Workflows, graphs, nodes](https://docs.tryllengine.com/v0.10/concepts/workflows-graphs-nodes.md): How a graph executes, how nodes are wired via `_exit` params, and why an agent is not a prompt. - [Agents and sessions](https://docs.tryllengine.com/v0.10/concepts/agents-and-sessions.md): Session and agent lifecycle, and the mandatory one-shot `CreateSession` step. - [Lifetime and ownership](https://docs.tryllengine.com/v0.10/concepts/lifetime-and-ownership.md): Which resources outlive a single request (models, storages, agents) and who releases them. - [Models and inference engines](https://docs.tryllengine.com/v0.10/concepts/models-and-inference-engines.md): Language vs. embedding vs. STT/TTS models, engines, variants, and the model catalog. - [TTS and voice output](https://docs.tryllengine.com/v0.10/concepts/tts-and-voice-output.md): Server-side streaming text-to-speech, voice families, and voice cloning. - [STT and voice input](https://docs.tryllengine.com/v0.10/concepts/stt-and-voice-input.md): Streaming speech-to-text — push-to-talk vs. hands-free, VAD, and partial results. - [Retrieval-augmented generation](https://docs.tryllengine.com/v0.10/concepts/rag.md): Retrieval-augmented generation on-device — embeddings, vector storage, and grounding answers in your own data. - [Tool calling](https://docs.tryllengine.com/v0.10/concepts/tool-calling.md): Letting a model invoke game functions, and how results project back into the dialogue. - [Agent Variables](https://docs.tryllengine.com/v0.10/concepts/agent-variables.md): The typed per-agent key→value store — `{{var.}}`, filter operands, output substitution. - [Slots and inter-node value passing](https://docs.tryllengine.com/v0.10/concepts/slots-and-inter-node-value-passing.md): The per-turn slot blackboard — `input`/`output_name`, `send`, `history_role`, `{{slot.}}`. - [Constrained output (GBNF)](https://docs.tryllengine.com/v0.10/concepts/constrained-output.md): GBNF grammars — forcing structured output (JSON, enums) instead of prose. - [Projection and token budgets](https://docs.tryllengine.com/v0.10/concepts/projection-and-token-budgets.md): How dialogue history is rendered into a prompt, trimmed to the context window, and kept coherent with a rolling summary. ## How-to Guides - [How-to Guides](https://docs.tryllengine.com/v0.10/how-to/index.md): Index of task recipes, each solving one concrete problem. - [Run the Tryll server](https://docs.tryllengine.com/v0.10/how-to/run-the-tryll-server.md): Start a server so clients can connect. - [Auto-launch the server](https://docs.tryllengine.com/v0.10/how-to/auto-launch-server.md): Have your game spawn and manage the server process itself. - [Connect and manage a session](https://docs.tryllengine.com/v0.10/how-to/connect-and-manage-session.md): Connection lifecycle, reconnection, and clean shutdown. - [Test an agent in the editor](https://docs.tryllengine.com/v0.10/how-to/test-agent-in-editor.md): The in-editor Chat Window — talk to an agent without entering Play mode. - [Edit workflows in the Unity graph editor](https://docs.tryllengine.com/v0.10/how-to/edit-workflows-in-graph-editor.md): Author graphs visually in the Unity Workflow Graph window. - [Edit workflows in the Unreal graph editor](https://docs.tryllengine.com/v0.10/how-to/edit-workflows-in-unreal-graph-editor.md): Author graphs visually in the Unreal workflow graph editor. - [Manage models in the editor](https://docs.tryllengine.com/v0.10/how-to/manage-models-in-editor.md): The Unity/Unreal Model Manager window — download and register models per project. - [Choose where models run](https://docs.tryllengine.com/v0.10/how-to/choose-where-models-run.md): Put each model in RAM or VRAM, and understand why placement is a hint rather than a guarantee. - [Use the Agent Log](https://docs.tryllengine.com/v0.10/how-to/use-agent-log.md): Agent Log — per-agent client send/receive narrative in the editor. - [Inspect server memory](https://docs.tryllengine.com/v0.10/how-to/inspect-server-memory.md): Unity and Unreal Memory windows — live server-wide RAM/VRAM over the wire; Refresh only, no graphs. - [Inspect and edit knowledge stores](https://docs.tryllengine.com/v0.10/how-to/inspect-knowledge-stores.md): Unity and Unreal Knowledge windows — list, query, write, delete, and clear experimental mutable knowledge stores; save/load game memory and per-store TMKB export/import; Refresh only. - [Compare dialog variants in the Lab](https://docs.tryllengine.com/v0.10/how-to/compare-dialog-variants.md): Dialog Lab — run one scripted dialog across parameter variants and seeds, and read the spread. - [Run the Dialog Lab in CI](https://docs.tryllengine.com/v0.10/how-to/run-dialog-lab-in-ci.md): Headless Dialog Lab — run a script or suite from the command line in Unity or Unreal and gate CI on pass-rate thresholds. - [Test tool calls in Chat and the Lab](https://docs.tryllengine.com/v0.10/how-to/test-tool-calls-in-editor.md): Exercise a ToolCall workflow in Chat and the Dialog Lab without Play/PIE. - [Agentic coding with Tryll](https://docs.tryllengine.com/v0.10/how-to/agentic-coding-with-tryll.md): Have an AI coding agent build Tryll agents — AGENTS.md, the Unreal Tryll MCP tools (whole-graph write/validate), and prompt advice from real runs. - [Build a chat agent with a graph](https://docs.tryllengine.com/v0.10/how-to/build-chat-agent-with-graph.md): The minimal working graph — start here when writing your first agent. - [Design an NPC prompt](https://docs.tryllengine.com/v0.10/how-to/design-an-npc-prompt.md): Measurement-backed recipes for a role-play `system_prompt` — what improves character dialogue and what provably does not. - [Design an intent-classifier prompt](https://docs.tryllengine.com/v0.10/how-to/design-an-intent-classifier-prompt.md): Write a `ClassifyIntentLLM` prompt — the `{{intents_block}}`/`{{letters}}` template contract (there is no default), label wording and order, `threshold`/`margin`. - [Use Mustache templates](https://docs.tryllengine.com/v0.10/how-to/use-mustache-templates.md): Control prompt layout — `{{slot.}}`, `{{var.}}`, `{{#instructions}}`, knowledge blocks. - [Stream answers to your UI](https://docs.tryllengine.com/v0.10/how-to/stream-answers-to-ui.md): Consume `AnswerText` chunks and render them incrementally, per language. - [Send multiple answers in one turn](https://docs.tryllengine.com/v0.10/how-to/send-multiple-answers-in-a-turn.md): Multiple sending nodes in one turn, and attributing chunks to their producer. - [Change agent parameters at runtime](https://docs.tryllengine.com/v0.10/how-to/change-agent-parameters.md): Mutate a node parameter at runtime, and which params are structural and cannot change. - [Seed and edit dialog history](https://docs.tryllengine.com/v0.10/how-to/seed-and-edit-dialog-history.md): Append scripted user/assistant turns, write an opener, or retry by removing the last turn. - [Export and import dialog](https://docs.tryllengine.com/v0.10/how-to/export-and-import-dialog.md): Capture a full-fidelity dialog snapshot and restore it from a game-owned save. - [Save and load agent state](https://docs.tryllengine.com/v0.10/how-to/save-and-load-agent-state.md): Coordinate multi-agent snapshots, variables, and game state into an atomic save slot, then restore strictly in a fresh session. - [Cancel a turn](https://docs.tryllengine.com/v0.10/how-to/cancel-a-turn.md): Stop an in-flight turn — Stop button, barge-in, keep-or-discard semantics. - [Pause and resume a turn](https://docs.tryllengine.com/v0.10/how-to/pause-and-resume-turns.md): Suspend a turn between nodes and resume it, optionally jumping to another node. - [Manage an agent's KV cache](https://docs.tryllengine.com/v0.10/how-to/manage-agent-kv-cache.md): Prefill, evict, and inspect an agent's KV cache to trade RAM/VRAM against latency. - [Run many agents on a small GPU](https://docs.tryllengine.com/v0.10/how-to/run-many-agents-on-a-small-gpu.md): Size every LLM node's context window, then evict the agents nobody is talking to — the two levers that fit several NPC agents into limited VRAM. - [Keep long conversations coherent](https://docs.tryllengine.com/v0.10/how-to/keep-long-conversations-coherent.md): Add a `Summarize` node so a long conversation is compressed into a rolling summary instead of being trimmed away. - [Create a simple RAG assistant](https://docs.tryllengine.com/v0.10/how-to/create-simple-rag-assistant.md): Build a knowledge base, index it, and answer from it with `Retrieve → Generate`. - [Query rewriting and HyDE for RAG](https://docs.tryllengine.com/v0.10/how-to/query-rewriting-for-rag.md): Rewrite the raw utterance before searching - as a keyword query, or as a hypothetical answer (HyDE) when the knowledge base stores statements. - [Build an intent-driven NPC](https://docs.tryllengine.com/v0.10/how-to/build-intent-driven-npc.md): Classify player intent against a labelled knowledge base, then switch instructions on the result. - [Classify intent without a knowledge base](https://docs.tryllengine.com/v0.10/how-to/classify-intent-without-a-knowledge-base.md): Route player lines with `ClassifyIntentLLM` — described labels instead of a labelled corpus, no embedding model, no files. - [Score several attributes of one line](https://docs.tryllengine.com/v0.10/how-to/score-several-attributes-of-one-line.md): Label one player line on several axes (Choice, Boolean, Score) in one batched `ClassifyAttributesLLM` call, then route on the result and read it from game code. - [Give an NPC a memory it can search](https://docs.tryllengine.com/v0.10/how-to/give-an-npc-searchable-memory.md): Store what the player says with `WriteToMemory`, find it on later turns with `Retrieve`, and keep the store across game saves (experimental). - [Drive prompts and retrieval from game state](https://docs.tryllengine.com/v0.10/how-to/drive-prompts-and-retrieval-from-game-state.md): Feed live game state (level, mood, quest) into prompts and retrieval filters. - [Branch on a slot](https://docs.tryllengine.com/v0.10/how-to/branch-on-a-slot.md): Conditional routing with the `Branch` node, including reacting to a model's own verdict. - [Add a hidden reasoning or draft step](https://docs.tryllengine.com/v0.10/how-to/add-a-hidden-reasoning-step.md): Produce intermediate text the conversation never remembers. - [Substitute agent variables in LLM output](https://docs.tryllengine.com/v0.10/how-to/substitute-agent-variables-in-output.md): Replace `__PLACEHOLDER__` markers in streamed model output with computed values. - [Filter LLM output artifacts](https://docs.tryllengine.com/v0.10/how-to/filter-llm-output-artifacts.md): Strip speaker prefixes and roleplay markup spans from streamed Generate / GenerateAndSpeak output. - [Keep merchant prices deterministic](https://docs.tryllengine.com/v0.10/how-to/keep-merchant-prices-deterministic.md): Worked example — game code owns the number, the model owns the wording. - [Define and handle tool calls](https://docs.tryllengine.com/v0.10/how-to/define-and-handle-tool-calls.md): Declare tools, receive calls, and return results to a paused turn. - [Constrain output with a grammar](https://docs.tryllengine.com/v0.10/how-to/constrain-output-with-a-grammar.md): Attach a GBNF grammar to a `Generate` node for exact output shape. - [Use canned responses and guardrails](https://docs.tryllengine.com/v0.10/how-to/use-canned-responses-and-guardrails.md): Short-circuit jailbreaks and off-topic prompts before the model runs. - [Build an immersion guard](https://docs.tryllengine.com/v0.10/how-to/build-an-immersion-guard.md): Gate out-of-character and out-of-world player lines before they reach the NPC, and drop the rejected turn from history. - [Add voice output to an agent](https://docs.tryllengine.com/v0.10/how-to/add-voice-to-an-agent.md): Give an NPC a voice with `GenerateAndSpeak` or `Speak`, end to end. - [Add lip sync to a character](https://docs.tryllengine.com/v0.10/how-to/add-lip-sync-to-a-character.md): Move a character's mouth with its voice — `emit_visemes` plus `TryllLipSync` (Unity) or Tryll Lip Sync (Unreal), or the raw viseme events. - [Clone a voice from an audio sample](https://docs.tryllengine.com/v0.10/how-to/clone-a-voice.md): Zero-shot voice cloning from a short reference recording. - [Design a voice clip with Qwen3-TTS](https://docs.tryllengine.com/v0.10/how-to/design-a-voice-with-qwen3-tts.md): Make a reference clip from a text description with Qwen3-TTS VoiceDesign, and how to write the description. - [Add emotions to a voice](https://docs.tryllengine.com/v0.10/how-to/add-emotions-to-a-voice.md): One cloned clip per mood as delivery modes on a voice profile, switched at runtime with `SetAgentDeliveryMode`. - [Use voice input](https://docs.tryllengine.com/v0.10/how-to/use-voice-input.md): Stream microphone PCM to the server for speech-to-text. - [Bias voice input with hotwords](https://docs.tryllengine.com/v0.10/how-to/use-voice-input-hotwords.md): Bias recognition toward proper nouns and game-specific vocabulary. - [Add lip sync to a MetaHuman (Unreal)](https://docs.tryllengine.com/v0.10/how-to/add-lip-sync-to-metahuman.md): Make a MetaHuman's mouth follow an agent's TTS voice with Epic's neural model or the viseme track (Unreal, separate Tryll MetaHuman Lip Sync plugin). - [Use your own local model](https://docs.tryllengine.com/v0.10/how-to/use-your-own-local-model.md): Register a GGUF file already on disk, with no Hugging Face download. - [Use a LoRA adapter](https://docs.tryllengine.com/v0.10/how-to/use-a-lora-adapter.md): Run an LLM node with a GGUF LoRA adapter — where to put the file, how to set it on the node, and how to tune its scale. - [Pin and unpin models](https://docs.tryllengine.com/v0.10/how-to/pin-and-unpin-models.md): Keep a model warm in memory, or release it explicitly. - [Verify required models before Play](https://docs.tryllengine.com/v0.10/how-to/verify-models-before-play.md): Fail the build early when a workflow references a model that will not ship. - [Estimate memory footprint](https://docs.tryllengine.com/v0.10/how-to/estimate-memory-footprint.md): Work out RAM and VRAM cost before shipping. - [Ship storage folders for builds](https://docs.tryllengine.com/v0.10/how-to/ship-storage-folders-for-builds.md): Get relative-path storage files into a packaged build so they resolve at runtime. - [Report a bug](https://docs.tryllengine.com/v0.10/how-to/report-a-bug.md): Report a bug — identify its kind, collect the server log, crash dump, editor log or Agent Log export it needs, and post it in the Discord Bug Hunt channel. - [Compare tool-call models](https://docs.tryllengine.com/v0.10/how-to/compare-tool-call-models.md): Catalog exact-accuracy on the Tryll-authored suites and the BFCL slice, so you pick a model by job rather than by size. - [Design a tool-call prompt](https://docs.tryllengine.com/v0.10/how-to/design-a-tool-call-prompt.md): Shape tool schemas and the ToolCall system prompt so small models fill the right slots — name "unfiltered", keep argument count down. - [Fix tool-call text in answers](https://docs.tryllengine.com/v0.10/how-to/fix-tool-call-text-in-answers.md): Diagnose raw tool-call markup (`<|tool_call>…`, `[TOOL_CALLS]`) in a reply — speech node told to call a tool, an unparsed call under `call_or_answer`, or leaked history. - [Localize prompts with your localization system](https://docs.tryllengine.com/v0.10/how-to/localize-prompts.md): Tick Localized on a prompt and resolve the Text ID through your own localization system before the agent is created. - [Ship an agent in another language](https://docs.tryllengine.com/v0.10/how-to/ship-in-another-language.md): Set the session locale once — TTS language, STT hints, per-locale content files, and prompt directives follow. ## Workflow Nodes - [Workflow Nodes](https://docs.tryllengine.com/v0.10/reference/nodes/index.md): Every node type, its exits, and which ones need a model. Start here when choosing a node. - [Generate](https://docs.tryllengine.com/v0.10/reference/nodes/generate.md): Run a language model on the projected dialogue and emit its answer. - [Branch](https://docs.tryllengine.com/v0.10/reference/nodes/branch.md): Model-free conditional routing on a slot or agent variable (`then_exit`/`else_exit`). - [Canned Response](https://docs.tryllengine.com/v0.10/reference/nodes/canned-response.md): Emit a fixed reply chosen from a string storage — no model involved. - [Classify Attributes (LLM)](https://docs.tryllengine.com/v0.10/reference/nodes/classify-attributes-llm.md): Score several specialist attributes in one cached call; route on default or triggered. - [Classify Intent (LLM)](https://docs.tryllengine.com/v0.10/reference/nodes/classify-intent-llm.md): Label the user message by first-token logprob on a small model. - [Classify Intent](https://docs.tryllengine.com/v0.10/reference/nodes/classify-intent.md): Label the user message by top-1 embedding similarity; exits `found`/`not_found`. - [Generate and Speak](https://docs.tryllengine.com/v0.10/reference/nodes/generate-and-speak.md): Generate and synthesize speech in one fused streaming step. - [Instruction](https://docs.tryllengine.com/v0.10/reference/nodes/instruction.md): Inject a static instruction into the prompt via the `{{#instructions}}` block. - [Intent to Instruction](https://docs.tryllengine.com/v0.10/reference/nodes/intent-to-instruction.md): Map an intent label to an instruction through a `Map`-kind string storage. - [Pause](https://docs.tryllengine.com/v0.10/reference/nodes/pause.md): Suspend the turn between nodes and hand control back to the client. - [Regex Guardrail](https://docs.tryllengine.com/v0.10/reference/nodes/regex-guardrail.md): Match input against patterns and route away before spending a model call. - [Filter grammar](https://docs.tryllengine.com/v0.10/reference/nodes/retrieve-filter-grammar.md): The JSON predicate grammar for metadata-filtered retrieval, shared with intent nodes. - [Retrieve](https://docs.tryllengine.com/v0.10/reference/nodes/retrieve.md): Embed the input, search an embedded string storage or named mutable KB, attach the hits as knowledge. - [Speak](https://docs.tryllengine.com/v0.10/reference/nodes/speak.md): TTS-only — voice text another node already produced. - [Summarize](https://docs.tryllengine.com/v0.10/reference/nodes/summarize.md): Fold ageing turns into a rolling summary so long conversations stay coherent at a fixed token cost. - [Tool Call](https://docs.tryllengine.com/v0.10/reference/nodes/tool-call.md): Advertise tools, let the model call them, and control notify/pause/result projection. - [Transform](https://docs.tryllengine.com/v0.10/reference/nodes/transform.md): Model-free Mustache rendering into a slot; emits nothing on the wire. - [Write to Memory](https://docs.tryllengine.com/v0.10/reference/nodes/write-to-memory.md): Experimental upsert into a named mutable knowledge base. ## Reference - [Reference](https://docs.tryllengine.com/v0.10/reference/index.md): Map of every declarative reference surface. - [Glossary](https://docs.tryllengine.com/v0.10/reference/glossary.md): Canonical definition of every Tryll term. Check here before guessing what a word means. - [Agent Parameters](https://docs.tryllengine.com/v0.10/reference/agent-parameters.md): Every field on `CreateAgentRequest`, grouped by what it controls. - [Turn Inspector](https://docs.tryllengine.com/v0.10/reference/turn-inspector.md): The shared per-turn diagnostics panel — every block, when it appears, and why one is missing. Hosted by Chat, Agent Log, and Dialog Lab. - [Dialog Lab headless run](https://docs.tryllengine.com/v0.10/reference/dialog-lab-headless.md): The headless Dialog Lab run config, summary JSON, and exit codes (Unity and Unreal). - [Agent Log format](https://docs.tryllengine.com/v0.10/reference/agent-log-format.md): The Agent Log export file — header, events, coalescing, and what a saved report can contain. - [Turn Diagnostics JSON](https://docs.tryllengine.com/v0.10/reference/turn-diagnostics-json.md): Every field of the `TurnComplete.debug_info` payload — the envelope, per-node `parameters`/`input`/`output`/`engine` sections, and why a key is absent. Read before interpreting the inspector's Raw JSON block. - [Wire Protocol](https://docs.tryllengine.com/v0.10/reference/wire-protocol.md): Byte-level contract — framing, message types, and flows for writing a third-party client. - [Error Codes](https://docs.tryllengine.com/v0.10/reference/error-codes.md): Every error code, what causes it, and how a client should react. - [Model Management](https://docs.tryllengine.com/v0.10/reference/model-management.md): The model catalog, variants, download/load/unload, and model status. - [Voice Profile](https://docs.tryllengine.com/v0.10/reference/voice-profile.md): An agent's one voice: `VoiceProfile` fields, validation, delivery modes and intensity, what a mode means per TTS model, and `SetAgentVoice` / `SetAgentDeliveryMode`. - [TTS Models](https://docs.tryllengine.com/v0.10/reference/tts-models.md): Which Sherpa-ONNX TTS families Tryll supports (Supertonic, Pocket) and why the rest — Kokoro, Kitten, Piper/VITS, Matcha, ZipVoice — cannot be loaded. Check before adding any voice. - [STT Models](https://docs.tryllengine.com/v0.10/reference/stt-models.md): The shipped speech recognizers — offline versus streaming, languages and the session locale, hotword support, the Silero VAD dependency, and what cannot be pinned on its own. - [String Storage](https://docs.tryllengine.com/v0.10/reference/string-storage.md): Named string containers — `List`/`Map`/`Multimap`, inline vs. relative file path. - [Embedded String Storage](https://docs.tryllengine.com/v0.10/reference/embedded-string-storage.md): Vector-indexed storage for RAG — config-file (Path A) vs. inline (Path B), metadata schema. - [Server Configuration](https://docs.tryllengine.com/v0.10/reference/server-configuration.md): Every field in `server-config.json` and `models.json`. - [Telemetry](https://docs.tryllengine.com/v0.10/reference/telemetry.md): What usage telemetry collects and how to turn it off. ## Release Notes - [Release Notes](https://docs.tryllengine.com/v0.10/release-notes/index.md): Index of every released version, newest first. Start here to find the version you shipped. - [v0.3.0](https://docs.tryllengine.com/v0.10/release-notes/v0.3.0.md): Voice output (TTS), Unity graph editor and Model Manager, bundled server, file-path storage. - [v0.4.0](https://docs.tryllengine.com/v0.10/release-notes/v0.4.0.md): Mandatory one-shot `CreateSession`, cancel/pause/resume, chat-template tool calling, voice cloning. - [v0.5.0](https://docs.tryllengine.com/v0.10/release-notes/v0.5.0.md): Slots, agent variables, model-visible tool results, GBNF grammars, dialog-history editing, KV-cache control. - [v0.6.0](https://docs.tryllengine.com/v0.10/release-notes/v0.6.0.md): Turn inspector, Agent Log, Dialog Lab, manual GPU throttle, background agents, hybrid retrieval, Branch node, output artifact filtering. - [v0.7.0](https://docs.tryllengine.com/v0.10/release-notes/v0.7.0.md): Dialog export/import into your own save, one session language for TTS/STT/content/prompts, per-model RAM/VRAM placement and catalog-derived engines, pause timeouts, Orpheus and Maya1 voices with voice description and delivery, measured tool-call model comparison. - [v0.8.0](https://docs.tryllengine.com/v0.10/release-notes/v0.8.0.md): Rolling summaries via `Summarize`, experimental mutable knowledge bases and game-memory saves, viseme lip sync, client-sent voice turns and per-model hotword biasing, user model catalog, deployment modes and process-wide storage root, per-agent events. - [v0.9.0](https://docs.tryllengine.com/v0.10/release-notes/v0.9.0.md): One voice profile per agent with delivery modes, LoRA adapters on LLM nodes, `ClassifyAttributesLLM`, prompts localized through the game's string tables, Qwen3-TTS, Agent Log export, Use Cases and Model Benchmarks sections. ## Licence - [Licence](https://docs.tryllengine.com/v0.10/legal/licence.md): The Tryll Licence that covers the plugins, the Python client and the server. A placeholder until the first public release. ## Model Benchmarks - [Model Benchmarks](https://docs.tryllengine.com/v0.10/model-benchmarks/index.md): How catalog models do on the jobs Tryll gives them: model cards and per-trait leaderboards, provisional and immersion-guard only so far. Open before recommending a model for a guard. - [Index](https://docs.tryllengine.com/v0.10/model-benchmarks/leaderboards/index.md) - [General guard](https://docs.tryllengine.com/v0.10/model-benchmarks/leaderboards/general-guard/index.md) - [Generation, 1K prompt](https://docs.tryllengine.com/v0.10/model-benchmarks/leaderboards/generation-1k-prompt/index.md) - [Generation, 4K prompt](https://docs.tryllengine.com/v0.10/model-benchmarks/leaderboards/generation-4k-prompt/index.md) - [Prefill, 1K prompt](https://docs.tryllengine.com/v0.10/model-benchmarks/leaderboards/prefill-1k-prompt/index.md) - [Prefill, 4K prompt](https://docs.tryllengine.com/v0.10/model-benchmarks/leaderboards/prefill-4k-prompt/index.md) - [VRAM at 8K context](https://docs.tryllengine.com/v0.10/model-benchmarks/leaderboards/vram-at-8k-context/index.md) - [World guard](https://docs.tryllengine.com/v0.10/model-benchmarks/leaderboards/world-guard/index.md) - [Index](https://docs.tryllengine.com/v0.10/model-benchmarks/models/index.md) - [Bonsai 8B (Q1_0 1-bit)](https://docs.tryllengine.com/v0.10/model-benchmarks/models/bonsai_8b_q1_0/index.md) - [Bonsai 8B (Q2_0 2-bit)](https://docs.tryllengine.com/v0.10/model-benchmarks/models/bonsai_8b_q2_0/index.md) - [Gemma 4 E2B Instruct QAT (UD-Q4_K_XL)](https://docs.tryllengine.com/v0.10/model-benchmarks/models/gemma_4_e2b_qat/index.md) - [Gemma 4 E4B Instruct (Q4_K_M)](https://docs.tryllengine.com/v0.10/model-benchmarks/models/gemma_4_e4b/index.md) - [Granite 4.2 3B Instruct (Q4_K_M)](https://docs.tryllengine.com/v0.10/model-benchmarks/models/granite_4.2_3b/index.md) - [Granite 4.2 8B Instruct (Q4_K_M)](https://docs.tryllengine.com/v0.10/model-benchmarks/models/granite_4.2_8b/index.md) - [Ling 3.0 Tiny (Q4_K_M)](https://docs.tryllengine.com/v0.10/model-benchmarks/models/ling_3.0_tiny/index.md) - [Llama 3.1 8B Instruct (Q4_K_M)](https://docs.tryllengine.com/v0.10/model-benchmarks/models/llama_3.1_8b/index.md) - [Llama 3.2 3B Instruct (Q4_K_M)](https://docs.tryllengine.com/v0.10/model-benchmarks/models/llama_3.2_3b/index.md) - [Ministral 3 3B Instruct (Q4_K_M)](https://docs.tryllengine.com/v0.10/model-benchmarks/models/ministral_3_3b/index.md) - [Ministral 3 8B Instruct (Q4_K_M)](https://docs.tryllengine.com/v0.10/model-benchmarks/models/ministral_3_8b/index.md) - [Qwen 3.5 4B (Q4_K_M)](https://docs.tryllengine.com/v0.10/model-benchmarks/models/qwen_3.5_4b/index.md) - [SmolLM2 1.7B Instruct (Q4_K_M)](https://docs.tryllengine.com/v0.10/model-benchmarks/models/smollm2_1.7b/index.md) ## Client API - [Client API](https://docs.tryllengine.com/v0.10/reference/client-api/index.md): Pick a platform to reach its full API reference. - [Unity Client API](https://docs.tryllengine.com/v0.10/reference/client-api/unity/index.md): Unity `com.tryll.client` package surface — components, assets, and settings. - [TryllClient](https://docs.tryllengine.com/v0.10/reference/client-api/unity/tryll-client.md): `TryllClient` — the singleton MonoBehaviour that owns the connection and session. - [TryllAgentComponent](https://docs.tryllengine.com/v0.10/reference/client-api/unity/tryll-agent-component.md): `TryllAgentComponent` — per-GameObject agent lifecycle and turn events. - [TryllWorkflowAsset](https://docs.tryllengine.com/v0.10/reference/client-api/unity/tryll-workflow-asset.md): `TryllWorkflowAsset` — the authored graph as a ScriptableObject. - [TryllRuntimeSettings](https://docs.tryllengine.com/v0.10/reference/client-api/unity/tryll-runtime-settings.md): `TryllRuntimeSettings` — auto-launch, storage root, and connection settings. - [TryllSpeaker](https://docs.tryllengine.com/v0.10/reference/client-api/unity/tryll-speaker.md): `TryllSpeaker` — streaming TTS playback into an AudioSource. - [TryllLipSync](https://docs.tryllengine.com/v0.10/reference/client-api/unity/tryll-lip-sync.md): `TryllLipSync` — plays the viseme track on ARKit face blendshapes. - [TryllVoiceProfile](https://docs.tryllengine.com/v0.10/reference/client-api/unity/tryll-voice-profile.md): `TryllVoiceProfile` — an agent's voice: TTS model, identity, visemes, delivery modes. - [TryllVoiceInputComponent](https://docs.tryllengine.com/v0.10/reference/client-api/unity/tryll-voice-input-component.md): `TryllVoiceInputComponent` — microphone capture and streaming STT. - [Unreal C++ API Reference](https://docs.tryllengine.com/v0.10/reference/client-api/unreal/cpp/index.md): Unreal C++ API reference (Doxygen) — `UTryllSubsystem`, `FTryllAgent`, and friends. - [Unreal (Blueprint)](https://docs.tryllengine.com/v0.10/reference/client-api/unreal/blueprint-catalog.md): Every Blueprint-visible node in the Unreal plugin. - [C++ Client API Reference](https://docs.tryllengine.com/v0.10/reference/client-api/cpp/index.md): C++ client library reference (Doxygen) — `TryllClient`, `AgentProxy`. - [Python](https://docs.tryllengine.com/v0.10/reference/client-api/python/index.md): Python `tryll_client` reference (mkdocstrings).