axon.toml at startup. Most deployments only need to touch a few keys — the defaults are production-safe — but the full file is documented here so you know exactly what every option controls. Environment variables are available for every key and always take precedence over the file, making them ideal for CI, containers, or quick overrides without editing the file on disk.
Config File Location
The daemon loads configuration from these locations in order, with later sources overriding earlier ones:C:\ProgramData\Nelieo\axon.toml is created automatically by the installer or by axon-daemon.exe init.
Full Example Config
The following file documents every available option with its default value. Copy this as a starting point and remove any sections you don’t need to change.Configuration Reference
[server] — HTTP API server
[server] — HTTP API server
The IP address the daemon binds to. The default
127.0.0.1 restricts access to localhost only. Never set this to 0.0.0.0 unless the machine is behind a firewall and you have a specific multi-host use case.The port the NSP Agent API listens on. Change this only if
7842 conflicts with another service on your machine — and update every SDK client and agent to match.Maximum duration in milliseconds for standard API routes before the daemon returns a timeout error. Action routes use a separate hardcoded 120-second timeout.
Maximum HTTP request body size in bytes (default: 10 MB). Raise this only if you are sending unusually large action payloads.
[auth] — API key authentication
[auth] — API key authentication
Whether the daemon requires a valid
X-Substrate-Key header on all requests. Set to false only for local development. The daemon emits a loud startup warning and repeats it every 60 seconds when this is false.Path to the JSON file that stores hashed API keys. The daemon reloads this file on every request — adding a key with
axon-daemon.exe keygen takes effect immediately with no restart required.[rate_limit] — Per-key request limits
[rate_limit] — Per-key request limits
Toggle rate limiting on or off globally. Disable only in test environments with a single trusted caller.
Maximum state-read requests allowed per second per API key. Burst traffic beyond this limit receives a
429 Too Many Requests response.Maximum action-execution requests allowed per second per API key. Keep this conservative — actions interact with live application UI.
Maximum heap snapshot requests per minute. Heap snapshots are expensive operations that can take up to 47 seconds to complete; this default prevents accidental resource exhaustion.
How long an idle rate-limit bucket persists in memory before being evicted. Reduce this if you have many short-lived API keys.
[watcher] — Process scanner
[watcher] — Process scanner
How often (in seconds) the daemon scans the OS process list for new or removed applications. Lower values reduce detection latency at the cost of slightly higher CPU usage.
How often (in seconds) the daemon re-probes each tracked process to refresh its cached state. This is the maximum staleness of any state read through the API.
Minimum classification confidence (0.0–1.0) for a process to be tracked. Processes scored below this threshold are ignored. Raise this value if unrelated processes are being incorrectly detected as trackable apps.
Whether to probe processes whose runtime type cannot be classified. Enabling this may pick up additional apps but increases probe overhead.
Hard cap on the number of simultaneously tracked processes. The daemon stops tracking new apps once this limit is reached until existing ones exit.
[dispatcher] — Action execution
[dispatcher] — Action execution
Milliseconds to wait after an action before reading the post-action state. This gives UI animations and backend writes time to settle before the daemon captures the result.
Maximum byte length of a
verify_expression string submitted with an action. Increase this only if your agent sends unusually complex verification expressions.How long the daemon waits for a Chrome DevTools Protocol command to complete before timing out the action.
[registry] — Schema database
[registry] — Schema database
Path to the on-disk database where the daemon persists application schema definitions. This file grows as the daemon discovers new apps and schema versions.
Use an ephemeral in-memory registry instead of the on-disk database. All schema data is lost when the daemon exits. Useful for testing to guarantee a clean state on every run.
[cors] — Cross-origin requests
[cors] — Cross-origin requests
Allow any web origin to call the daemon. Set this to
true only when building a local web dashboard that needs to call the API directly. Never enable in production.Explicit list of allowed origins when
allow_all_origins is false. Example: ["http://localhost:3000", "https://your-dashboard.com"].[logging] — Log output
[logging] — Log output
Log verbosity. One of
trace, debug, info, warn, or error. Use debug during development to see per-probe timing and classified objects; use info or warn in production.Log format.
json emits structured JSON lines (suitable for log aggregation). text emits human-readable output (suitable for terminal development).Include OpenTelemetry span traces in log output. Enable when debugging performance issues across probe pipelines.
[runtime] — Async thread pool
[runtime] — Async thread pool
Number of async worker threads.
0 means auto (one thread per logical CPU core). Increase only if profiling shows the daemon is CPU-bottlenecked on large deployments with many tracked processes.[service] — Windows Service metadata
[service] — Windows Service metadata
The SCM service name — no spaces allowed. This is the name you use in PowerShell commands like
Get-Service -Name NSPDaemon. Changing this requires re-running axon-daemon.exe uninstall then axon-daemon.exe install.The human-readable name shown in
services.msc and Task Manager.The service description shown in
services.msc.Whether the service starts automatically when Windows boots. Set to
false to switch to manual start.Environment Variable Reference
Every config key has a correspondingAXON_* environment variable. Variables always override the .toml file, making them ideal for CI pipelines or per-run overrides.
Format: AXON_<SECTION>__<KEY> (double underscore separates section from key)
