Configuration

Configure providers, router, search, channels, memory, and permissions.

Configuration lives in a TOML file and is resolved from a fixed order of locations. Secrets are passed as environment variable names, never inline.

First-run setup

budgetai onboard              # full interactive wizard
budgetai onboard --if-needed  # safe to re-run; does nothing if set up
budgetai onboard --minimal    # provider only
budgetai onboard status       # show every section, change nothing

Change one section

budgetai configure provider --provider openai --model gpt-4o --api-key-env OPENAI_API_KEY
budgetai configure router   --router recommended
budgetai configure search   --search-provider brave --api-key-env BRAVE_SEARCH_API_KEY
budgetai configure channels

Sections: provider, router, channels, search, image-generation, memory-embedding.

Example file

[provider]
name        = "openrouter"
model       = "auto"
api_key_env = "OPENROUTER_API_KEY"
 
[router]
strategy = "recommended"
 
[memory]
embedding = "onnx-local"
 
[auth]
mode = "token"

Environment variables

Runtime settings use the BUDGETAI_* convention with nested sections as BUDGETAI_SECTION__FIELD:

export BUDGETAI_ROUTER__STRATEGY=llm_judge

Secret values set as environment variables always take precedence over anything in a config file.