Skip to content

XenomorphingTV/burrow

Repository files navigation

CI Latest Release Go 1.22+ Platform: Linux License: MIT

burrow_logo_minimal_v2

A personal task catalogue, runner, and scheduler with a terminal UI.

showcase

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.

Why

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.

Install

Requires Go 1.22+. You can use Go to install it directly:

go install github.com/XenomorphingTV/burrow/cmd/burrow@latest

Or you can clone it and build it yourself:

git clone https://github.com/xenomorphingtv/burrow
cd burrow
make install

Or just build the binary:

make build

Quick start

burrow init   # scaffold ~/.config/burrow/tasks.toml and open it in $EDITOR
burrow        # launch the TUI

See burrow.example.toml in this repo for a full tour of the config format.

CLI

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 version

Config

Burrow 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 * * *"

Acknowledgements

Burrow is built on the shoulders of some excellent open source work:

Thank you to the maintainers of all of these projects.

License

MIT