vx is one file per platform. No Node to pick, no Bun to install, no
daemon. On a 1,000-project workspace with everything up to date:
$ ls -l vx-linux-x64
-rwxr-xr-x 1 root root 117532848 vx-linux-x64
$ time ./vx-linux-x64 run build --all
real 0m0.163s
$ time bun packages/vx/src/bin.ts run build --all
real 0m0.253s
| Same run, 1,000 tasks up to date | Wall time |
|---|---|
release binary (--bytecode) |
163 ms |
| from source under Bun | 253 ms |
Min of 15 runs, 3 interleaved arms · private/vx-bench/generate.ts, 1,000 projects · Linux x64, 4 cores · vx 22f6eb7 · 2026-10-23
The binary carries its runtime and its code precompiled, so nothing has
to parse vx before it runs.
What you install
bun add -d @vzn/vx
You get the prebuilt binary for your platform: Linux (glibc, not
Alpine's musl) and macOS, x64 and arm64 (Windows under WSL).
The GitHub release carries the same binary, so CI can skip the package
manager. No postinstall, no first-run download. The npm package's vx
command is a small sh launcher that execs that binary.
Your tasks don't change. tsc, vite and eslint run on your own
Node. vx only adds node_modules/.bin to their PATH.
What that buys
-
No CI setup. No
setup-nodefirst. Fetch, run. Through npm, the launcher costs one shell start first, a few milliseconds; Node starts only when no prebuilt binary fits. -
No version drift. The
vxthat ran yesterday is the same bytes today, on every machine. -
vx.config.tsruns as is. No transpile step. Keep@vzn/vxindevDependenciesfor the types.
Why Bun, and why it does not leak
Bun gives vx most of what a runner needs, built in: bun:sqlite for the
cache index, Bun.zstd* for compression, Bun.spawn, Bun.Glob, and
bun build --compile for the binary.
So vx has very few dependencies.
None of that reaches you. A workspace on Node 18 with pnpm works under
vx as it does under Turborepo. Only running vx from source needs
Bun ≥ 1.4.4.
No daemon, no service
The binary is the whole install. No background process
(why), no account, no service. vx run in a container
with no network works like on a laptop.
Plugins that talk to the outside world are packages you add.
Install and first run: the Quickstart. More at
vznjs.github.io/vx.
Originally published on the vx blog. vx is open-source (MIT) task orchestration with a build cache: vznjs.github.io/vx · GitHub.
Written with AI assistance.
Top comments (0)
Some comments may only be visible to logged-in visitors. Sign in to view all comments. Some comments have been hidden by the post's author - find out more