Skip to content

CLI commands

The vow binary is the toolchain entry point (compiler, runner, formatter, LSP). Package work uses vpm — prefer it over the deprecated vow add / vow sync wrappers.

Terminal window
vow --version # or: vow version
vow help # list commands
vow help build # per-command usage

Global flags: -h / --help, -v / --version.

Terminal window
vow new my-app
vow init # same as: vow new .
vow init my-api # same as: vow new my-api

Creates project.toml, src/main.vow, .gitignore, and a short README. Destination must be empty (or missing). init is an alias for new with an optional directory (defaults to .).

Terminal window
cd my-app
vow check src/main.vow
vow run src/main.vow

You can also scaffold with vpm init — see vpm.

Command Usage Notes
build vow build <file.vow> [-o out] [--release] [--opt 0|1|2|3] [--json] Native binary. Default LLVM O1; --release is O3 + runtime -O2. --json for machine-readable diags.
run vow run <file.vow> [--release] [--manifest file] [-- <program args…>] Compile then execute. --manifest expands grants from TOML. Args after -- go to the binary (--grant …, --audit-log, --budget cpu-ms:N).
check vow check <file.vow> [--json] Type-check only — no codegen. Prints ok or diagnostics.
test vow test <file.vow> [--json] Run test blocks in the file.
explain vow explain <file.vow> Print escape / memory plan (regions, stack vs heap).
inspect vow inspect <binary> [--json] Inspect compiled binary metadata / heuristics.
profile vow profile <file.vow> [--json] [--samples N] [--grant SPEC] Measure runs; report p50/p95/p99 and suggested cpu-ms budget.
Terminal window
vow build src/main.vow -o app
vow build src/main.vow -o app --release
vow check src/main.vow --json
vow run src/main.vow -- --grant fs-read:/tmp --grant net:example.com
vow run src/main.vow --manifest vow.grants.toml -- --audit-log --budget cpu-ms:500
vow profile tests/lang/phase3b_budget.vow --samples 5
vow inspect ./app --json
./app --grant fs-read:/tmp

vow build / vow run / vow check auto-run vpm install when lock/deps are missing and vpm is on PATH.

Command Usage Notes
fmt vow fmt <file.vow> [--write] Format to stdout; --write rewrites the file. Normalizes functionfn. Not a full prettier.
lsp vow lsp Language server over stdio JSON-RPC. Install extension vowlang.vow-lang from the VS Code Marketplace.
Terminal window
vow fmt src/main.vow
vow fmt src/main.vow --write

Prefer vpm for day-to-day dependency work:

Terminal window
vpm add vow-web-server@0.2.1
vpm install

Still present on vow (compatibility):

Command Usage Status
add vow add <name> <git-url> Deprecated — use vpm add … --git
sync vow sync Deprecated — use vpm install
audit vow audit <pkg-or-path> Capability / effect audit of a package or path
Terminal window
vow audit .
vow audit vow-web-server
Terminal window
vow audit-status

Runs the built-in STATUS regression suite (tools/audit_status/). Useful for contributors verifying the feature table — not an end-user app command.

Terminal window
vow help
vow help <command>
vow version
Goal Command
New project vow new <dir> or vow init
Type-check vow check <file>
Build binary vow build <file> -o out
Run once vow run <file> [--manifest …] [-- --grant …]
Run tests vow test <file>
Memory plan vow explain <file>
Inspect binary vow inspect <binary> [--json]
Profile / budgets vow profile <file> [--samples N]
Format vow fmt <file> [--write]
Editor LSP vow lsp
Add / install deps vpm add / vpm install
Global deploy tool vow add vow-serve -gvow-serve, vds
Delegate to vow-serve vow serve start (when vow-serve on PATH)
Cap audit vow audit <path>