Skip to content

Configuration Reference

Complete reference for every configurable field in Bivvy. See the annotated YAML files for copy-paste examples:

Config File (.bivvy/config.yml)

Top-Level Fields

FieldTypeDefaultDescription
app_namestringDisplay name for the project
settingsSettings{}Global defaults
stepsmap of Step{}Named setup tasks
workflowsmap of Workflow{}Step sequences
template_sourceslist of TemplateSource[]Remote template registries
secretsmap of Secret{}External secret providers
requirementsmap of CustomRequirement{}Custom requirement definitions
varsmap of VarDefinition{}User-defined variables for interpolation
extendslist of {url}Base configs to inherit

Settings

FieldTypeDefaultDescription
defaults.outputverbose | quiet | silentverboseOutput verbosity
loggingbooltrueEnable JSONL event logging to ~/.bivvy/logs/. See Event log.
log_retention_daysint30Max age of log files in days. See Event log.
log_retention_mbint500Max total size of log files in MB. See Event log.
envmap{}Global environment variables
env_filepathGlobal env file to load
secret_envlist[]Additional patterns to mask in output
parallelboolfalseEnable parallel execution
max_parallelint4Max concurrent steps
history_retentionint50Execution history entries to keep
diagnostic_funnelbooltrueUse diagnostic funnel pipeline for step failure recovery
auto_updatebooltrueEnable automatic background updates
default_rerun_windowstringGlobal default rerun window for all steps (e.g., "4h", "30m", "7d")
default_environmentstringDefault environment when --env is not set
environmentsmap of EnvironmentConfig{}Custom environment definitions
defaultsDefaults{}Default values for step behavior flags

Defaults

Project-wide (or system-wide) defaults for step behavior. Step-level settings override these, and workflow step_overrides override step-level settings.

FieldTypeDefaultDescription
auto_runbooltrueWhether steps auto-run when the pipeline says they need to run. When false, the user is prompted before each step executes.
prompt_on_rerunboolfalseWhether to prompt before re-running a recently completed step. When false, recently-completed steps are silently skipped.
rerun_windowstring"4h"Default rerun window for all steps. Accepts duration strings: "4h", "30m", "7d", "0"/"never", "forever".

Step

At minimum, a step needs either command or template.

FieldTypeDefaultDescription
commandstringShell command to execute
templatestringTemplate name from registry
inputsmap{}Inputs to pass to template
titlestringstep keyDisplay title
descriptionstringHuman-readable description
depends_onlist[]Steps that must run first
checkCheckSingle check (presence, execution, change)
checkslist of Check[]Multiple checks (implicit all)
satisfied_whenlist of SatisfactionCondition[]Conditions declaring step fulfilled (inline checks or refs to named checks). All must pass. Takes priority over check.
preconditionCheckGate that must pass before step runs (not bypassed by --force or --force-all)
skippablebooltrueUser can skip interactively
requiredboolfalseCannot be skipped
auto_runboolAuto-run when pipeline says step needs to run. None = use global default.
confirmboolfalseAlways prompt user before running (never auto-runs)
prompt_on_rerunboolfalseAsk before re-running
allow_failureboolfalseContinue workflow on failure
retryint0Retry attempts on failure
envmap{}Step-specific env vars
env_filepathEnv file for this step
env_file_optionalboolfalseDon’t fail if env file missing
required_envlist[]Env vars that must be set
promptslist of Prompt[]Interactive prompts
outputStepOutputOutput settings override
rerun_windowstringHow long a previous run counts as “recent enough” (e.g., "4h", "30m", "7d", "0"/"never", "forever")
sensitiveboolfalseHide command and suppress output
forceboolfalseAlways re-run, bypassing check/checks/satisfied_when (equivalent to listing the step in --force on every run; preconditions still apply)
requires_sudoboolfalseNeeds elevated permissions
beforelist[]Commands to run before step
afterlist[]Commands to run after step
toolslist[]System-level prerequisites (alias: requires)
only_environmentslist[]Limit step to these environments (empty = all)
environmentsmap of StepEnvironmentOverride{}Per-environment field overrides

Check

Tagged union — the type field determines which other fields apply. All check types accept an optional name field for referencing from satisfied_when.

Presence Check

FieldTypeDefaultDescription
type"presence"Required
namestringOptional name for satisfied_when refs
targetstringFile path or binary name
kindfile | binary | custominferredInferred from target if omitted: paths with /, ., or ~ are file; simple names are binary
commandstringCommand for kind: custom (exits 0 = present)

Execution Check

FieldTypeDefaultDescription
type"execution"Required
namestringOptional name for satisfied_when refs
commandstringRequired. Shell command to run
validationsuccess | truthy | falsysuccessHow to interpret the result. success = exit 0; truthy = exit 0 with non-empty stdout; falsy = exit 0 with empty stdout, or exit non-zero

Change Check

FieldTypeDefaultDescription
type"change"Required
namestringOptional name for satisfied_when refs
targetstringRequired. File path, glob pattern, or command to hash
kindfile | glob | commandfileTarget type
on_changeproceed | fail | requireproceedWhat a detected change means: proceed = step should run; fail = unexpected drift; require = flags require_step as needed
require_stepstringStep to flag when on_change: require and change is detected
baselineeach_run | first_runeach_runWhen the baseline hash is updated
baseline_snapshotstringCompare against a named snapshot instead of run-based baseline
baseline_gitstringCompare against content at a git ref
size_limitint | null52428800 (50 MB)Max total bytes before refusing to hash. null = no limit
scopeproject | workflowprojectBaseline isolation scope

Combinator Checks

FieldTypeDefaultDescription
type"all" or "any"Required
namestringOptional name for satisfied_when refs
checkslist of CheckRequired. Sub-checks to evaluate

all: every sub-check must pass. any: at least one sub-check must pass.

Satisfaction Condition

Used in the step’s satisfied_when list. Each entry is one of:

FormFieldsDescription
Inline checkSame fields as CheckEvaluated directly
Named refref: <name>Reference a named check. Unqualified names resolve on the same step; step_name.check_name references another step’s check

All conditions must pass for the step to be satisfied. When satisfied_when is present, it takes priority over check — a failing satisfied_when prevents the step from being skipped even if check would pass.

Prompt

FieldTypeDefaultDescription
keystringrequiredUnique key (used in ${key} interpolation)
questionstringrequiredQuestion to display
typeselect | multiselect | confirm | inputrequiredPrompt type
optionslist of {label, value}[]Choices (for select/multiselect)
defaultvariesDefault value

Step Output

FieldTypeDefaultDescription
defaultverbose | quiet | silentOutput mode for this step

Workflow

FieldTypeDefaultDescription
descriptionstringHuman-readable description
stepslist[]Ordered step names to execute
overridesmap of StepOverride{}Per-step behavior overrides
settingsWorkflowSettingsWorkflow-level settings
auto_run_stepsboolOverride auto_run for all steps in this workflow. Individual step overrides take precedence.
envmap{}Workflow-level env vars
env_filepathWorkflow-level env file
forcelist[]Steps to always force when this workflow runs (unioned with CLI --force); each entry must reference a defined step
force_allboolfalseForce every step in this workflow, equivalent to --force-all (preconditions still apply)

Step Override

Used inside workflows.<name>.overrides.<step> to tweak step behavior for a specific workflow.

FieldTypeDefaultDescription
auto_runboolOverride step’s auto_run flag
prompt_on_rerunboolOverride step’s prompt_on_rerun flag
rerun_windowstringOverride step’s rerun_window

Note: The schema also accepts skip_prompt (bool) and required (bool) for backward compatibility, but these fields are not read by the runner — setting them on a workflow override has no effect. To mark a step as non-skippable, set required: true on the step itself; to always prompt before a step runs, set confirm: true on the step itself.

Workflow Settings

FieldTypeDefaultDescription
non_interactiveboolfalseForce non-interactive mode

Template Source

FieldTypeDefaultDescription
urlstringrequiredURL to template repository
priorityint100Lower = higher priority
timeoutint30Network timeout (seconds)
cacheCacheCache configuration
authAuthAuthentication

Cache

FieldTypeDefaultDescription
ttlstringrequiredTime-to-live ("7d", "24h")
strategyetag | gitetagCache invalidation strategy

Auth

FieldTypeDefaultDescription
typebearer | headerrequiredAuth type
token_envstringrequiredEnv var containing the token
headerstringCustom header name (for type: header)

Secret

FieldTypeDefaultDescription
commandstringrequiredCommand whose stdout is the secret

Environment Config

Used inside settings.environments.<name>.

FieldTypeDefaultDescription
detectlist of EnvironmentDetectRule[]Auto-detection rules
default_workflowstringWorkflow to use when this environment is active
provided_requirementslist[]Requirements assumed satisfied

Environment Detect Rule

FieldTypeDefaultDescription
envstringrequiredEnvironment variable name to check
valuestringExpected value (omit to match on presence)

Step Environment Override

Used inside steps.<name>.environments.<env>. All fields are optional — only specified fields override the base step.

FieldTypeDescription
titlestringOverride display title
descriptionstringOverride description
commandstringOverride shell command
envmap of string → string|nullOverride env vars (null removes a key)
checkCheckOverride completion check
preconditionCheckOverride precondition
skippableboolOverride skip permission
allow_failureboolOverride failure behavior
requires_sudoboolOverride sudo requirement
sensitiveboolOverride sensitive flag
beforelistOverride pre-step hooks
afterlistOverride post-step hooks
depends_onlistOverride dependencies
toolslistOverride system requirements (alias: requires)
retryintOverride retry attempts
confirmboolOverride confirm flag
auto_runboolOverride auto_run flag
rerun_windowstringOverride rerun window

Var Definition

Each entry in the top-level vars map is either a static string or a computed value.

FormYAML SyntaxDescription
Staticname: "value"Plain string
Computedname: { command: "..." }Shell command whose trimmed stdout becomes the value

Computed variables run once at workflow start. If the command exits non-zero, the workflow fails.

Variables are resolved in priority order: prompts > preferences > vars > env > builtins.

Custom Requirement

Used inside the top-level requirements map.

FieldTypeDefaultDescription
checkCustomRequirementCheckrequiredHow to verify the requirement
install_templatestringTemplate for installation
install_hintstringHuman-readable install instructions

Custom Requirement Check

Tagged union — the type field determines which other fields apply.

TypeFieldsDescription
command_succeedscommandRun command, pass on exit 0
file_existspathCheck if file/directory exists
service_reachablecommandRun command that probes a service

Workflow File (.bivvy/workflows/<name>.yml)

A self-contained workflow file. The file stem becomes the workflow name, so .bivvy/workflows/release.yml defines a workflow named release that you can run with bivvy run release.

A workflow file may carry its own step definitions, vars, and workflow declaration. When loaded, its contents are spliced into the merged config at the workflow-file slot of the resolution chain (between split steps and config.local.yml), so steps and vars defined here override the same names from .bivvy/config.yml for that run.

FieldTypeDefaultDescription
descriptionstringHuman-readable description (shown in bivvy list)
stepsmap of Step{}Step definitions private to this workflow file
varsmap of VarDefinition{}Variables available during interpolation when this workflow runs (merged into the global vars table)
workflowWorkflow{}The workflow declaration itself: ordering, env, force directives

Note that .bivvy/workflows/<name>.yml is a different shape from a workflows.<name> entry in .bivvy/config.yml. The inline form is a Workflow; the file form wraps that under a workflow: key and adds optional description, steps, and vars.


Template File (.bivvy/templates/steps/<name>.yml)

FieldTypeDefaultDescription
namestringrequiredUnique template name
descriptionstringrequiredHuman-readable description
categorystringrequiredCategory (ruby, node, custom, etc.)
versionstring"1.0.0"Semantic version
min_bivvy_versionstringMinimum Bivvy version required
platformslist[macos, linux, windows]Supported platforms
detectslist of Detection[]Auto-detection rules for bivvy init
inputsmap of TemplateInput{}Parameterized inputs
stepTemplateSteprequiredStep definition
environment_impactEnvironmentImpactShell environment side effects

Detection

FieldTypeDescription
filestringSuggest template if this file exists
commandstringSuggest template if this command exits 0

Template Input

FieldTypeDefaultDescription
descriptionstringrequiredHuman-readable description
typestring | number | boolean | enumrequiredInput type
requiredboolfalseMust be provided
defaultvariesDefault value
valueslist[]Valid values (for enum type)

Template Step

FieldTypeDefaultDescription
titlestringDisplay title (supports ${input})
descriptionstringDescription
commandstringCommand (supports ${input})
checkCheckSingle completion check
checkslist of Check[]Multiple completion checks
envmap{}Environment variables

Environment Impact

FieldTypeDefaultDescription
modifies_pathboolfalseStep modifies PATH
shell_fileslist[]Shell config files affected
path_additionslist[]Paths added to PATH
notestringNote displayed after completion