Run the Tryll Server¶
Start a Tryll server so clients can connect to it.
Prerequisites
- A Windows 10/11 machine (Linux support is evolving but not officially released).
- Either a pre-built
tryll_server.exefrom a release, or the source tree and a CMake + Visual Studio 2022 toolchain to build from source.
Option A — use a pre-built server¶
If you have a packaged tryll_server.exe plus its data/ folder:
- Unpack the release into a directory, e.g.
C:\tryll. - Open
data\server-config.json. The defaults are fine for local development; only change what you need. See Server Configuration for every field. - Confirm
data\models.jsonlists at least one model you can use. If not, either add a local entry (see Use Your Own Local Model) or plan to download one after connecting. -
Start the server:
You should see a log line like
Listening on 0.0.0.0:9100(or whichever port you configured). -
In a new terminal, verify the port is open:
Option B — build from source¶
If you want to hack on the server or your platform does not have a release yet:
- Install prerequisites: CMake 3.24+, Visual Studio 2022 with the C++ workload, and Git.
-
Clone the repository and configure:
The
defaultpreset uses the Visual Studio 17 2022 generator withTRYLL_VULKAN=PREBUILT, which downloads the matching Vulkan DLL — no GPU SDK needed. For a CPU-only build add-DTRYLL_VULKAN=OFF. For CUDA or ROCm see the full build notes in the internal developer docs. 3. Build: -
Run:
To point the server at a different config file:
To listen on a different port without editing the config file:
Both flags can be combined.
--portoverrides theportfield from the config file. When usingManagedServer(C++ or Python clients) or the Unreal plugin auto-launch, the port is passed automatically — you do not need to editserver-config.json.
What to edit in server-config.json¶
The fields you most often want to touch:
logs_dir— where log files land. Empty string means console-only. Default isdata/logs.log_mode—"production"rotates a singletryll.log;"dev"opens a newtryll_<timestamp>.logper run. Use"dev"while developing so you can diff runs.log_level—"info"is a fine default."trace"turns on the per-turn workflow trace, which logs every node execution — noisy but great for debugging graphs.default_canned_responses_pathanddefault_guardrail_patterns_path— server-admin fallback. Point these at files to supply defaults for CannedResponse and HumanMessageGuardrail nodes when the client has not created a string storage. Most client workflows won't need these — useCreateStringStorageRequest(inline orfile_path) instead.
Every field is documented in Server Configuration.
Verify it is working¶
In another terminal, try connecting with the C++ or Python client:
The server log should show an accept, a SessionReady, and a
ListModelsRequest.
Graceful shutdown¶
Ctrl+C in the server console triggers a clean shutdown: the server
cancels all active agent turns, closes all sessions, and exits. No
client-visible data is kept across restarts — each session starts
from scratch.