Config — kuda.toml
Top level
| field | type | required | notes |
|---|---|---|---|
repo | RepoCfg | optional | — |
extract | ExtractCfg | optional | — |
summarize | SummarizeCfg | optional | — |
store | StoreCfg | optional | — |
cards | CardsCfg | optional | — |
workspace | WorkspaceCfg | optional | — |
[repo]
| field | type | required | notes |
|---|---|---|---|
name | string | optional | Defaults to the directory basename. |
root | path | optional | Repo root; default = the toml's dir. |
[extract]
| field | type | required | notes |
|---|---|---|---|
kinds | list | optional | Impl kinds tried in order: "manifest" | "treesitter" | "lsp". |
lsp_server | string | optional | Server command for the lsp adapter (per-language later). |
exclude | list | optional | Extra dir/file names skipped during walks — beyond the built-in noise set (default_excludes). Keeps generated, vendored, and build output out of index, hashes, and agent prompts (agent cost is per-file fed in). |
[summarize]
| field | type | required | notes |
|---|---|---|---|
kind | string | optional | "template" (deterministic, default) | "acp" (agent-spawned). "llm" is a backlog adapter — ACP is the semantic path. |
acp_cmd | string | optional | ACP agent command for kind="acp" — spawns per summarize. |
file_cards | bool | optional | L1.5 per-file cards — chunked agent summaries per source file. Opt-in: ~10-50x the prompt count of module cards, bounded by per-file hash-skip. |
provider | string | optional | Provider id for the llm adapter; key resolves via secrets chain. |
model | string | optional | — |
[store]
| field | type | required | notes |
|---|---|---|---|
kind | string | optional | — |
path | path | optional | L2 index path — rebuildable, gitignored. |
[cards]
| field | type | required | notes |
|---|---|---|---|
dir | path | optional | Committed artifacts dir: index.yaml + modules/*.yaml. |
[workspace]
| field | type | required | notes |
|---|---|---|---|
roots | Vec<PathBuf> | optional | Sibling repo roots indexed together. |
resolve_git_deps | bool | optional | Resolve git = ".../org/repo" manifest deps to siblings. |
Constraints
deny_unknown_fields: typos in field names fail the load.extract.kindsresolves to adapter crates (manifest,treesitter,lsp); unknown kinds warn atkuda sync.summarize.kindistemplate(default) oracp;acprequiresacp_cmdand falls back to template on failure.