Configuration

Complete reference for config.toml. All sections and their defaults.

[provider]

KeyTypeDefaultDescription
kindstring"openai_compatible"Provider type: openai_compatible, google_genai, or anthropic
api_keystringAPI key for the provider (required)
base_urlstring"https://api.openai.com/v1"API base URL

[provider.models]

KeyTypeDefaultDescription
primarystring"openai/gpt-4o"Default model for general queries
faststring"openai/gpt-4o-mini"Model for simple/quick queries
smartstring"openai/gpt-4o"Model for complex reasoning tasks
Model Routing
When all three tiers use the same model, auto-routing is disabled. See Model Routing for classification details.

[telegram]

KeyTypeDefaultDescription
bot_tokenstringTelegram bot token from @BotFather (required)
allowed_user_idsarray[]Numeric Telegram user IDs allowed to chat. Empty = no restriction.

[state]

KeyTypeDefaultDescription
db_pathstring"aidaemon.db"Path to SQLite database file
working_memory_capinteger50Max messages per session kept in memory
consolidation_interval_hoursinteger6Hours between memory consolidation runs

[terminal]

KeyTypeDefaultDescription
allowed_prefixesarray(see below)Command prefixes auto-approved without user confirmation

Default allowed prefixes:

text
ls, cat, head, tail, echo, date, whoami, pwd, find, wc,
grep, tree, file, stat, uname, df, du, ps, which, env, printenv
Shell Operators
Commands containing ; | && || $() or backticks always require approval, even if the prefix is whitelisted.

[daemon]

KeyTypeDefaultDescription
health_portinteger8080Port for the health check HTTP endpoint
health_bindstring"127.0.0.1"Bind address. Use "0.0.0.0" for external access.

[triggers.email]

KeyTypeDefaultDescription
hoststringIMAP server hostname (e.g., imap.gmail.com)
portintegerIMAP port (typically 993 for TLS)
usernamestringEmail account username
passwordstringEmail account password or app-specific password
folderstring"INBOX"IMAP folder to monitor

[mcp.<name>]

KeyTypeDefaultDescription
commandstringExecutable path or name for the MCP server
argsarray[]Command-line arguments

[browser]

KeyTypeDefaultDescription
enabledboolfalseEnable browser automation tool
headlessbooltrueRun Chrome in headless mode
screenshot_widthinteger1280Screenshot viewport width in pixels
screenshot_heightinteger720Screenshot viewport height in pixels
user_data_dirstringnullChrome user data directory for session reuse
profilestringnullChrome profile name (e.g., "Default", "Profile 1")

[skills]

KeyTypeDefaultDescription
dirstring"skills"Directory containing skill markdown files
enabledbooltrueEnable the skills system

[subagents]

KeyTypeDefaultDescription
enabledbooltrueAllow the agent to spawn sub-agents
max_depthinteger3Maximum nesting level for sub-agent recursion
max_iterationsinteger10Max agentic loop steps per sub-agent invocation
max_response_charsinteger8000Truncate sub-agent responses beyond this length
timeout_secsinteger300Sub-agent execution timeout in seconds

[cli_agents]

KeyTypeDefaultDescription
enabledboolfalseEnable CLI agent delegation tool
timeout_secsinteger600Global timeout for CLI agent execution
max_output_charsinteger16000Global max output length from CLI agents

[cli_agents.tools.<name>]

KeyTypeDefaultDescription
commandstringCommand to execute
argsarray[]Default arguments passed to the command
descriptionstringTool description shown to the LLM
timeout_secsintegernullOverride global timeout for this tool
max_output_charsintegernullOverride global max output for this tool

Example Config

config.toml
[provider]
kind = "openai_compatible"
api_key = "sk-..."
base_url = "https://api.openai.com/v1"

[provider.models]
primary = "gpt-4o"
fast = "gpt-4o-mini"
smart = "o1-preview"

[telegram]
bot_token = "123456:ABC-DEF..."
allowed_user_ids = [123456789]

[state]
db_path = "aidaemon.db"
working_memory_cap = 50

[terminal]
allowed_prefixes = ["ls", "cat", "head", "tail", "echo", "date", "whoami"]

[daemon]
health_port = 8080

[mcp.filesystem]
command = "npx"
args = ["-y", "@anthropic/mcp-filesystem"]

[browser]
enabled = true
headless = true

[skills]
dir = "skills"
enabled = true