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
brew install just
# 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 ships it
sudo dnf install just
# 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.