Skip to main content
NeuralCleave is configured with a single TOML file at ~/.neuralcleave/config.toml.

Secret resolution

Instead of hard-coding an API key:
Use one of two resolvable prefixes:
A missing ENV: variable resolves to an empty string, not an error. An unresolvable op:// reference raises a clear error naming the missing op CLI or the failed lookup.

Full reference

[agent]

[models]

See LLM Providers for the full provider list and Settings API for changing these at runtime.

[memory]

[voice]

[gateway]

[security]

Controls the exec-approval gate consulted by the shell and browser tools. Off by default — a command runs immediately with no prompt unless you opt in.
  • require_shell_approval — when true, every shell and browser tool call is queued and blocks until approved. When a pending request is queued, NeuralCleave also sends a notification into the channel that triggered it (Slack, Telegram, Discord, …) — reply approve <id-prefix> or deny <id-prefix> right there, or use neuralcleave approvals approve/deny.
  • security_mode"deny" denies every gated command outright; "allowlist" auto-approves commands matching a stored allowlist entry (see neuralcleave approvals allowlist add/list/remove) and falls through to ask_mode for the rest; "full" disables the gate entirely (auto-approves everything, equivalent to require_shell_approval = false).
  • ask_mode — only consulted when security_mode = "allowlist": "off" never prompts (an unmatched command is denied silently), "on-miss" prompts only when no allowlist entry matches (the default), "always" prompts even on an allowlist match.

[ui]

[channels.<name>]

Configure each channel adapter under its own key, e.g.:
Every channel adapter’s secret fields resolve through the same ENV:/op:// mechanism as [models].

Hot-reload

The gateway watches config.toml for changes, but only [security] (require_shell_approval, security_mode, ask_mode) is actually applied live — the same mutation POST /api/v1/approvals/policy does. Model/API-key settings and channel connections are not hot-reloaded despite being watched — restart the gateway (or use neuralcleave channels remove/add for channel config) after changing those.