Skip to content

hushrun and Nx Cloud

Updated

Nx caches each task in an Nx workspace from its declared inputs, and Nx Cloud shares that cache between machines. hushrun wraps any command and skips it when the repository's files already passed. Nx is more precise in a monorepo. hushrun asks less of a repository, and also promotes artifacts. They work together.

Nx with Nx Cloudhushrun
Setupnx init adds nx.json, and tasks run through Nxnpx hushrun init wraps your scripts
KeyProject and dependency sources, workspace configuration, external dependency versions, OS and CPU, and argumentsThe repository's files or a scope's, the check's name, the exact command and the directory
Environment variablesCount when declared as inputsDon't count: name each variant
A one-package changeRuns affected tasksRuns every check, unless you set scopes
On a hitReplays the task's output and restores its filesSkips the command and restores nothing
Promotion to productionNoYes

How Nx caches

Nx hashes a task's inputs: the sources of the project and its dependencies, workspace configuration, external dependency versions, the OS and CPU, and command-line arguments. Environment variables and runtime commands count once you declare them. The remote cache shares results between machines, stores no source, and can be self-hosted against a published API.

Because Nx knows the project graph, nx affected runs only what a change touches. That's the main thing hushrun doesn't do: it has no project graph. In GitHub Actions, nx affected needs the history, so fetch-depth: 0.

How hushrun differs

hushrun needs no project graph. hushrun run -- vitest run works in a repository with one package or fifty, in any language, and a repository can start with one check.

  • It compares code, not tasks. Its key covers the repository's files, so any change runs the check again, and you narrow it with scopes. A change in one package runs everything until you do.
  • It restores nothing. A skip means the command didn't run. That suits checks, whose result is a pass or a fail. It doesn't suit a build whose output the next step needs, where Nx's cache is the better fit.
  • Results say who ran them. Laptops and agents sign theirs with a registered machine's key, GitHub's ID token authenticates GitHub Actions, and an admin can make CI trust only CI's results.
  • It goes on to deploy. Promotion deploys the artifact staging validated, by digest. Nx stops at the task.

Using both

Keep Nx for what it does, and wrap the whole run:

package.json
"scripts": {
  "test": "hushrun run -- nx run-many -t test"
}

On code that already passed, nothing runs. On new code, Nx runs the tasks and replays what its cache holds.

Which to choose

  • Choose Nx for a large JavaScript monorepo where most changes touch a few packages, and you want builds cached too.
  • Choose hushrun when you don't want to adopt a build system, when your repository isn't one Nx suits, or when you need to know who ran each result.
  • Use both when you want Nx's precision and hushrun's promotion.

Pricing

Nx Cloud had, in November 2026, a free Hobby plan with 50,000 credits a month, and a Team plan at $29 a month with $29 of usage credit included, plus $19 per contributor and $5.50 per 10,000 further credits. hushrun's CLI is free. The hosted service is free for 2,000 recorded checks a month. Team is $49 a month and Growth $99, tax included. See Plans and limits.

Markdown