Configure

One file controls the engine: tekmerdb-server.conf. It's read once at startup — every change needs a restart, not a rebuild.

1 Edit the config file

sudo nano /opt/tekmerdb/tekmerdb-server.conf

If this file is missing, the engine starts with built-in defaults. Nothing here is hot-reloaded — the process reads it once, on boot.

2 Domain — the EU AI Act risk category

Every engine instance is locked to exactly one domain. Every PFO it stores is stamped with that domain regardless of what the caller declares, and claims that drift too far from it get rejected outright.

domain = "CriticalInfrastructure"

Valid values: Healthcare, LawEnforcement, CriticalInfrastructure, Employment, Education, Migration, LegalInterpretation, Finance, General.

⚠️ Impact: changing domain on an engine that already has data invalidates its similarity centroid. Wipe data/ and restart after switching domains — don't just flip the value in place.

3 Domain enforcement

Controls how strictly claims are checked against the domain before they're accepted.

SettingDefaultWhat it doesImpact of changing it
domain_threshold 0.70 Minimum cosine similarity to the domain centroid required for acceptance (range 0.0–1.0). Too low accepts off-domain claims; too high rejects valid edge cases. Tested working range for the energy domain: 0.65–0.80.
cold_start_inserts 10 Number of inserts accepted unconditionally before domain enforcement kicks in, while the centroid is built. Too low builds a weak centroid; too high delays enforcement. Don't set below 5.

4 Conflict & corroboration sensitivity

Controls how thoroughly each new claim is checked against existing ones.

SettingDefaultWhat it doesImpact of changing it
hnsw_top_k 20 Number of nearest-neighbour candidates evaluated per sweep after each insert. Higher catches more conflicts/corroborations but slows inserts — noticeably above 50 once you're past ~100k PFOs.
similarity_floor 0.85 Minimum cosine similarity between two PFOs before the NLI contradiction classifier is even invoked. The primary gate against false conflicts between unrelated claims. Documented safe minimum is 0.85 — going lower causes false NLI conflicts between unrelated claims in the same domain.

5 Storage durability

SettingDefaultWhat it doesImpact of changing it
flush_interval_secs 10 Seconds between Parquet flush cycles for PFOs and sources. Every write is fsync'd to the crash-recovery buffer regardless, so this only controls how stale the Parquet checkpoint can get — not crash safety. Minimum recommended: 5.

6 Network binding

SettingDefaultWhat it doesImpact of changing it
engine_host 127.0.0.1 Interface the HTTP engine binds to. 0.0.0.0 exposes it to the network — needed for Docker/remote access. The engine's PATCH endpoint has no authentication. Only bind to 0.0.0.0 behind a firewall.
engine_port 3000 Port the HTTP engine listens on. The MCP server connects to localhost:{engine_port} — the two must match.
mcp_host 0.0.0.0 Interface the MCP SSE server binds to when started with --sse. SSE mode has no authentication either — only expose it on trusted networks.
mcp_port 3001 Port the MCP SSE server listens on. Remote agents connect to http://{server_ip}:{mcp_port}/sse. Must differ from engine_port.

7 Apply your changes

sudo systemctl restart tekmerdb-server
# only if you changed mcp_host / mcp_port:
sudo systemctl restart tekmerdb-mcp