Make, Task, and Just run commands. Bivvy ensures your environment is ready for those commands to succeed. They're complementary, not competitive.
Task runners are for doing things (build, test, deploy). Bivvy is for ensuring state (this machine has what it needs). You'd use bivvy to set up, then Make to build.
Make tracks file modification times. Bivvy's completed_check supports command-based checks, file existence, markers, and more. Real state verification, not heuristics.
Task runners are headless. Bivvy has an interactive CLI with prompts, confirmations, and contextual recovery options when things go wrong.
| Capability | Bivvy | Make / Task / Just |
|---|---|---|
| Primary purpose | Ensure environment state | Run project tasks |
| Completed checks | Multiple types: command, file, marker | File-based only (Make) or none |
| Shared config | extends: and template_sources: | Per-repo only |
| Interactive mode | Prompts, confirmations, skip/re-run | Command-line only |
| CI parity | Core design goal | Possible but not the focus |
| Template registry | Built-in and remote template libraries | No |
| Error recovery | Retry, fix, skip, or drop to shell | Task fails, re-run manually |
| Config language | Simple YAML | Makefile DSL / YAML / custom |
A Makefile target says "run this command to produce this file." Bivvy says "ensure this environment state is satisfied." The difference shows up when you ask: "is my machine ready to develop?"
Make doesn't know if Ruby is installed. It doesn't know if your .env file exists. It doesn't know if Docker is running. Bivvy does.
❯ bivvy status [✓] homebrew satisfied [✓] ruby 3.2.2 installed [✓] node 20.11.0 installed [✓] docker running [✓] bundler up to date [✓] yarn up to date All steps satisfied. Ready to develop.
The best workflow uses bivvy and a task runner together. Bivvy handles the environment layer: installing tools, managing dependencies, configuring services. Your Makefile or Justfile handles the task layer: building, testing, linting, deploying.
New hire onboarding becomes: bivvy run then make dev. The first ensures the machine is ready. The second starts the work.
# Environment layer (bivvy) ❯ bivvy run ✓ Ruby 3.2.2 installed ✓ Dependencies installed ✓ Database ready 🎉 Setup complete! # Task layer (make/just/task) ❯ make dev Starting development server... ✓ Listening on http://localhost:3000
Bivvy handles what task runners don't — ensuring your machine has everything it needs before a single make target runs.