// readme

Correct, sandboxed, extensible. No cloud, no account, no paywall.

What vx is

Task orchestration with a cache you can trust, on a core you can extend. Each task is one shell command with declared inputs and outputs; vx runs them in dependency order and replays results from a content-addressed cache.

Quick start

In a git repo:

bunx @vzn/vx init   # installs vx, writes an empty root vx.config.ts and the lockfile plugin

A prebuilt binary for Linux (glibc, not Alpine’s musl) and macOS, x64 and arm64. Windows: run vx inside WSL2.

A task runs its tool directly, never through a package script. Cache one by saying what it reads and writes:

// packages/app/vx.config.ts
import { defineProject } from '@vzn/vx/config'

export default defineProject({
  tasks: {
    build: {
      exec: { command: 'tsc -b' },
      dependsOn: ['^build'], // dependencies build first
      inputs: { files: ['src/**', 'tsconfig.json'] },
      cache: {
        outputs: { files: ['dist/**'] },
      },
    },
  },
})
vx run build --all    # builds, in dependency order; stores the results
vx run build --all    # nothing changed: up-to-date, in milliseconds
rm -rf…