# The CLI

`vyrn` is one binary. `vyrn run` needs no other tool, `vyrn build` writes a native binary, and tests, benchmarks, formatting and docs are subcommands.

## Run, check, build

`vyrn run` compiles to WebAssembly and runs it, and needs nothing installed. `vyrn check` diagnoses without running. `vyrn build --target wasm` writes the module; `vyrn build` puts the same bytes through `wasm2c` and `clang` into a native binary. Both are the same program — the route harness runs every example both ways and compares the bytes.

## Format, document, test

`vyrn fmt` writes the one canonical layout. It has no style options, and `--check` is the CI gate. `vyrn doc` writes Markdown API docs from the `///` comments, and `--verify` fails when they drift from the code. `vyrn test` and `vyrn bench` have [their own page](https://vyrn-lang.github.io/tooling/testing.html).

## vyrn why

`vyrn why <file>` answers with a module's audience and every import chain that reaches it. `--cost` reports, per function, the lines that allocate, copy, grow a container and keep a check. `--capability fs` lists every chain that pulls the file system into an artifact.

---

From https://vyrn-lang.github.io/tooling/commands.html — generated by `site/export.vyrn` from the Vyrn repository.
