Every task has a key
Every task has a key
A task you never cache still has a key. Change its inputs and every cached task after it runs again, so you never get a build made for old inputs.
vx runs and caches your task graph, correctly, and nothing else. How a run works, and what will never be inside.
vx runs and caches your task graph, correctly, and stops there. Here is what that means in practice.
flowchart LR L[read the lock] --> G[build the graph] G --> K[derive keys] K --> S[schedule] S --> X[executor: where it runs] S --> C[cache: where artifacts live] S --> T[telemetry: who watches] style K stroke:#c6f84e,stroke-width:2px
vx lock runs each vx.config.ts once and saves the
result. A run reads only that.In plugin terms the stages are named, in order:
config → discover → project → graph → key → fingerprint
→ measures → schedule → admitexecutor, cache, telemetry, output, setup, teardown
and commandsA plugin can fill any of them.
Core turns on no plugin by default. With none, vx still runs and caches on your machine.
build: { exec: { command: 'tsc -b' }, inputs: { files: ['src/**', 'tsconfig.json'] }, outputs: { files: ['dist/**', '*.tsbuildinfo'] }, cache: true,}cache: true, no cache. vx never guesses
what a task reads.| Never in vx | Why |
|---|---|
| A cloud, account or dashboard | vx does not need to know your company exists. |
| A daemon | A second copy of the truth can go stale. Git is read fresh per run. |
| Inferred or traced inputs | A trace says what a task read once. A key is needed before it runs. |
| JavaScript-function tasks | The shell is the API. Your tools stay yours. |
| Named, global inputs or env | Configs are TypeScript. A shared preset is an import. |
Remote caches, remote execution, telemetry and CI summaries are plugins
in their own packages. @vzn/vx-reapi (Bazel’s Remote Execution API)
shows the plugin points are wide enough.
With no cloud to sell, vx has one job: be correct and fast on the machine in front of you.
Next: Why vx is fast. Reference: Architecture. More at vznjs.github.io/vx.