Every project grows a pile of one-liners that never quite found a home. Run the tests. Lint. Build the docs. Spin up the dev server. You start with a scripts/ folder, then a dozen .sh files nobody is sure still work. Then one day you meet just.
just is a command runner written in Rust by Casey Rodarmor. Commands — it calls them recipes — live in a plain file named justfile, which sits in your project root. You run one with just <name>. That's the whole pitch, and for most projects it's everything Make ever promised and rarely delivered.
A justfile you can read without a PhD
Here's a real one you'd drop in at the root of a typical Node or Python project:
# Install dependencies
install:
npm install
# Run tests
test: install
npm test
lint:
npx eslint .
deploy env="staging":
./scripts/deploy.sh {{env}}
No tabs-versus-spaces traps. No .PHONY incantations so Make stops confusing your recipe with a file. No $(VAR) shell gymnastics. Type just and it runs the recipe marked [default] (or the first one). Type just test and it runs install first — recipes can depend on other recipes. Arguments work the way you'd expect: just deploy prod.
Where a Makefile is a build system that got pressed into service as a task list, just is a command runner on purpose. It skips the whole dependency-tracking layer most projects never touch, which means it sidesteps most of Make's footguns by refusing to own that problem in the first place.
The parts that win you over
just --listdocuments itself. Comments above a recipe show up as descriptions. A teammate runsjust --listand sees the entire project's command surface — far better than readingscripts/hoping the names tell you something.- It's genuinely cross-platform. Linux, macOS, and Windows are supported with no extra dependencies. On Windows you can even point it at PowerShell.
- It loads
.envfiles automatically, soDATABASE_URLand friends are there when recipes need them, nosourcedance required. - Recipes can be written in any language. Drop a shebang at the top of a recipe and it becomes Python, Node, or whatever the project speaks. The official docs walk through recipes run with
uv, for example. - Aliases keep names short.
alias t := testandjust tworks. - A global justfile (via
just -g) holds cross-project recipes, so the commands you use everywhere don't need redefining per repo. just --choosefuzzy-searches your recipes, defaulting tofzfas the picker.
Why you can trust it with your workflow
The project is mature and unusually stable. With version 1.0, just committed to backwards compatibility — a promise that future releases won't break existing justfiles or working command-line invocations. As of this writing, the latest release is 1.59.0 from October 2026. It's installable most ways you'd want: brew install just on macOS, cargo install just, apk add just, pacman -S just, and winget install --id Casey.Just on Windows.
Make isn't going anywhere — if a project genuinely builds file targets, Make is still the right tool. But for the far more common job of "give me one clear list of commands at the root of this repo," just is the cleaner answer in 2026.