Skip to content

bivvy init

Initialize Bivvy configuration for your project.

Usage

Terminal window
bivvy init
Terminal window
bivvy init --minimal
Terminal window
bivvy init --template=ruby
Terminal window
bivvy init --from=../other-project

Options

OptionDescription
--minimalGenerate config without prompts, using only auto-detected templates
--template <name>Start from a specific template or category (skips auto-detection). Accepts a template name (e.g., bundle-install) or a category (e.g., ruby) to include all templates in that category.
--from <path>Copy .bivvy/config.yml from another project directory into the current project
--forceOverwrite existing configuration

What It Does

  1. Scans your project for technologies
  2. Detects package managers and version managers
  3. Identifies potential conflicts
  4. Generates .bivvy/config.yml
  5. Updates .gitignore for local overrides
  6. Offers to run setup immediately (interactive mode only)

When running interactively, after generating the config Bivvy prompts “Run setup now?” with options to run immediately or exit. Choosing “Yes” chains directly into bivvy run. Choosing “No” (the default) shows a hint to run bivvy run later.

Examples

Interactive setup:

Terminal window
bivvy init

Quick setup for CI:

Terminal window
bivvy init --minimal

Force overwrite existing config:

Terminal window
bivvy init --force

Start from the Ruby template:

Terminal window
bivvy init --template=bundle-install

Include all Ruby-category templates:

Terminal window
bivvy init --template=ruby

Clone config from a sibling project:

Terminal window
bivvy init --from=../other-project

Detection

Bivvy automatically detects technologies and maps them to built-in templates:

CategoryDetected viaTemplate
SystemBrewfilebrew-bundle
RubyGemfilebundle-install
Ruby (Rails)bin/rails, config/routes.rbrails-db
Node.jsyarn.lock, package-lock.json, pnpm-lock.yaml, bun.lockbyarn-install, npm-install, pnpm-install, bun-install
Node.js (Next.js)next.config.js, next.config.mjsnextjs-build
Node.js (Vite)vite.config.ts, vite.config.jsvite-build
Node.js (Remix)remix.config.jsremix-build
Pythonrequirements.txt, poetry.lock, uv.lockpip-install, poetry-install, uv-sync
Python (Django)manage.pydjango-migrate
Python (Alembic)alembic.inialembic-migrate
RustCargo.tomlcargo-build
Rust (Diesel)diesel.tomldiesel-migrate
Gogo.modgo-mod-download
SwiftPackage.swiftswift-resolve
Java (Maven)pom.xmlmaven-resolve
Java (Spring Boot)application.properties, application.ymlspring-boot-build
.NET*.sln, *.csprojdotnet-restore
Dart / Flutterpubspec.yamldart-pub-get, flutter-pub-get
Denodeno.json, deno.jsoncdeno-install
Database (Prisma)prisma/schema.prismaprisma-migrate
Containerscompose.yml, docker-compose.ymldocker-compose-up
KubernetesChart.yamlhelm-deps
IaC (Pulumi)Pulumi.yamlpulumi-install
IaC (Ansible)ansible.cfg, playbook.ymlansible-install
Cross-cutting.env.exampleenv-copy
Cross-cutting.pre-commit-config.yamlpre-commit-install
Monoreponx.jsonnx-build
Monorepoturbo.jsonturbo-build
Monorepolerna.jsonlerna-bootstrap
Version managers.mise.toml, .tool-versions, voltamise-tools, asdf-tools, volta-setup
Version managers.nvmrc, .node-versionnvm-node, fnm-node
Version managers.ruby-versionrbenv-ruby
Version managers.python-versionpyenv-python

Enriched Output

The generated config includes commented-out template details so you can see what Bivvy will do and how to customize it:

# Bivvy configuration for my-app
# Docs: https://bivvy.dev/configuration
#
# Override any template field per-step:
# steps:
# example:
# template: bundle-install
# env:
# BUNDLE_WITHOUT: "production"
#
# Add custom steps:
# steps:
# setup_db:
# title: "Set up database"
# command: "bin/rails db:setup"
# completed_check:
# type: command_succeeds
# command: "bin/rails db:version"
#
# Create named workflows:
# workflows:
# ci:
# steps: [bundle-install, yarn-install]
# settings:
# default_output: quiet
app_name: "my-app"
settings:
default_output: verbose # verbose | quiet | silent
steps:
bundle-install:
template: bundle-install
# command: bundle install
# completed_check:
# type: command_succeeds
# command: "bundle check"
# watches: [Gemfile, Gemfile.lock]
yarn-install:
template: yarn-install
# command: yarn install
# completed_check:
# type: command_succeeds
# command: "yarn check --verify-tree"
# watches: [yarn.lock, package.json]
workflows:
default:
steps: [bundle-install, yarn-install]

Conflicts

When conflicts are detected (e.g., multiple lock files), Bivvy will:

  1. Show a warning about the conflict
  2. Suggest a resolution
  3. Allow you to choose which to include