mrkeyoor.com_
Sat 26 Sept 10:53 UTC
Dev Toolsevaluationupdated 26 Sept 2026

just review

Just is a command runner that keeps a project's recurring shell commands in a file called `justfile`. It gives teams named recipes for jobs such as testing, building, and releasing, without pretending to decide whether files are already up to date.

Verdict

Our Just build finished in 39 seconds, but 4 of 4,840 tests failed, so using the released command runner looks easier than contributing from a bare container. Adopt it when a repository has enough repeated commands to justify a shared justfile, especially across several languages. Keep Make or a native build tool underneath when incremental file builds matter.

We ran it

Lab card: what happened when we ran justScreenshot of just (just.systems)
Install✓ · 7s104 packages
Build✓ · 39s
Tests✗ · 20s4836 passed · 4 failed of 4840 (cargo test)
Repo320 files~65,795 lines of source · 2.4 MB · 2 CI workflows · tests dir

Answers from our run

Does just build from source?

Dependencies installed in 7 seconds (104 packages), and the build succeeded in 39 seconds. We cloned commit 9076dd9 into a clean Debian container with 3 CPUs and no project-specific setup.

Do just's tests pass?

Not all of them: 4836 of 4840 passed and 4 failed when we ran the project's own test command (cargo test). Some failures need services or credentials a bare container does not have.

Who should not use just?

Projects that need incremental builds or file-target caching: the README defines Just as a command runner, while Make is a build system.

What are the alternatives to just?

Task, mise, cargo-make. Our Just build finished in 39 seconds, but 4 of 4,840 tests failed, so using the released command runner looks easier than contributing from a bare container.

Setup4/57-second install and 39-second build; full tests had 4 failures
Docs5/5The README covers syntax, shells, packages, and compatibility in depth
Community4/536,013 stars and same-day issue activity; pull requests are closed
Maturity5/5v1.58.0 with a stated compatibility policy for existing justfiles

Discussed on

  1. hnJust: A Command Runner482 points
  2. hnJust a Command Runner10 points
  3. hnJust 1.0.05 points
  4. hnJust a Command Runner4 points
  5. hnJust – a handy way to save and run project-specific commands3 points

Who it’s for

Teams that keep copying setup, test, lint, or release commands from documentation into a shell.
Developers who want recipe arguments, dependencies, modules, dotenv loading, and scripts in several languages.
Mixed-language repositories that need one command menu above their existing build tools.
Maintainers willing to install one extra binary and pin a minimum Just version when newer syntax is used.

Who it’s NOT for

Projects that need incremental builds or file-target caching: the README defines Just as a command runner, while Make is a build system.
Windows teams unwilling to standardize a shell: Just expects sh by default there, or an explicit PowerShell or cmd.exe setting.
Developers looking to send a pull request today: the README says the project is not currently accepting pull requests and retains its contribution guide for posterity.
Teams that only need two short commands and do not want another binary or configuration language in every development environment.

Setup reality

Our sandbox installed 104 packages in 7 seconds and built commit 9076dd9 in 39 seconds. The test command then failed after 20 seconds: 4 of 4,840 tests failed. The log tail names directories::runtime_directory and functions::env_var_functions_unix, with an environment lookup returning NotPresent.

Using Just does not require credentials or a hosted service. You can install a prebuilt binary through several package managers or compile it with Cargo, then add a justfile to the repository. Dotenv loading is available but must be enabled through a setting or option.

The default recipe shell is Unix-oriented. Windows users need sh from Git for Windows, GitHub Desktop, or Cygwin, unless the project selects PowerShell or cmd.exe. Contributors building from source need the current stable Rust toolchain, and the documented full just ci path also requires mdBook and mdbook-linkcheck.

A 2.4 MB checkout solves the command-memory problem

In our 2.4 MB checkout, Just gives a project one named menu for commands people otherwise keep in a README, package script, wiki page, or shell history. A recipe can run a test suite, publish an artifact, or call the real build tool. Running just finds a justfile in the current directory or a parent, so the same entry points work from a nested folder. That behavior reduces onboarding guesswork.

The 320-file checkout contains about 65,795 lines of source, which explains why Just now reaches well beyond a thin shell wrapper. Recipes accept positional arguments, flags, defaults, dependencies, aliases, documentation comments, and private visibility. Modules and imports split a large command catalog across files. Script recipes can use Python, Node.js, or another interpreter, while static checks catch unknown recipes and circular dependencies before commands begin.

Version 1.0 drew a firm line between commands and builds

Since version 1.0, Just has promised compatibility for existing justfiles and says there will never be a Just 2.0 migration. Newer syntax can be guarded with minimum-version, and unfinished features require an explicit unstable opt-in. That policy makes a checked-in command file a reasonable team interface. A new release should not casually turn yesterday's just test into a different operation.

Our 3-CPU sandbox also exposed the boundary that makes Just useful. It runs recipes every time because recipes are commands, not file targets. Make can inspect timestamps and skip work when an output is current; Just deliberately does not. Keep Cargo, Ninja, Make, or another build engine responsible for incremental work, then let Just provide memorable names for the commands people should invoke.

What happened when we ran it

Our run installed 104 packages in 7 seconds, then built commit 9076dd9 in 39 seconds. The Rust repository occupied 2.4 MB when checked out and had 320 files. Both setup steps completed without an error. That is a low trial cost for someone evaluating the source, even though most users can avoid compilation and install a released binary from their platform's package manager.

The complete test command ran for 20 seconds and exited with code 101. Across the supplied summary, 4 of 4,840 tests failed and 4,836 passed. The final integration output showed 1,843 passing tests, 2 failures, and 18 ignored tests. Those named failures were directories::runtime_directory and functions::env_var_functions_unix; the tail also showed an environment lookup returning NotPresent.

The 2 named integration failures do not prove a cause

The 2 named failures both touched environment-facing behavior, but the log tail does not establish why the expected value was absent. We cannot tell from NotPresent whether the container lacked a variable, the test expected a directory convention, or the code had a defect at commit 9076dd9. The defensible finding is narrower: the full suite did not pass in the stated fresh Debian container.

That container had 3 CPUs, 12 GB of RAM, no secrets, and ran without privileges. It was enough for the install and build, yet the test result means a contributor should reproduce the suite on the intended host before changing runtime-directory or environment-variable code. The README's contributor path also calls for current stable Rust, plus mdBook and mdbook-linkcheck when running the broader just ci recipe.

Windows support requires an explicit shell decision

The 2.4 MB source tree supports Linux, macOS, Windows, and other Unix-like systems, but recipes still execute through a shell. On Windows, the default route needs sh from Git for Windows, GitHub Desktop, or Cygwin. A team that prefers PowerShell or cmd.exe can set that in the justfile, which is better than leaving each developer's local shell choice implicit.

Just needs no account, API key, database, or background service. The 7-second sandbox install was source-oriented; end users can choose a prebuilt binary or a package manager instead. Dotenv support is optional and explicit. If a recipe loads secrets, the security boundary is still the commands and files your team writes. Just makes those commands repeatable, but it does not inspect their intent.

36,013 stars sit beside a closed pull-request door

GitHub showed 36,013 stars, 170 open issues, and a push on September 26, 2026. Issue 3517 was closed the same day, while issue 3248 had discussion updated a day earlier. That combination is stronger evidence of maintenance than the release date alone. The latest tagged release was v1.58.0 from August 3, 2026, and the repository was still receiving changes afterward.

The project has 2 CI workflow files and a tests directory, but no Dockerfile in the measured checkout. Its README currently says pull requests are not being accepted, even though the older contribution instructions remain below that notice. Users can still file issues or ask for help through the listed Discord. Developers seeking a project where outside code contributions are welcome should treat the closed PR route as a present constraint.

Four failures make the source trial conditional

The 4 failures in 4,840 tests do not make Just a poor command runner. Its recipe list gives newcomers a map, arguments keep common variations discoverable, and modules stop a busy file from becoming one long scroll. Task is the cleaner comparison for YAML users. Mise deserves a look when toolchain installation and task execution should share one configuration system.

Our 39-second build and 4 failed tests point to different jobs. For day-to-day command execution, use a released binary, pin the minimum version your justfile needs, and keep the file boring enough to read. For source contribution or packaging, reproduce those environment-related test failures before calling the checkout clean.

Alternatives

ProjectWhat it isPick it when
Task gh↗A Go command runner that describes tasks in YAML.pick this instead when your team prefers YAML and wants a task runner distributed as one binary.
mise gh↗A development environment manager that also runs project tasks.pick this instead when tool versions, environment variables, and tasks should live under one manager.
cargo-makeA task runner built around Cargo-style configuration and Rust workflows.pick this instead when a Rust project wants Cargo-centered task configuration and workflow steps.

What people are saying

  1. [velocity-scout] casey/just
  2. [techcrunch-ai] Astra and Opus just passed Turing’s other test
  3. [techcrunch-ai] Meta’s Muse just stole the AI spotlight from OpenAI and Anthropic
  4. [theverge] Why can’t we just keep rogue AIs off the internet?
  5. [hackernews] We just shipped support for the ugliest part of HTTP: Vary
  6. [mastodon-trends] The Federal Agency That’s Supposed to Protect Consumers Just Made Another Business-Friendly Move

Sources

  1. Just README and manual source
  2. Just 1.58.0 release notes
  3. Commit 9076dd9 used in our sandbox run
  4. Issue 3517 closed on September 26, 2026
  5. Open issue 3248 on user-defined functions

More dev tools reviews

docker_practice · microservices-demo · Claude-Code-Usage-Monitor · pyxel · dust · kubernetes-the-hard-way · the whole board →