Skip to content
vxvx
GitHubBlueskydev.toRSS
Blog

No daemon, and still quick when nothing changed

vx has no background process watching your files. A run with nothing to do stays quick, and it can never act on a stale view of the tree.

vx runs no background process. When nothing changed, a run over 9,603 tasks still finishes in 559 ms.

Nothing changed
vx559 ms
Turborepo689 ms
Nx12.07 s
The table
Runner Nothing changed Daemon
vx 559 ms none
Turborepo 689 ms not for turbo run
Nx 12.07 s off, as in CI

Synthetic monorepo, 1,601 projects, 9,603 tasks · concurrency 10 · benchmarks

Measured: vx 0.0.0 @ ee4c63a57 on 2026-11-12, Turborepo 2.11.10 on 2026-11-12, Nx 24.0.2 on 2026-11-12, Vite Task 1.4.0 on 2026-11-12; linux x64, 4 cores (AMD EPYC 7763 64-Core Processor), 16 GB.

Nx runs a daemon by default. Turborepo shipped one and, since 2.8.11, no longer uses it for turbo run.

A daemon keeps its own copy of your tree. One missed file event and that copy is wrong. For a build cache, wrong means old bytes under a green check.

Each run asks git, which already holds a hash for every clean file. A clean tree is keyed with no read of a source file (how).

Config comes from the lock file, so no vx.config.ts is evaluated. A hit on an up-to-date tree only checks that the outputs are there (how).

That is the 559 ms. Nothing stays running after it, and a run in a terminal, in CI or in a container gives the same answer.

More at vznjs.github.io/vx.

Turborepo, Nx and other product names are trademarks of their owners. vx is not affiliated with or endorsed by them.