{"slug": "show-hn-vx-vite-like-task-runner-fastest-safest-open-yours", "title": "Show HN: VX – Vite-like task runner. Fastest, safest, open, yours.", "summary": "VX, a new open-source task runner from the vznjs project, launched with a benchmark claiming it adds less overhead than Turborepo 2.11.7 and Nx 23.3.0 on a synthetic monorepo of 1,601 projects and 9,603 tasks across 30 dependency levels, tested on 2026-10-12 on linux x64 with 4 cores. VX ships an agent-oriented skill installable via `npx skills add vznjs/vx` that teaches coding agents commands including `vx run`, `vx last --failed`, `vx why` and `vx docs`, and it reports JSON with a published schema. The tool is MIT-licensed with no paywall, cloud or account, and offers per-task file sandboxing plus remote execution over Bazel's open REAPI protocol.", "body_md": "### `npx skills add vznjs/vx`\n\nOne skill teaches any coding agent the CLI: run tasks, read failures and history, ask why.\n\n- `vx run`\n- `vx last --failed`\n- `vx last --stats`\n- `vx why`\n- `vx docs`\n\n[Built for agents →](https://vznjs.github.io/vx/concepts/ai-first/)\n\nvx runs and caches your task graph correctly, and every stage after that is a seam you can fill.\n\n// ai first\n\n`npx skills add vznjs/vx`` vx run``vx last --failed`` vx last --stats``vx why`` vx docs`\nA re-run names its cause, down to the file that changed.\n\n``` bash\n$ vx why @demo/web#build\n  verdict    cache key changed: upstream @demo/ui#build\n  root cause:\n    @demo/web#build ← @demo/ui#build ← file packages/ui/src/index.ts\n```\n\n`--format json`\nEvery report verb prints JSON with a published schema, and failures keep their full log.\n\n`vx show`` vx info``vx last``--dry=json`\n// extensibility is king\n\nEvery plugin below is a separate package on core’s public seams, and yours can be too.\n\n// 9,603 tasks · 1,601 projects · 30 levels · identical commands, identical concurrency\n\nTime each tool adds over the ideal run; lower is better.\n\nBenchmark 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.\n\nRun 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.\n\n// vx vs Turborepo vs Nx\n\n|  | vx | Turborepo | Nx | \n|---|---|---|---|\n| A file sandbox for every task | Local and free, Linux and macOS | None | Nx Cloud add-on | \n| Remote execution you host | Bazel’s open REAPI protocol | None | Nx Agents on Nx Cloud | \n| A remote cache on any backend | REAPI, Turborepo’s or Nx’s wire, by plugin | Its own HTTP API | Nx Cloud or its own API | \n| Config is code | TypeScript, evaluated and hashed | JSON | JSON, merged with inferred tasks | \n| No background daemon | None | None for turbo run | On by default | \n\n// four commands\n\n```\nnpm install -D @vzn/vx\nnpx @vzn/vx init                 # a vx.config.ts per package; add the cache block each TODO shows\nnpx @vzn/vx run build --all      # builds in dependency order; stores what is cached\nnpx @vzn/vx run build --all      # again: the cached tasks are up-to-date\n```\n\nComing from Turbo or Nx: the same `vx init` writes the native vx config from it.\n\n// one run, after you edit app\n\n`app` builds after what it uses.`ui` and `api` build at once.\n// what you can count on\n\nA task’s cache key covers every file, setting and env var it declares.\n\nCaching in depth →\nA sandboxed task cannot read a workspace file it did not declare.\n\nSandboxing →\nPlugins decide where tasks run, where the cache lives and who watches.\n\nWriting a plugin →\nMIT, no paywall, no cloud, no account.\n\nMigrate →", "url": "https://wpnews.pro/news/show-hn-vx-vite-like-task-runner-fastest-safest-open-yours", "canonical_source": "https://vznjs.github.io/vx/", "published_at": "2026-10-15 17:07:22+00:00", "updated_at": "2026-10-15 17:27:07.613124+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "ai-tools"], "entities": ["VX", "vznjs", "Turborepo", "Nx", "Vite Task", "Bazel", "REAPI", "vx.config.ts"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/show-hn-vx-vite-like-task-runner-fastest-safest-open-yours", "markdown": "https://wpnews.pro/news/show-hn-vx-vite-like-task-runner-fastest-safest-open-yours.md", "text": "https://wpnews.pro/news/show-hn-vx-vite-like-task-runner-fastest-safest-open-yours.txt", "jsonld": "https://wpnews.pro/news/show-hn-vx-vite-like-task-runner-fastest-safest-open-yours.jsonld"}}