Skip to content

Configure

The gateway reads one TOML file, and every key in it is optional. It lives at %APPDATA%\system1\config.toml on Windows and ~/.config/system1/config.toml on Linux and macOS, or at any path in SYSTEM1_CONFIG; the installer creates it from config.example.toml. Environment variables override the file, and the file is read each time the server starts, so restart Claude Code sessions after a change.

Choose the provider and a fallback

[gateway]
provider = "laya"         # the primary engine
fallback = ["mock"]       # tried in order on a timeout, an error or a malformed answer; [] by default
timeout_s = 5.0           # per attempt

A fallback runs only when the primary fails. It never runs because the primary abstained: an abstention is a valid answer.

Set the confidence threshold

[gateway]
min_confidence = 0.6      # abstain below this

A request can override it with its own min_confidence. The number only means what it says once a calibration matches your engine and checkpoint; see Calibrate and evaluate.

Provider settings and secrets

Provider settings go in [providers.<name>], or in environment variables named SYSTEM1_<NAME>_<KEY> (for example SYSTEM1_LAYA_ENDPOINT). Secrets such as API keys go only in environment variables, never in the file. A non-loopback endpoint is refused unless you set allow_remote = true for that provider.

Logs

Logs always go to stderr, because stdout carries the protocol. Set log_file to also write a file, and log_level = "DEBUG" to include the question text. Every line carries the request id.

Pause System-1

/system1:toggle off pauses the routing hook, the skill picker and system1_decide from the next prompt, with no restart; /system1:toggle on resumes them and /system1:toggle status shows the state.

A broken config never stops the server: system1_health reports down and system1_decide returns config_error with the reason. Every key, default and variable is in Config keys.