just: A Command Runner That Stays Out of the Way

Makefiles are for builds. A justfile is for the five commands you actually type: test, lint, deploy, the one-off you keep re-reading from a note.

just reads a justfile in the current directory (or a parent) and runs the recipe you name. No implicit rules, no target-vs-file guessing. just with no arguments runs the first recipe. Checked on just 1.58.0: --list, a recipe, and --dry-run. Recipes in that version accepted a four-space indent; tabs still work and are what older just required.

install

macOS
# macOS
brew install just
Debian/Ubuntu
# Debian trixie+ ships the binary package just (source: rust-just). Ubuntu 24.04 often does not — if apt says no package, use the GitHub release
sudo apt install just
Fedora
# Fedora ships it
sudo dnf install just
Arch
# Arch extra
sudo pacman -S just

examples

# List recipes in the justfile just found
just --list
# Run one recipe by name
just hello
# Print the commands without running them
just --dry-run hello

pro tip

just --list from a subdirectory still finds the justfile by walking up. Set --ceiling if you do not want it to escape a repo. just --choose hands the list to fzf when you would rather pick than type.

honest limits

just is not Make. It will not rebuild objects because a header changed, and it will not infer dependencies you did not write. A justfile with no recipes, or the wrong directory, makes just hello fail — that is the tool telling you the file is missing, not a broken install. Do not put secrets in a justfile you commit.