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.7.0

# Reading .bivvy/config.yml...

✓ Node 20.11.0 detected
✓ Installing npm dependencies...
✓ Created .env from .env.example
✓ PostgreSQL container started
✓ Database migrated

🎉 Setup complete! Run npm run dev to start.

Not just another setup script.

Declarative config

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

.bivvy/config.yml
# .bivvy/config.yml
steps:
  ruby:
    template: bundler
    watches: [Gemfile.lock]
  node:
    template: yarn
    watches: [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

  [✓] brew         2 hours ago
  [!] ruby         stale (Gemfile.lock changed)
  [✓] node         2 hours ago
  [✓] docker       running
  [pending] db  not yet 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.js Python Ruby Go Rust PHP Java Elixir Docker asdf mise nvm

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...