
35.7k stars · CC0-1.0 · 1.58.0 (2026-08-03) · Track this in Rising ↗
Named recipes in a justfile — 'just backup', 'just normalize' — so the command is never the thing that gets lost.
Radar check
What we found when we opened it. Every bar is one fact, with its date.
Last code pushed 19 Oct 2026, 9 days before this check.
Latest release 1.59.0 on 15 Oct 2026.
Public since June 2016, a little over 10 years.
36,424 stars and 865 forks.
33 commits and 39 new issues in the last 90 days.
226 contributors. 33 pull requests merged in 90 days.
No security policy file says how to report a problem. No published security advisories.
How the bars are scored
- Alive. Days since the last code push: a week or less 100, a month 90, three months 70, six months 50, a year 30, eighteen months 15, older 0.
- Releases. Age of the latest GitHub release, on a similar scale; no bar when the project publishes no releases.
- Maturity. Age of the project: eight years 100, five 90, three 70, two 55, one 40, six months 25, younger 10.
- Adoption. Stars on a log scale: 100,000 stars is 100, 10,000 is 80, 1,000 is 60, 100 is 40.
- Activity. Commits in the last 90 days: 300 or more 100, 100 85, 30 65, 10 45, any 25.
- Community. People who have contributed: 100 or more 100, 30 80, 10 60, 5 40, 2 25, one 10.
- Security. A published security policy 80, none 40; published advisories are listed, not scored.
Checked by Repo Radar on 25 Oct 2026 from the repository on GitHub. Covered in Edition 13.
▶Repo detailsthe review · specs · pros & cons · install
What it does
It is a command runner. A file called justfile holds named recipes, and each recipe is one or more shell lines. Running just <name> executes that recipe from anywhere inside the project. Recipes take arguments, read variables and environment files, depend on each other, and can be written in another language such as Python by naming its interpreter. just --list prints every recipe with its comment, which makes the file its own documentation. It is one small binary with no runtime to install. Version 1.59.0 was released on 15 October 2026. It is not a build system: it does not track which files changed, so it re-runs whatever it is asked to run.
Why it matters
Who it suits. It suits anyone with a growing pile of long commands, and anyone who returns to a project every few weeks and has to remember how it starts. It suits small teams, because a named recipe is a shared answer instead of a message asking how something is run. Skip it if the work already uses a build system that tracks changes, and skip it if there are only two commands to remember.
Verdict. The cheapest thing in this edition and the only one that gets more useful with every past edition, since each one leaves commands behind. Keep the file honest: a recipe that has gone stale is worse than no recipe, because it fails while looking correct. The syntax is close to Make and deliberately simpler. go-task/task is the alternative for anyone who prefers YAML files, and it does track changes.
Summary (Key Points)from the README
Key features
- Recipes in any language: Recipes can be written in arbitrary languages such as Python or Node.js, using shebang recipes or `[script(COMMAND)]` recipes.
- Parallel execution: The `[parallel]` attribute runs dependencies concurrently, and `--jobs` limits how many run at once.
- Static error checking: Unknown recipes and circular dependencies are reported before anything runs, and syntax errors show their source context.
- Rich recipe arguments: Parameters support defaults, variadic `+` and `*` forms, long and short options, flags, and regex patterns via `[arg(...)]`.
- Expression language: Built-in functions, string types (including shell-expanded and format strings), and conditionals are available in assignments and recipe bodies.
- Multi-file organization: Justfiles can be split with `import` and `mod` statements, and optional imports and modules are supported.
- Dotenv and environment handling: `.env` files load automatically through `dotenv-*` settings, and `dotenv-command` can source secrets from a vault.
- Flexible invocation: `just` runs from any subdirectory, lists recipes with `--list`, and offers command-line completion for most shells.
- Backwards compatibility promise: The README states there will never be a just 2.0, and breaking changes are opt-in per justfile.
Ways to install
| Platform or method | What it needs | Effort |
|---|---|---|
| Package managers (cross-platform, BSD, Linux, Windows, macOS) | The platform's package manager, such as Homebrew, Cargo, npm, apt, or winget | Low: one command |
| Pre-built binaries | Access to the releases page, or the install script with a destination directory | Low to medium |
| GitHub Actions | Pre-installed brew or choco, or the setup-just or install-action actions | Low |
| Docker | Copying the binary into a Dockerfile from the GitHub Container Registry | Low |
| Node.js (just-install) | An npm project, which installs a platform-specific binary as a dependency | Low |
| Nix flake | Using the repository's flake as an input to another flake | Medium |
| Building from source | Rust toolchain, then `cargo install just` | Medium |
Important
- Windows shell: On Windows, `just` needs `sh` from Git for Windows, GitHub Desktop, or Cygwin, or you must set a different shell such as PowerShell.
- Shebang limits: Windows does not support shebang lines, and shebang recipes fail in temporary directories mounted `noexec`.
- Unstable features: Unstable features such as `set lists` and user-defined functions error unless you pass `--unstable`, set `unstable`, or set `JUST_UNSTABLE`.
- Line-by-line execution: Each recipe line runs in a fresh shell, so variables, directory changes, and multi-line constructs do not persist unless you use a shebang recipe.
- Recursive calls: Calling `just` recursively from a recipe reruns assignments, may run dependencies twice, and does not pass command-line arguments on.
- PowerShell arguments: PowerShell handles positional arguments differently, so `positional-arguments` can break PowerShell recipes.
- Install rate limits: `install.sh` can fail on shared IPs such as GitHub Actions because of API rate limits, so pass `--tag` or a `GITHUB_TOKEN`.
- Import ordering bug: The README calls the ordering of duplicate imports at the same depth a bug that is kept for compatibility.
Written by an AI model from the project’s README; not part of the review, and it can be wrong.
- One small program, no runtime, nothing to host.
just --listprints every recipe with its comment, so the documentation writes itself.- CC0-1.0 terms, so there is never a licence question.
- Not a build system: it does not track what changed and re-runs everything it is asked for.
- A stale recipe fails while looking correct, which is worse than having none.
- One more small syntax to learn, and it handles shell lines slightly differently from a plain script.
brew install just # or: cargo install just just --list

