Configuration
Bivvy uses YAML configuration files to define your project setup.
File Locations
Configuration is loaded and merged in this order (later overrides earlier):
- Remote base configs (from
extends:) - User global config (
~/.bivvy/config.yml) - Project config (
.bivvy/config.yml) - Local overrides (
.bivvy/config.local.yml) - gitignored
Basic Structure
app_name: "MyApp"
settings: default_output: verbose # verbose | quiet | silent
steps: install_deps: command: "npm install"
workflows: default: steps: [install_deps]Variable Interpolation
Use ${VAR} syntax to interpolate values:
steps: setup: command: "echo Setting up ${project_name}"Built-in Variables
| Variable | Description |
|---|---|
${project_name} | Directory name of the project |
${project_root} | Absolute path to project root |
Environment Variables
Environment variables are available for interpolation:
steps: deploy: command: "deploy --env ${RAILS_ENV}"Escaping
Use $${ to escape (outputs literal ${):
steps: example: command: "echo '$${NOT_INTERPOLATED}'" # outputs: ${NOT_INTERPOLATED}Deep Merge Behavior
When multiple config files define the same key:
- Objects: Recursively merged (nested keys combined)
- Arrays: Replaced entirely (not concatenated)
- Scalars: Later value wins
steps: deps: command: "yarn install" env: NODE_ENV: development
# .bivvy/config.local.ymlsteps: deps: env: NODE_ENV: production # command is preserved from base