Server Configuration¶
The Tryll server reads two JSON files at startup: server-config.json
(server settings — this page) and models.json (model catalog — see
model management). A third file,
downloads.json, is written and maintained by the server itself at
runtime and should not be edited by hand.
This page documents every field of server-config.json. Relative paths
inside the file are resolved against the directory containing the
config file — not the process's working directory.
Location and override¶
The default location is data/server-config.json, symlinked next to
the server executable at build time. Two CLI flags can override values
without editing the file:
Both flags can be combined. --port overrides the port field from the
config file and is how ManagedServer (C++ and Python clients) ensures
the port it connects to matches the port the server listens on.
Missing fields keep their defaults; the server runs with all defaults even if the file is absent.
Minimal config¶
<!-- sample only; not a committed file -->
{
"port": 9100,
"thread_count": 4,
"models_catalog_path": "models.json",
"models_download_dir": ".app-data/models",
"logs_dir": ".app-data/logs",
"log_mode": "dev",
"log_level": "trace"
}
Fields¶
Networking¶
| Field | Type | Default | Description |
|---|---|---|---|
port |
uint16 | 9100 |
TCP port the server listens on. The wire protocol is plain TCP; clients connect to localhost:<port>. |
thread_count |
uint | 4 |
Size of the server's I/O thread pool. Increase for higher concurrency across many simultaneous sessions; does not affect single-agent inference throughput, which is bounded by the server's one-model-at-a-time inference queue. |
Model catalog¶
| Field | Type | Default | Description |
|---|---|---|---|
models_catalog_path |
string | "data/models.json" |
Path to the model catalog JSON. Relative paths resolved from the config file's directory. |
models_download_dir |
string | "data/.models/" |
Directory where HuggingFace-downloaded model files are stored. The server creates the directory if it does not exist. Also the location of downloads.json, the runtime-maintained record of completed downloads. |
Logging¶
| Field | Type | Default | Description |
|---|---|---|---|
logs_dir |
string | "data/logs" |
Directory for log files. Set to "" (empty string) for console-only logging. The directory is created if it does not exist. |
log_mode |
string | "production" |
Log file naming. "production" writes a single rotating tryll.log (10 MiB × 5 files). "dev" writes a new tryll_<timestamp>.log per process start with no rotation. |
log_level |
string | "info" |
Minimum log level. One of "trace", "debug", "info", "warn", "error". Use "trace" to capture per-node workflow events for debugging graphs. |
In both log modes the console sink is always active.
Node defaults¶
| Field | Type | Default | Description |
|---|---|---|---|
default_canned_responses_path |
string | "data/default-canned-responses.txt" |
Path to the default response list for canned-response nodes that do not specify their own string storage. UTF-8 text, one response per line; blank lines and lines starting with # are skipped. |
default_guardrail_patterns_path |
string | "data/default-guardrail-patterns.txt" |
Path to the default regex list for human-message-guardrail nodes that do not specify their own string storage. Same format as above; patterns match case-insensitively. |
Both files are loaded lazily on first use; an absent file on startup is fine as long as no node ever requests the default list.
Diagnostics¶
| Field | Type | Default | Description |
|---|---|---|---|
include_interaction_in_diagnostics |
bool | false |
When true, and the client sets enable_diagnostics = true on CreateAgentRequest, the current interaction's components are serialised into TurnDiagnostics.interaction on TurnCompleteResponse. Each component appears as a flat JSON object with a "_type" discriminator. Intended for debug sessions; payload grows linearly with component count. |
Log-mode details¶
| Value | File naming | Rotation |
|---|---|---|
"production" |
tryll.log |
10 MiB max, 5 files kept |
"dev" |
tryll_2026-04-06_14-30-00_123.log |
No rotation; new file per run |
Related¶
- Model Management —
models.jsonschema and lifecycle. - How to run the Tryll server — putting the config into practice.
- Error codes — what happens when a config-driven path is missing or malformed.
- Glossary