Full Configuration Reference
The root Config struct is serialised as config.json. Below is a field-level reference. All credential fields (SecureString) are resolved from .security.yml — see .security.yml Reference.
Root fields
| JSON key | Type | Description |
|---|---|---|
agents | AgentsConfig | Agent defaults and named agent list |
bindings | []AgentBinding | Map chat channels to specific agents |
session | SessionConfig | Conversation history storage options |
channels | ChannelsConfig | Chat platform credentials and settings |
providers | ProvidersConfig | Legacy provider config (deprecated, use model_list) |
model_list | SecureModelList | Model-centric LLM configuration |
gateway | GatewayConfig | HTTP gateway settings (port, TLS, auth) |
tools | ToolsConfig | Tool enable/disable, paths, rate limits |
exchanges | ExchangesConfig | Exchange API credentials (Binance, OKX, Bitkub, BinanceTH, Settrade) |
trading_risk | TradingRiskConfig | Global trading risk controls |
heartbeat | HeartbeatConfig | Scheduled/periodic task config |
devices | DevicesConfig | IoT device config (I2C, SPI) |
voice | VoiceConfig | Voice transcription settings |
build_info | BuildInfo | Injected at build time — do not edit |
update | UpdateConfig | Auto-update settings |
Agent defaults (agents.defaults)
| Field | Description |
|---|---|
workspace | Working directory for the agent |
provider | Default provider name |
model_name | Default model alias from model_list |
model_fallbacks | Ordered list of fallback model aliases |
max_tokens | Max output tokens per turn |
context_window | Context window size |
max_tool_iterations | Max tool calls per turn |
summarize_message_threshold | Message count before history is summarised |
routing | Light-vs-primary model routing config |
Exchanges (exchanges)
{
"exchanges": {
"binance": { "accounts": [{ "name": "YOUR_ALIAS_NAME", "api_key": "BINANCE_KEY", "secret": "BINANCE_SECRET" }] },
"binance_th": { "accounts": [{ "name": "YOUR_ALIAS_NAME", "api_key": "BINANCETH_KEY", "secret": "BINANCETH_SECRET" }] },
"bitkub": { "accounts": [{ "name": "YOUR_ALIAS_NAME", "api_key": "BITKUB_KEY", "secret": "BITKUB_SECRET" }] },
"okx": { "accounts": [{ "name": "YOUR_ALIAS_NAME", "api_key": "OKX_KEY", "secret": "OKX_SECRET" ,"passphrase": "OKX_PASSPHRASE"}] },
"settrade": { "accounts": [{ "name": "YOUR_ALIAS_NAME", "api_key": "SETTRADE_KEY","secret": "SETTRADE_SECRET" }] }
}
}
All api_key passphrase and secret values resolve from .security.yml.
Minimal working example
{
"model_list": [
{ "model_name": "claude", "model": "claude-sonnet-4-6", "api_key": "ANTHROPIC_API_KEY" }
],
"agents": {
"defaults": { "model_name": "claude", "workspace": "~/.khunquant/workspace" }
},
"channels": {
"pico": { "enabled": true }
}
}