Keep your Turbo or Nx remote cache
Point vx at the remote cache server you already run.

Switching runners should not mean switching cache servers. turboCache() talks to any server with Turbo’s artifacts API, Vercel’s included, and nxCache() to Nx’s self-hosted cache spec.
Your server stays; vx stores its own entries in it.
// what it prints
// vx.workspace.ts
import { turboCache } from '@vzn/vx-migrate'
export default defineWorkspace({ plugins: [turboCache()] })More in Adoption

Start in a minute
Install, init, run.

One binary
Built on Bun, and you never install Bun.

Migrate from Turborepo or Nx
One command writes native vx config from turbo.json or the Nx graph.

Flags you already know
Type what Turborepo, Nx or Vite Task taught you.

The playground
Try vx’s planner in your browser, with nothing to install.

pre and post scripts kept
prebuild and postbuild fold into build when vx init maps your scripts.

Coming from Vite Task
vx-migrate writes configs from vite-plus run.tasks, as it does from Turbo and Nx.

Nx executors, one process each
Any Nx executor runs as one vx task with its Nx environment set.

vx from your own scripts
Plan or run tasks from TypeScript with run and planRun.