Configuration¶
Commands read models and tuning options from one merged configuration.
Precedence¶
Layered lowest priority first:
- Built-in defaults (
SearchLeanConfigdataclass) - Bundled
configs/default.yaml+ itsconfigs/llms.yamlimport <folder>/.axiomatic/config.yaml, the auto-discovered per-project config — itssearch_lean:subtree. Other Axiomatic tools read the same file, so one project config can serve all of them-c/--config <file.yaml>, repeatable, passed before the verb--overrides KEY=VALUEdot-notation overrides, also before the verb
Config files and overrides use top-level keys (informalize_llm,
embed_batch_size, ...). Only the per-project .axiomatic/config.yaml nests
them under search_lean:, because that file is shared with other Axiomatic tools:
# <project>/.axiomatic/config.yaml
search_lean:
informalize_llm: ${llm_configs.claude_opus_5}
informalize_concurrency: 16
Model references use OmegaConf interpolation against configs/llms.yaml.
Model aliases¶
configs/llms.yaml defines aliases such as ${llm_configs.<name>}. Each alias
includes a model id and provider settings such as thinking mode and token caps.
| Alias | Model |
|---|---|
claude_opus_5 |
anthropic:claude-opus-5 |
claude_sonnet_5 |
anthropic:claude-sonnet-5 |
claude_opus_4_8 |
anthropic:claude-opus-4-8 |
claude_opus_4_7 |
anthropic:claude-opus-4-7 |
claude_opus_4_6 |
anthropic:claude-opus-4-6 |
claude_opus_4_5 |
anthropic:claude-opus-4-5 |
claude_sonnet_4_6 |
anthropic:claude-sonnet-4-6 |
claude_sonnet_4_5 |
anthropic:claude-sonnet-4-5 |
claude_haiku_4_5 |
anthropic:claude-haiku-4-5-20251001 |
gemini_3_pro |
google_genai:gemini-3-pro-preview |
gemini_3_flash |
google_genai:gemini-3-flash-preview |
gpt_5_2 |
openai:gpt-5.2 |
gpt_5_nano |
openai:gpt-5-nano |
Non-Anthropic aliases need the corresponding optional API key.
To keep an alias's settings but change its model id, use an inline override:
--overrides informalize_llm.model=anthropic:claude-opus-5.
Keys¶
| Key | Default | Effect |
|---|---|---|
informalize_llm |
${llm_configs.claude_sonnet_5} |
Writes natural-language declaration descriptions during index |
embedding.provider |
mistral |
Embedding provider |
embedding.model |
mistral-embed |
Embedding model |
embedding.dim |
1024 |
Vector dimension |
embed_batch_size |
64 |
Embeddings per API call |
embed_max_retries |
5 |
Retries on embedding failures |
informalize_concurrency |
32 |
Parallel informalization calls |
informalize_max_retries |
5 |
Retries on informalization failures |
insert_batch_size |
1000 |
Rows per DB insert batch |
default_top_k |
20 |
Default result count |
server_token |
none | ax-prover-server API key for private-repo DB fetches. OCTO_SERVER_TOKEN takes precedence |
db_source |
hosted |
Where this project's database comes from: hosted or workflow |
corpus_release_repo |
none | owner/repo publishing corpus databases as searchdb-<target>-<version> releases. Only used under db_source: workflow; unset, corpora come from the search server |
embedding.dim is fixed at creation time
Search databases with different dimensions require a full rebuild.
db_source governs your project's database, not the corpora
db_source: workflow takes your local.db from your repo's CI
artifacts. The shared corpora (mathlib, core, …) keep coming from the
search server, because it publishes them for everyone and building them
yourself is a large job you have not asked for.
Setting corpus_release_repo is what opts corpora out of that: under
db_source: workflow it reads them from the named repo's
searchdb-<target>-<version> releases instead. Only do that if you build
and publish your own corpus databases. There is no default, so no
configuration ever probes a repo you did not name.
API keys are not part of this tree. They live in .env.secrets files and
shell environment variables. See Install.