Skip to main content

Configuration Reference

Resolution and ownership

When a setting has a matching CLI option, Reflow resolves it in this order:

  1. Explicit CLI argument
  2. .config/reflow/config.toml
  3. Internal default

The file created by reflow init belongs to the target project. Review it before committing it, and do not place credentials or tokens in repository URLs or image names.

Repository and Git

Target settings

PropertyTypeDescriptionDefaultRequired
repository.pathpathExisting local directory. Relative values resolve from the invocation directory..No
repository.urlGit URLRemote repository materialized in a managed temporary clone. Do not embed credentials.unsetNo
git.default_remotestringRemote name used for remote tag replacement and release-recovery pushes.originNo
Commandpath targeturl targetPersistent scope
reflow initSupportedRejectedProject configuration files
reflow tags convert localSupportedRejectedLocal tag refs only
reflow tags convert remoteUses the checkout's remoteUses a temporary cloneGuarded atomic remote push
reflow releases recoverUses the checkout's remoteUses a temporary cloneDelete and re-push selected remote tags
reflow dockerizeUses the checkout as sourceUses a temporary clone as sourceDocker and registry operations

Registry values such as github.image and gitlab.image never select the Git repository.

Shared CLI Execution

[tool.reflow.cli.execution]

PropertyTypeDescriptionDefaultRequired
debugbooleanEnable detailed diagnostic output when the CLI flag is omitted.falseNo
dry_runbooleanSimulate persistent local, remote, Docker, and registry mutations while allowing discovery and validation.falseNo

[tool.reflow.cli.progress]

PropertyTypeDescriptionDefaultRequired
enabledbooleanShow Rich spinners and progress bars. This changes presentation, not live or dry-run behavior.trueNo

Initialization

[tool.reflow.initialization]

PropertyTypeDescriptionDefaultRequired
forcebooleanDefault overwrite behavior for reflow init when --force/--no-force is omitted.falseNo
askbooleanPrompt before supported creation or replacement decisions when --ask is omitted.falseNo

These settings are consumed only by reflow init. The active command accepts the all and config modes and requires a persistent local target.

Tag Conversion

[tool.reflow.cli.tags.convert]

PropertyTypeDescriptionDefaultRequired
target_formatsemver | pep440Destination format shared by local and remote tag conversion when --to is omitted.semverNo
yesbooleanBypass the live replacement confirmation after the full plan is displayed. Dry-run never prompts.falseNo

The same defaults feed reflow tags convert local and reflow tags convert remote; the selected subcommand still controls whether local or remote refs can change.

Release Recovery and the Deprecated Alias

[tool.reflow.cli.releases.recover]

PropertyTypeDescriptionDefaultRequired
delayinteger >= 0Seconds between selected remote tag re-push operations.2No
only_stablebooleanExclude prerelease tags when selecting releases to recover.falseNo
limitinteger >= 1 | unsetMaximum number of selected missing-release tags.unlimitedNo

--yes for reflow releases recover is intentionally CLI-only. Recovery checks GitHub releases, then deletes and re-pushes selected remote tags to retrigger tag-based CI/CD; it does not create release records through an API.

[tool.reflow.cli.tags.replay] (deprecated)

PropertyTypeDescriptionDefaultRequired
delayinteger >= 0Legacy fallback when the canonical recovery delay is not configured.2No
only_stablebooleanLegacy fallback for the canonical stable-only filter.falseNo
limitinteger >= 1 | unsetLegacy fallback for the canonical recovery limit.unlimitedNo

Keep legacy values only while migrating existing configuration. New configuration and automation should use [tool.reflow.cli.releases.recover] and reflow releases recover.

Docker and Registry Images

Container publishing

PropertyTypeDescriptionDefaultRequired
docker.providergithub | gitlab | bothSelect which configured registry destinations reflow dockerize publishes to.githubNo
docker.keep_local_imagesbooleanKeep all built tag images locally instead of removing non-latest images after push.falseNo
github.imageimage nameGHCR destination, for example ghcr.io/acme/project. Required for github or both.template placeholderNo
gitlab.imageimage nameGitLab Container Registry destination. Required for gitlab or both.template placeholderNo

reflow dockerize has no command-specific provider or image flags in Reflow 1.0.2; configure these values in TOML. Live mode builds and pushes one image per repository tag, tags the latest ordered tag as latest, and may remove non-latest local images.

Console and File Logging

[tool.reflow.logging]

PropertyTypeDescriptionDefaultRequired
levellog levelConsole logging threshold; --log-level overrides it.INFONo
markupbooleanEnable Rich markup in console logging.trueNo
rich_tracebacksbooleanEnable Rich traceback rendering.trueNo
show_timebooleanShow timestamps in console log records.falseNo
show_levelbooleanShow severity labels in console log records.falseNo
console_formatformat stringPython logging format used for console records.%(message)sNo

[tool.reflow.logging.file]

PropertyTypeDescriptionDefaultRequired
levellog levelFile logging threshold.DEBUGNo
log_dirpathDirectory for persistent logs.logsNo
log_filefilenameActive log filename.reflow.logNo
max_bytessizeRotate the log after this approximate size.10MBNo
backup_countintegerNumber of rotated log files retained.5No
file_formatformat stringPython logging format used for file records.timestamp | level | logger | messageNo

Never include credentials, tokens, or secret-bearing URLs in configuration or diagnostic output.

Minimal Target Examples

Local target
toml
[tool.reflow.repository]
path = "../project"

[tool.reflow.cli.tags.convert]
target_format = "semver"
yes = false
Remote URL target
toml
[tool.reflow.repository]
url = "https://github.com/acme/project.git"

[tool.reflow.git]
default_remote = "origin"

Do not combine the path and url examples in one active configuration.