A typo never runs half the graph
Ask for a task no project has and vx stops before anything starts.

vx run build lnit --all in many runners builds everything and quietly skips the misspelled task. You find out later that lint never ran.
vx refuses the run, names the task it could not find and lists the ones that exist.
// what it prints
$ vx run build lnit --all
vx run: no projects declare task(s): lnit. Tasks: build, test.More in Run what you mean

Run just the task
Skip the dependency chain when you know it is already built.

Timeouts
A hung task is killed and reported as a timeout, not left to stall the run.

Pass arguments through
Arguments after -- reach the task, and the cache keeps each set apart.

Group tasks
Name a set of tasks once and run them with one word.

Source-only packages still count
A package with no build step still moves its dependants’ cache keys when its files change.

Say what a task needs
One short syntax for upstream, cross-project and pattern edges.

Filter by tag
Tag projects once, then run a task across every project with that tag.

Filter by folder
Pick projects by where they live, or the root project alone.

Remote pools at their own width
Send work to a remote pool and vx fills the pool, not your laptop’s core count.

Runs take turns
Two runs in one checkout wait for each other instead of fighting over files.