Configuration basics
config.json controls everything: which reviewers run, how they’re invoked,
where to put the output. It lives at the repository root (or wherever you
point --config at).
Minimum viable config
{ "reviewers": [ { "id": "claude", "enabled": true, "command": "claude", "args": ["-p", "{prompt}", "--output-format", "json", "--allowedTools", "Read"], "prompt_via": "arg", "model": null, "result_path": "result", "timeout": 300, "paid": false } ], "synthesizer": { "reviewer_id": "claude", "prompt_file": "config/synthesis.md" }, "rubric_file": "config/rubric.md", "output_dir": ".aireview/runs", "max_parallel": 3}What the fields mean
reviewers[]— each reviewer is a command template.{prompt}and{model}are substituted at run time.prompt_via—"arg"to substitute into args,"stdin"to pipe in.result_path— dot-path into a JSON stdout envelope.nullfor plain-text CLIs.paid— drives a warning at checkpoint 1. Set it honestly;falsefor subscription/local,truefor per-token.synthesizer.reviewer_id— which reviewer synthesizes the final review. Must match an existing reviewer.rubric_file/synthesizer.prompt_file/output_dir— paths are resolved relative to the config file’s directory, not the current working directory.
See the full config reference for every field and every validation rule.