Configuration
Config file format
Daydream reads configuration from two on-disk sources, merged per-key:
pyproject.toml[tool.daydream](low precedence).daydream.tomlat the repo root (high precedence)
Both use TOML. The .daydream.toml root keys override the corresponding
[tool.daydream] keys. The phases sub-table merges per-phase, so an override
for one phase does not wipe phases declared only in pyproject.toml.
# pyproject.toml or .daydream.toml
[tool.daydream]
model = "claude-opus-4-8"
backend = "claude"
shallow_fanout_threshold = 5
[tool.daydream.phases.fix]
backend = "codex"
model = "gpt-5.5"
The DaydreamFileConfig dataclass
(daydream/config_file.py)
has four fields: model, backend, phases (a dict of phase name to model
and backend overrides), and shallow_fanout_threshold.
Per-phase model and backend overrides are config-file-only. The CLI flags
--review-model, --fix-backend, --review-backend, etc. have been removed.
If you pass one, Daydream rejects it with a pointer to the config-file
equivalent.
Backend and model selection
Three backends are supported
(daydream/backends/):
- claude: built on the Claude Agent SDK. Default model:
claude-opus-4-8. - codex: spawns
codex exec --experimental-jsonas an async subprocess. Default model:gpt-5.3-codex. - pi: spawns
pi --mode json(the@earendil-works/pi-coding-agent) as an async subprocess. Default model:glm-5.2(z.ai provider).
Each backend translates its native event format into the unified AgentEvent
stream, so the trajectory recorder and the review phases work identically across
all three.
Model and backend resolution follows a four-tier precedence
(daydream/runner.py):
- CLI per-phase field (populated from config file, not a CLI flag)
- CLI global (
--model/--backend) - Config-file phase override (
[tool.daydream.phases.<phase>]) - Config-file global (
[tool.daydream] model/backend)
Then falls through to the per-backend per-phase default table
(PHASE_DEFAULT_MODELS in
daydream/config.py).
The default table for the claude backend tiers models by cost: claude-haiku-4-5
for parse, claude-sonnet-4-6 for fix, test, verify, exploration,
per-stack review, and intent, and claude-opus-4-8 for review, arbiter, merge,
and PR feedback. The codex backend uses gpt-5.5 for all phases. The pi backend
uses glm-5.2 for all phases.
Review skills
Daydream maps each detected stack to a Beagle review skill:
| Stack | Skill |
|---|---|
| python | beagle-python:review-python |
| react | beagle-react:review-frontend |
| elixir | beagle-elixir:review-elixir |
| go | beagle-go:review-go |
| rust | beagle-rust:review-rust |
| ios | beagle-ios:review-ios |
A structural meta-stack (beagle-core:review-structure) runs alongside the
language stacks to surface architectural findings. When deep mode detects
multiple language stacks in a tiny diff, the combined assignment falls back to
the generic reviewer because a single agent cannot invoke two per-language
skills.