Skip to content

Configuration Overview

SQLatte is configured entirely through one file: config/config.yaml, loaded relative to the project root at startup — there's no --config flag or .env requirement, though every value supports ${ENV_VAR:default} interpolation if you want secrets sourced from the environment instead of the file.

Only two sections are required to boot: llm and database. Everything else is optional and off by default.

Sections at a Glance

Section Default Purpose
app — Host, port, app name
llm required LLM provider + model (Anthropic / Gemini / Vertex AI), optional per-task model_routing
database required Trino / PostgreSQL / MySQL / BigQuery connection
mcp.sse off Network MCP transport — see MCP Overview
plugins.auth off Multi-tenant per-user DB connections, catalog/schema restrictions, catalog lock, discovery tokens, auto-session for widgets
admin — Admin panel username/password, session TTL
ldap off LDAP/Active Directory login for the admin panel and, optionally, plugins.assistant_login — see Security Overview
config_db off Persist runtime config + audit logs to PostgreSQL instead of memory
analytics off Query history, performance metrics — details
scheduler off Cron-based recurring queries — see Scheduled Queries
email off SMTP delivery for scheduled reports — details
export — CSV/Excel/HTML export formats and limits
insights on AI insights engine mode (llm_only / statistical_only / hybrid)
ops_agent off BigQuery Ops Console — see Ops Console
alarms / jira off Cost alarm scheduling + Jira ticket creation
rate_limiting off Per-endpoint request throttling — see Security Overview
ui.sections — Toggle visibility of Assistant / Demo / Analytics / Schedules / Dashboards / Ops / Admin tabs
prompts — The four editable AI prompts — see Runtime Prompts

See the Full Config Reference for every key, or jump to a specific area: Database Providers, LLM Providers, Analytics, Dashboard, Email.

Hot Reload

Most settings changed via the admin panel (/admin) apply immediately — no restart. Config edited directly in config.yaml requires a restart unless config_db is enabled, in which case runtime overrides persist and take precedence over the file on next load.