Skip to content
vxvx
GitHubBlueskydev.toRSS
Newv0.0.638Clear output, kept CI runs, shared timings

Task orchestration you own.

vx runs and caches your task graph correctly, and every stage after that is a seam you can fill.

  • 15pipeline stages a plugin can fill
  • MITsandbox, remote cache and remote execution, no paid tier
  • 0daemons, accounts or cloud services to run it
vx run ci --all on the starter: cold, three tasks run; again, three up-to-date.

// ai first

The build your agents can run.

npx skills add vznjs/vx

One skill teaches any coding agent the CLI: run tasks, read failures and history, ask why.

  • vx run
  • vx last --failed
  • vx last --stats
  • vx why
  • vx docs
Built for agents →

vx why

A re-run names its cause, down to the file that changed.

$ vx why @demo/web#build
  verdict    cache key changed: upstream @demo/ui#build
  root cause:
    @demo/web#build ← @demo/ui#build ← file packages/ui/src/index.ts
How vx why works →

--format json

Every report verb prints JSON with a published schema, and failures keep their full log.

  • vx show
  • vx info
  • vx last
  • vx why
  • --dry=json
Every command →

// 9,603 tasks · 1,601 projects · 30 levels · identical commands, identical concurrency

Fast, never at the cost of a correct cache.

Nothing changed
vx856 ms
Turborepo855 ms
Nx23.22 s
Vite Task11.24 s
Nothing changed, outputs restored
vx1.45 s
Turborepo1.50 s
Nx21.64 s
Vite Task11.21 s
Cold build
vx7.73 s
Turborepo10.32 s
Nx3 min 23 s
Vite Task9.44 s
Cold build: CPU the runner burns
vx36.42 s
Turborepo1 min 3 s
Nx5 min 35 s
Vite Task25.64 s

Time each tool adds over the ideal run; lower is better.

Benchmark workload: a synthetic monorepo of 1,601 projects and 9,603 tasks in 30 dependency levels, five core libraries a quarter of the projects use; build 300 ms, test and typecheck 150 ms, lint 75 ms, publish 30 ms; real repos with uneven task times will differ.

Run 2026-10-12 on linux x64, 4 cores: vx at commit 126d60a93, Turborepo 2.11.7, Nx 23.3.0, Vite Task (vite-plus) 1.1.0.

  • Nothing boots per task. No daemon, no Node process per task: vx spawns your command.
  • Hashing without reading. On a clean tree, cache keys come from git’s index.
  • One pass over the repo. One git walk per run; each stat and lookup happens once.

// vx vs Turborepo vs Nx

Built in, free, on your own machines.

vxTurborepoNx
A file sandbox for every taskLocal and free, Linux and macOSNone
Remote execution you hostBazel’s open REAPI protocolNone
A remote cache on any backendREAPI, Turborepo’s or Nx’s wire, by pluginIts own HTTP APINx Cloud or its own API
Config is codeTypeScript, evaluated and hashedJSONJSON, merged with inferred tasks
No background daemonNoneNone for turbo runOn by default

// four commands

Start in a minute.

npm install -D @vzn/vx
npx @vzn/vx init                 # a vx.config.ts per package; add the cache block each TODO shows
npx @vzn/vx run build --all      # builds in dependency order; stores what is cached
npx @vzn/vx run build --all      # again: the cached tasks are up-to-date

Coming from Turbo or Nx: the same vx init writes the native vx config from it.

// one run, after you edit app

Everything vx does, in one picture.

at oncesandboxa run’s stages✕ deniedutils#buildfrom cacheui#buildfrom cacheapi#buildfrom cacheapp#buildyou edited app../secrets.envgraphkeyscheduleruncachetelemetryremote cacheOpenTelemetry①②③④✎ runs⑤⑥yours plugs in the same wayat oncesandboxa run’s stages✕ deniedutils#buildfrom cacheui#buildfrom cacheapi#buildfrom cacheapp#buildyou edited app../secrets.envgraphkeyscheduleruncachetelemetryremote cacheOpenTelemetry①②③④✎ runs⑤⑥yours plugs in the same way
One run of vx run build, after you edit app.
  1. 1Tasks. app builds after what it uses.
  2. 2Parallel. ui and api build at once.
  3. 3Cache. Unchanged work comes back from the cache.
  4. 4Only what changed. You edited app; only app runs.
  5. 5Sandbox. A workspace file you did not declare is out of reach.
  6. 6Plugins. Swap the cache, runner or telemetry. No fork.
Turborepo, Nx and other product names are trademarks of their owners. vx is not affiliated with or endorsed by them.