Reference
Configuration
Settings come from a config file, the command line, or both. Command line arguments are applied last, so they win. Every parameter is readable with CONFIG GET, and all but bind and port can be changed at runtime.
Where settings come from
The file format is one name value pair per line. Everything after a # is a comment, blank lines are ignored, and every value in klyro.conf.sample is the default, so an empty file behaves exactly like no file at all.
Network
| Parameter | Default | Meaning |
|---|---|---|
| bind | 0.0.0.0 | Address to listen on. Restart required. |
| port | 7171 | Port to listen on. Restart required. |
| maxclients | 10000 | Concurrent connections before new ones are refused |
Persistence
| Parameter | Default | Meaning |
|---|---|---|
| dbfilename | klyro.dump | Snapshot path, loaded at startup if present |
| save-interval | 60 | Seconds between autosave checks; a save only happens if something changed |
Keyspace and protocol
| Parameter | Default | Meaning |
|---|---|---|
| sweep-interval | 1000 | Milliseconds between active expiry sweeps |
| max-string-bytes | 536870912 | Largest value a string may grow to |
| proto-max-bulk-len | 536870912 | Largest bulk string one argument may carry |
| client-output-buffer-limit | 268435456 | Unsent reply allowed to pile up per client |
| scan-default-count | 10 | COUNT used by SCAN when the caller gives none |
| zadd-max-pairs | 128 | Most score/member pairs one ZADD may carry |
| maxmemory | 0 | Bytes the process may hold before eviction starts; 0 is no limit |
| maxmemory-policy | noeviction | Which key to drop at the limit; one of the eight Redis policies |
| maxmemory-samples | 5 | Keys sampled per eviction round |
Memory indexes
| Parameter | Default | Meaning |
|---|---|---|
| mem-max-topk | 100 | Ceiling on a memory query's TOPK |
| mem-max-candidates | 500 | Candidates each index contributes before fusion |
| mem-max-scan | 1000000 | Ceiling on vector comparisons in one query |
| mem-max-dim | 4096 | Widest embedding an index may be created with |
| mem-max-text-bytes | 65536 | Ceiling on one record's text |
| mem-max-records | 0 | Records per index; 0 means no limit |
| mem-max-terms-per-doc | 1024 | Tokenizer cap, so one document cannot dominate the index |
| mem-recency-halflife | 604800 | Default half-life for a new index, in seconds |
mem-max-candidates sits above mem-max-topk on purpose. Fusion can only reorder what it is given, so a candidate set no larger than the answer would make the weights meaningless.
Changing settings at runtime
INFO reports what the server is doing, one text blob of # Section headers over key:value lines. Ask for one section by name, including the memory-specific one: INFO memorydb.
