Configuration

doma reads ~/.config/doma/config.yml (overridable via DOMA_CONFIG) on startup. The file is optional — every field has a default. Parsing is strict: unknown keys are an error, so a typo can't silently change behavior.

You can edit it by hand, or use doma config to read and write keys from the CLI.

Full schema

# Where the SQLite database lives. Defaults to <home>/doma.db.
db_path: ~/.config/doma/doma.db

# Picker strategy.
# - auto    : interactive picker if STDIN is a TTY, else first-match.
# - builtin : force the picker (will block if no TTY available).
# - first   : always pick the first match (scriptable).
selector: auto

# Default behavior for tag derivation flags. CLI flags
# (--auto-tag / --no-auto-tag, --git-tag / --no-git-tag) override.
auto_tag:
  basename: false
  git: false

Where doma writes

Path Override env Notes
~/.config/doma/ DOMA_HOME Parent dir for everything else.
~/.config/doma/doma.db DOMA_DB SQLite database (WAL files: .db-shm, .db-wal).
~/.config/doma/config.yml DOMA_CONFIG This file.
~/.config/doma/.cd-hint-shown Sentinel. Tells cd not to print the wrapper-not-loaded hint twice.

~ is honored everywhere — both in the env vars and in any path you write into the config file.

Migration

doma uses PRAGMA user_version to track the schema. Each release that needs new columns ships an additive migration; old databases upgrade transparently on first open. There's no manual migration step.

The current schema version is reported under Database in doma doctor.