Configuration

Config file format

Daydream reads configuration from two on-disk sources, merged per-key:

  1. pyproject.toml [tool.daydream] (low precedence)
  2. .daydream.toml at 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-json as 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):

  1. CLI per-phase field (populated from config file, not a CLI flag)
  2. CLI global (--model / --backend)
  3. Config-file phase override ([tool.daydream.phases.<phase>])
  4. 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.

Back to Daydream

Daydream overview