Skip to main content

Configuration Reference

Complete reference for the nao_config.yaml file. This page is auto-generated from the Pydantic models in cli/nao_core/config/. Values wrapped in ${{ env('VAR') }} or {{ env('VAR') }} are resolved from environment variables at load time.

Resolving secrets

In addition to env(), any value in nao_config.yaml can pull a secret from AWS Secrets Manager or Kubernetes Secrets, so deployments can keep credentials out of plain environment variables:

AWS payloads and nested fields

An AWS secret payload must be a JSON object (binary secrets are not supported). The field part is a dot-path, so nested keys are addressed with .:
The resolved value must be a scalar (string, number, or boolean); pointing at a nested object raises an error. Referencing the same secret several times in one config triggers a single backend call, the payload is cached for the duration of the load. The aws and k8s resolvers require optional dependencies: install nao-core[aws-secrets] or nao-core[k8s-secrets]. Unlike env, which resolves missing variables to an empty string and warns, aws and k8s raise a clear error at load time when a secret or field cannot be resolved.

Top-level properties

Databases

All database configurations share these common fields: Template values: columns, preview, query_history, profiling, ai_summary Patterns in include / exclude use glob syntax against schema.table (e.g. prod_*.*, analytics.dim_*).

PostgreSQL (type: postgres)

Snowflake (type: snowflake)

BigQuery (type: bigquery)

DuckDB (type: duckdb)

Connections to a local DuckDB file are locked down after connect: external access is disabled and the configuration is locked, so SQL cannot read local files, fetch remote URLs, or ATTACH another database. MotherDuck paths keep external access on, since the service itself is remote.

MotherDuck (type: motherduck)

Databricks (type: databricks)

Microsoft SQL Server (type: mssql)

Amazon Redshift (type: redshift)

StarRocks (type: starrocks)

Trino (type: trino)

ClickHouse (type: clickhouse)

Unlike other database types, ClickHouse renders all available templates by default rather than the shared default set. System databases (system, information_schema, INFORMATION_SCHEMA) are skipped unless explicitly listed in include.

Amazon Athena (type: athena)

RedshiftSSHTunnelConfig

Nested under ssh_tunnel in a Redshift database entry.

LLM

Declaring the provider inline (llm.provider, llm.api_key, …) still works but is deprecated. Run nao migrate to rewrite an existing file into the llm.providers shape.

ProviderConfig

One entry per provider under llm.providers.

BudgetConfig

A spend limit for one provider under llm.providers[].budget, enforced by the chat app and shown on its Budgets page. At least one of limit and per_user_limit is required.

ModelConfig

One entry per model under llm.providers[].models. Leave models empty to expose the provider’s built-in models.

ModelCosts

Nested under costs in a model entry. Prices are in US dollars per million tokens.

Provider authentication

Default annotation models

Used for ai_summary generation when annotation_model is not set.

Repos

Set exactly one of url or local_path: supplying both, or neither, fails validation. branch cannot be combined with local_path. include and exclude are applied to both source types. For a url repository the full repo is cloned first, then non-matching files are dropped, so the globs control what ends up in your context rather than what is fetched.

Notion

Confluence

Cloud requires both email and api_token. Data Center/Server requires either personal_access_token or both username and password. At least one of pages, page_trees, labels, or spaces must be set. See the Confluence context provider guide for what gets synced and where it lands.

Slack

MCP

Skills

Test

Defaults for nao test. Every property is overridden by the matching command line flag.

ComparisonConfig

Nested under test.comparison. Controls how results are compared to the expected data.

Example

JSON Schema

The raw JSON Schema is available at config-schema.json.