Clean commands for any project. Modern task runner. Zero dependencies. Any platform.
Quick install:
curl -fsSL https://bab.sh/install | shA modern approach to task automation that just works. Simple to learn, powerful to use.
Pure Go binary. Just download and run. No runtime or package manager required.
Works seamlessly on Windows, macOS, and Linux. One config, any OS.
Clean, readable configuration. No complex syntax to learn.
Automatic prerequisite execution. Never run tasks in the wrong order.
Collect user input during task execution. Support for text, select, confirm, password, and more.
Skip tasks or commands based on conditions. Use prompt results for dynamic workflows.
See how bab stacks up against other task runners and build tools.
| Feature | bab | GNU Make | npm scripts | Just | Task |
|---|---|---|---|---|---|
Single binary | |||||
Cross-platform | |||||
Simple YAML syntax | |||||
Built-in interactive TUI | |||||
Built-in fuzzy search | |||||
Smart error hints | |||||
Task dependencies | |||||
Environment variables | |||||
OS-specific commands | |||||
Modular config files | |||||
Dry-run mode | |||||
Shell completions | |||||
Full IDE integration | |||||
Interactive prompts | |||||
Working directory |
Missing something? Let us know on GitHub Discussions
Define your tasks in a clean YAML file. No complex syntax, no build system knowledge required.
vars: app_name: myapp version: "1.0.0"
env: APP_NAME: ${{ app_name }}
tasks: dev: desc: Start development server deps: [setup] run: - prompt: port type: number message: Enter dev server port default: 3000 - cmd: npm run dev -- --port ${{ port }}
build: desc: Build the application deps: [setup] vars: target: release run: - log: ${{ app_name }} v${{ version }} - cmd: go build -o app dir: ./dist - log: Done! level: info
setup: desc: Install dependencies env: CI: "true" run: - cmd: ./install.sh platforms: [darwin, linux] - cmd: install.bat platforms: [windows]
deploy: desc: Deploy to production run: - prompt: confirm_deploy type: confirm message: Deploy to production? - task: build when: ${{ confirm_deploy }} == 'true' - cmd: ./deploy.sh when: ${{ confirm_deploy }} == 'true' env: TARGET: productionDefine vars at global or task level. Reference them anywhere with ${{ var_name }} syntax.
Reference other tasks with task: to compose complex workflows from simple building blocks.
Define deps and bab automatically runs prerequisites first. No more manual ordering.
Set env vars at global, task, or command level. More specific levels override broader ones.
Different commands for different operating systems. Write once, run anywhere.
Add informational log messages with levels: debug, info, warn, error.
Collect user input during task runs. Supports confirm, input, select, multiselect, password, and number.
Set execution directory at global, task, or command level. Relative paths resolve from the Babfile location.
Skip tasks or commands based on conditions. Works with prompt results for dynamic workflows.
First-class IDE support with syntax highlighting, code completion, and task execution built right into your editor.
Visual Studio Code Extension
JetBrains IDE Plugin
Both extensions provide:
Choose your preferred installation method. Works on all major platforms.
$ curl -fsSL https://bab.sh/install | shchoco install babscoop bucket add bab-sh https://github.com/bab-sh/scoop-bucket && scoop install babsnap install bab-shparu -S bab-binOr download binaries directly from GitHub:
Download Latest Releasebab is free, open source, and MIT licensed. Join our growing community of developers.
We welcome contributions of all kinds!
See what developers are saying about bab.
since 06.12.2025
"I’ve been using bab.sh for two weeks now, and I really appreciate how easy it was to set up and get started. Everything feels straightforward to understand and use, which made the transition smooth."
Lukas
Developer
Want to share your experience with bab?
Share your storyEverything you need to know about bab.
Still have questions?