Configuration Reference

Decapod project policy is defined in .decapod/config.toml. This file should be committed to source control and is the primary mechanism for humans to communicate global rules to agents.

The [init] Section

Governs the behavior of the decapod init command.

KeyTypeDefaultDescription
specsbooltrueIf true, scaffolds living documentation under .decapod/managed/specs/.
diagram_styleenum"ascii"Preferred style for generated architecture diagrams ("ascii" or "mermaid").
entrypointslist[...]The agent entrypoint files to maintain (e.g., AGENTS.md, CLAUDE.md).

The [repo] Section

Defines the operational policy and metadata for the repository.

KeyTypeDefaultDescription
product_namestringNoneThe canonical name of the software product.
product_summarystringNoneA high-level description of the product's purpose.
architecture_directionstringNoneThe intended architectural style (e.g., "monolithic", "event-driven").
product_typestringNoneCategorization (e.g., "cli", "library", "service").
done_criteriastringNoneThe global definition of "done" that all work must satisfy.
primary_languageslist[]The primary programming languages used in the repository.
detected_surfaceslist[]Entrypoints and interfaces detected in the repo (e.g., "cargo", "npm").
external_trackerboolfalseWhether Decapod should expect and validate external issue references.
container_workspacesbooltrueIf true, Decapod will strongly encourage/enforce Docker isolation for worktrees.
backendenum"local"Storage backend for the project todo path ("local" or "cloud"). Cloud uses the binary-owned Propodus endpoint and GitHub origin identity.

Cloud service details are intentionally not project configuration. Decapod owns the Propodus deployment defaults in the binary, derives repo_id from the GitHub origin, and keeps credentials machine-local.

The [decision] Section

The optional decision provider supplies structured observations to Decapod's assurance result. It does not make policy decisions or replace governance.

KeyTypeDefaultDescription
providerenum"none""none" keeps operation local; "jev" enables the bounded Jev trajectory-satisfaction observation.

When Jev is enabled, Decapod reads the API credential from the machine environment variable TYPESAFE_API_KEY, falling back to the machine-local ~/.local/share/decapod/secrets.json file (or the XDG_DATA_HOME equivalent). Running decapod init --decision-provider jev persists an explicitly supplied environment key to that file with restrictive permissions. The file is separate from the Propodus session_token.json; credentials are never written to this project file. Jev uses TypeSafe's documented System One API. A missing credential, unavailable service, timeout, or malformed response yields no_observation; it never clears an interlock or satisfies a proof gate.

For an initialized project, decapod init --refresh reopens the interactive initialization questionnaire with the current configuration as each default. Pressing Enter preserves a setting; selecting another option can enable or disable it, including the decision provider. The refresh path preserves the existing repository setup and does not require --force.

With an active trajectory run, every Jev attempt is retained in the schema-versioned jev section of .decapod/governance.json. A new trajectory run resets that working-tree ledger, while committed prior ledgers remain recoverable through Git history. The ledger is advisory evidence and is not included as a governance authority or completion proof.

The live semantic corpus is separate from normal validation and must be enabled explicitly with DECAPOD_RUN_JEV_EVAL=1; it emits machine-readable observations for comparison and does not interpret them as policy. See the repository README for the exact command and corpus scope.

Schema Versioning

Decapod uses a schema_version key at the root to ensure forward and backward compatibility as the governance kernel evolves.

schema_version = "1.0.0"

[init]
specs = true
diagram_style = "mermaid"

[repo]
product_name = "decapod"
container_workspaces = true
done_criteria = "Validate passes and all unit tests are green."