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 Cloud | hushrun | |
|---|---|---|
| Setup | nx init adds nx., and tasks run through Nx | npx hushrun init wraps your scripts |
| Key | Project and dependency sources, workspace configuration, external dependency versions, OS and CPU, and arguments | The repository's files or a scope's, the check's name, the exact command and the directory |
| Environment variables | Count when declared as inputs | Don't count: name each variant |
| A one-package change | Runs affected tasks | Runs every check, unless you set scopes |
| On a hit | Replays the task's output and restores its files | Skips the command and restores nothing |
| Promotion to production | No | Yes |
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:
"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.