Full Configuration Reference
Kyber uses two files: ~/.kyber/config.json for settings and ~/.kyber/.env for secrets.
config.json (settings only — no secrets)
{
"agents": {
"defaults": {
"workspace": "~/.kyber/workspace",
"provider": "openrouter",
"chatProvider": "",
"taskProvider": "",
"maxTokens": 8192,
"temperature": 0.7,
"timezone": "",
"backgroundProgressUpdates": true
}
},
"providers": {
"openrouter": { "apiBase": null, "chatModel": "", "taskModel": "", "model": "" },
"anthropic": { "chatModel": "", "taskModel": "", "model": "" },
"openai": { "chatModel": "", "taskModel": "", "model": "" },
"deepseek": { "chatModel": "", "taskModel": "", "model": "" },
"gemini": { "chatModel": "", "taskModel": "", "model": "" },
"groq": { "chatModel": "", "taskModel": "", "model": "" },
"custom": [
{
"name": "my-provider",
"apiBase": "https://your-endpoint.com/v1",
"chatModel": "",
"taskModel": "",
"model": ""
}
]
},
"channels": {
"discord": {
"enabled": false,
"allowFrom": [],
"allowGuilds": [],
"allowChannels": [],
"requireMentionInGuilds": true,
"maxAttachmentMb": 20,
"typingIndicator": true
},
"telegram": {
"enabled": false,
"allowFrom": [],
"proxy": null
},
"whatsapp": {
"enabled": false,
"bridgeUrl": "ws://localhost:3001",
"allowFrom": []
}
},
"gateway": { "host": "0.0.0.0", "port": 18790 },
"dashboard": { "host": "127.0.0.1", "port": 18890, "allowedHosts": [] },
"tools": {
"web": { "search": { "maxResults": 5 } },
"exec": { "timeout": 60, "restrictToWorkspace": false },
"skillScanner": {
"useLlm": true,
"useBehavioral": true,
"useVirustotal": false,
"useAidefense": false,
"enableMeta": true,
"llmModel": ""
}
}
}.env (secrets)
All API keys, bot tokens, and auth tokens live in ~/.kyber/.env:
# Provider API keys
KYBER_PROVIDERS__OPENROUTER__API_KEY=sk-or-v1-xxx
KYBER_PROVIDERS__ANTHROPIC__API_KEY=sk-ant-xxx
KYBER_PROVIDERS__OPENAI__API_KEY=sk-xxx
KYBER_PROVIDERS__DEEPSEEK__API_KEY=sk-xxx
KYBER_PROVIDERS__GEMINI__API_KEY=xxx
KYBER_PROVIDERS__GROQ__API_KEY=xxx
# Custom provider keys (name uppercased, hyphens/spaces become underscores)
KYBER_CUSTOM_PROVIDER_MY_LOCAL_API_KEY=xxx
# Tool keys
KYBER_TOOLS__WEB__SEARCH__API_KEY=xxx
KYBER_TOOLS__SKILL_SCANNER__LLM_API_KEY=xxx # optional, auto-detected from active provider
KYBER_TOOLS__SKILL_SCANNER__VIRUSTOTAL_API_KEY=xxx # optional, for binary scanning
KYBER_TOOLS__SKILL_SCANNER__AI_DEFENSE_API_KEY=xxx # optional, for Cisco AI Defense
# Channel tokens
KYBER_CHANNELS__TELEGRAM__TOKEN=123456:ABC-DEF
KYBER_CHANNELS__DISCORD__TOKEN=xxx
# Dashboard auth
KYBER_DASHBOARD__AUTH_TOKEN=xxxThis file is created with 600 permissions (owner read/write only) and is managed automatically by save_config() and the dashboard.
Environment variable overrides
Any field can be overridden using environment variables with the KYBER_ prefix and __ as a nested delimiter:
export KYBER_AGENTS__DEFAULTS__PROVIDER="openai"
export KYBER_AGENTS__DEFAULTS__TEMPERATURE="0.5"Priority order (highest wins):
- Real environment variables (
export KYBER_...) ~/.kyber/.envfile~/.kyber/config.json
Migrating from older versions
If you have API keys in config.json from an older version of Kyber:
kyber migrate-secretsThis extracts all secrets to .env, blanks them from config.json, and sets file permissions to 600.