From vz
Run commands in instant Linux VMs on macOS via vz. Use when the user needs to: (1) compile or test code for Linux (cross-compile, Linux-only deps), (2) run Linux-specific tools (apt-get, systemd, docker-in-VM), (3) execute commands in an isolated Linux environment, (4) work on a project that has a vz.json file. TRIGGER when: project contains vz.json, user says "run in Linux", "test on Linux", "compile for Linux", "vz run", or needs Linux-only behavior. DO NOT TRIGGER when: commands work fine on macOS natively.
npx claudepluginhub gpu-cli/vz --plugin vzThis skill uses the workspace's default tool permissions.
Run commands inside a lightweight Linux VM on macOS via Apple's Virtualization.framework.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Processes PDFs: extracts text/tables/images, merges/splits/rotates pages, adds watermarks, creates/fills forms, encrypts/decrypts, OCRs scans. Activates on PDF mentions or output requests.
Share bugs, ideas, or general feedback.
Run commands inside a lightweight Linux VM on macOS via Apple's Virtualization.framework. The VM boots in ~3s, mounts the project directory via VirtioFS, and persists across runs.
Check if the project has a vz.json in the working directory or parents. If it does,
Linux commands should go through vz run instead of running locally.
vz run <command...>
Output streams in real-time. Exit code propagates. Environment variables from
vz.json are injected automatically (PATH, HOME, CARGO_TARGET_DIR, etc.).
Examples:
vz run cargo build
vz run cargo test
vz run make -j4
vz run apt-get install -y libssl-dev # only works during setup, not ad-hoc
vz run python3 script.py
vz run -i bash
Opens a PTY-backed interactive session. Use for debugging, exploring the VM filesystem, or running interactive tools.
vz init # generate vz.json (auto-detects Rust/Node/Python/Go)
vz init --template rust # force a specific template
vz init --image debian:12 # override base image
vz status # show daemon/VM state, project, mounts
vz stop # stop the VM (persists disk, next run reboots)
vz run --fresh # destroy VM + re-run setup from scratch
vz logs # show daemon logs
vz logs -f # follow daemon logs
Use vz run when:
vz.jsonUse local execution when:
vz.json exists and user hasn't asked for Linuxvz.json has a setup array — these run once on first boot and are cached by hash.
Do NOT put one-off commands in setup. Instead:
If the user needs a new package installed, suggest adding it to the setup array
in vz.json and running vz run --fresh to re-provision.
vz initvz run --fresh and watch outputvz stop then retryvz.json setup array