---
url: /kuda/reference/config.md
---
# 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.kinds` resolves to adapter crates (`manifest`,
  `treesitter`, `lsp`); unknown kinds warn at `kuda sync`.
* `summarize.kind` is `template` (default) or `acp`; `acp`
  requires `acp_cmd` and falls back to template on failure.
