Skip to content

Configuration hierarchy

AI-translated from Russian.

Several configuration sources act at the same time. It is important to understand what overrides what so you do not look for a parameter “in the wrong place”.

Precedence (strongest to weakest)

Command-line parameters for a single run
    ↓
odpm.json and user_settings.json (files in the project directory / in git)
    ↓  (in whitelist strings: ${VAR} ← process env, then project .env)
project .env file
    ↓
~/.odpm/.env file (shared user profile)
    ↓
shell environment variables (when creating .env without prompts)
    ↓
odpm built-in defaults

One .env file at a time

odpm reads either .env in the project directory or ~/.odpm/.envnot both at once. If the project directory has its own .env, the global file does not supplement it: a key missing in the project is not pulled from ~/.odpm/.env.

Timing exception: before full initialization, only the project .env may be read for early checks (see message locale).

Generated files

docker-compose.yml, .odpm/runtime/config.json, .odpm/database/last_run.json, and the root .dockerignore are generated by odpm from the project description and scenario. Do not treat them as the place for “manual truth” — see generated files and PostgreSQL state.

Git version pinning

When working with repositories: --no-git-update overrides --update-lock, then the existing lock file, then branch tip / nightly date. Details: deps.lock.json.