Skip to content

Configuration ​

The Engineer uses YAML configuration files stored in ~/.engineer/config/. All fields are optional — sensible defaults are applied via Zod schema validation when fields are missing.

Config Files ​

FilePurpose
daemon.yamlDaemon runtime: concurrency, tick loop, logging, polling, workspace reaper, telemetry
orchestrator.yamlReview lenses, observability
safety.yamlCost limits, scope boundaries, autonomy, merge policy
workspace.yamlGit operations, branch naming, PR settings, branch retention
people.yamlPeople directory: roles and contacts

Plugin-specific configs live in ~/.engineer/config/plugins/ and are documented in docs/plugins/.

How Config Loading Works ​

On engineer start, all config files are loaded from ~/.engineer/config/ by default. The location can be overridden directly with the --config-dir <path> flag or the ENGINEER_CONFIG_DIR env var; otherwise it follows the data directory (--home <path> / ENGINEER_HOME, then ~/.engineer) and reads its config/ subdirectory. Missing files are not errors — Zod defaults apply for every field.

The load order:

  1. Read YAML file (if it exists)
  2. Parse through Zod schema (applies defaults, validates types)
  3. Return typed config object

If a config directory is explicitly specified but doesn't exist, the daemon fails loudly. If using the default ~/.engineer/config/ path, missing files silently use defaults.

Applying Config Changes ​

All config files are read once at startup. Edit a file, then run engineer stop and engineer start for the change to take effect. There is no runtime hot-reload.

Environment Variable References ​

Config values can reference environment variables using ${VAR_NAME} syntax. Variables are resolved at load time from the process environment and ~/.engineer/.env.

yaml
bot_token: "${TELEGRAM_BOT_TOKEN}"

Duration Strings ​

Some fields accept human-readable duration strings that are parsed to milliseconds:

  • "5s" = 5,000 ms
  • "30m" = 1,800,000 ms
  • "8h" = 28,800,000 ms
  • "1d" = 86,400,000 ms

Check individual field documentation for which fields support this.

First Run ​

The first engineer start invocation walks you through interactive setup and writes the config directory. Use engineer start --seed <dir> to seed configuration non-interactively from a saved seed directory. Either path also writes fully documented example templates to ~/.engineer/example-templates/ for reference.

Source of Truth ​

All config schemas are defined in src/schemas/config.ts using Zod. The schema definitions are the authoritative source — these docs are derived from them.