Source-available CLI tool
Use Bivvy personally or within your company, including commercial development. You just can't package, sell, or ship Bivvy as part of a commercial product. See more on licensing here.

Dev setup,
automated.

Bivvy scans your project, detects your tools and runtimes, and generates a declarative config that gets your team running with zero friction. Customize it, version it, and use it anywhere you or your teammates go.

$ curl -fsSL https://bivvy.dev/install | sh
Features

Everything your setup script wishes it could be.

📋

Declarative YAML Config

Define your entire dev environment in a single, readable .bivvy/config.yml file. Version it, share it, forget about it.

🎯

Interactive CLI

A polished terminal experience with progress indicators, prompts, and helpful error messages. Setup that feels good.

🌐

Cross-Language Support

Node, Python, Ruby, Go, Rust, and more. Bivvy speaks your stack's language and handles dependencies gracefully.

🔍

Auto-Detects Your Stack

Point bivvy at a project and it scans your machine for installed tools, runtimes, and services - then generates a config to match. Run it again and it only does what's needed.

From clone to coding in seconds

Bivvy reads your project's .bivvy/config.yml and walks through each setup step interactively. Dependencies, environment variables, databases, services - all handled.

  • Automatically detects your runtime versions
  • Loads environment variables from .env files
  • Runs pre and post setup hooks
  • Works with Docker, asdf, mise, and more
bivvy -~/projects/my-app
bivvy run
bivvy v1.0.0 • default workflow • 5 steps • env: development

[1/5] node — Node toolchain
       Satisfied (node --version succeeded)
[2/5] deps — Install dependencies
       Satisfied (ran successfully 2 minutes ago)
[3/5] env — Load .env
       Satisfied (.env present)
[4/5] postgres — PostgreSQL container
       Satisfied (docker compose ps succeeded)
[5/5] migrate — Database migrations
       Satisfied (ran successfully 2 minutes ago)

Total: 248ms • 5 run • 0 skipped • 5 already satisfied

Run bivvy status to verify setup health.

Not just another setup script.

Declarative config

Templates, watches, dependencies, workflows. One file, version-controlled.

.bivvy/config.yml
# .bivvy/config.yml
steps:
  ruby:
    template: bundle-install
    check:
      type: change
      target: "Gemfile.lock"
  node:
    template: yarn-install
    check:
      type: change
      target: "yarn.lock"
  db:
    command: "rails db:prepare"
    depends_on: [docker]

Stale detection

Changed Gemfile.lock? Ruby step is stale. Didn't change it? Skip.

bivvy status
 bivvy status

  ⛺ myapp — Status

  Environment: development (default)

  Steps:
     brew                 2h ago
     ruby                 stale
     node                 2h ago
     docker               2h ago
     db                   never run

Smart recovery

When something breaks, context-aware suggestions. Not "figure it out yourself."

bivvy -error recovery
✗ ruby failed: bundle install exited 1

How do you want to proceed?
  [r] Retry   - run the step again
  [f] Fix     - bundle update nokogiri
  [s] Skip    - continue without this step
  [x] Shell   - drop to shell to debug

Works with your stack

Built-in support for popular runtimes and package managers

Node.jsPythonRubyGoRustPHPJavaElixirDockerasdfmisenvm

Stop the leaks.

Source maps in production. Secrets baked into build output. Debug symbols shipping to users. These aren't edge cases - they're what happens when your build environment drifts and nobody checks the artifacts.

Bivvy ships with built-in audit templates for Node, Rust, Python, Go, Java, .NET, Docker, Ruby, PHP, Elixir, and Swift. They run as post-build safety gates - automatically checking your /dist for source maps, .env files, debug symbols, and hardcoded secrets before anything gets published.

.bivvy/config.yml
steps:
  deps:
    template: npm-install

  build:
    template: vite-build
    depends_on: [deps]

  audit:
    template: node-artifact-audit
    depends_on: [build]
    inputs:
      dist_dir: dist

# Catches source maps, .env files,
# secrets in JS/JSON, node_modules
# in dist, and TypeScript source leaks.

Ready to set up camp?

Bivvy gets you running right away and keeps things consistent with smart, shareable, idempotent configs.

Get started →
ESC
Type to search documentation...