A personal task catalogue, runner, and scheduler with a terminal UI.
Define named scripts in a TOML file, run them with a keystroke, stream their output live, chain them into pipelines, schedule them with cron, and browse the full run history, all without leaving the terminal.
Most developers accumulate a pile of scripts they run regularly - database seeds,
deployment shortcuts, cleanup jobs, one-off utilities. make and just are
project-scoped and file-centric. cron has no UI and no visibility into whether
jobs succeed or fail. systemd timers are powerful but heavyweight for personal
use.
Burrow fills that gap. It lives in your home directory, gives every script a name and a description, logs every run automatically, and lets you schedule things without touching a crontab or writing a service file.
Requires Go 1.22+. You can use Go to install it directly:
go install github.com/XenomorphingTV/burrow/cmd/burrow@latestOr you can clone it and build it yourself:
git clone https://github.com/xenomorphingtv/burrow
cd burrow
make installOr just build the binary:
make buildburrow init # scaffold ~/.config/burrow/tasks.toml and open it in $EDITOR
burrow # launch the TUISee burrow.example.toml in this repo for a full tour of the config format.
burrow # launch the TUI
burrow run <task> # run a task headlessly, stream output to stdout
burrow list # print the task catalogue as plain text
burrow list --json # print the task catalogue as JSON
burrow list --json out.json # write JSON catalogue to a file
burrow init # scaffold the global config
burrow check # validate config without starting the TUI
burrow daemon start # start the background scheduler daemon
burrow daemon status # show daemon uptime, upcoming scheduled runs, and watch tasks
burrow help # full usage reference
burrow version # print versionBurrow merges two files on startup:
~/.config/burrow/tasks.toml- your global personal catalogue./burrow.toml- repo-local tasks, merged on top when present
[settings]
max_parallel = 4
log_dir = "~/.config/burrow/logs"
theme = "catppuccin-mocha" # catppuccin-mocha (default), nord, dracula, gruvbox, or a path to a .toml file
[tasks.db-seed]
cmd = "node scripts/seed.js"
description = "Seed the development database"
cwd = "./backend"
env = { NODE_ENV = "development" }
tags = ["db"]
depends_on = ["db-migrate"] # pipeline
on_failure = "notify-ops" # runs if this task fails
watch = ["src/**/*.js"] # re-run automatically when matched files change
[schedules.nightly]
task = "db-seed"
cron = "0 2 * * *"Burrow is built on the shoulders of some excellent open source work:
- Bubble Tea <- the TUI framework
- Lip Gloss <- terminal styling
- Bubbles <- UI components (viewport, text input, spinner)
- BurntSushi/toml <- TOML config parsing
- robfig/cron <- cron scheduling engine
- bbolt <- embedded key/value store for run history
Thank you to the maintainers of all of these projects.
MIT
