wax

wax is the front door to the command line toolchain. It sends each command to the installed tool that owns it.

Commands

Command Tool Purpose
wax new Create a one shot, standalone loop, or embedded project.
wax run Build and run a one shot or standalone host target.
wax build waxc Compile a project.
wax check waxc Check a project without producing an artifact.
wax targets waxc Inspect resolved manifest targets without compiling.
wax add, install, update, and other package verbs Packages Manage dependencies, accounts, and published packages.
wax debug waxdbg Debug a program or inspect a recording.
wax lsp Editor support Run the language server over standard input and output.

Start a project

This complete first pass stays on the wax surface:

wax new my-app --yes
cd my-app
wax run --build-tier instant
wax add Easing @wax/easing "^1.0.3"
wax check
wax build
wax debug init

run gives the quick edit and run loop. check validates the application and installed package sources. build writes the configured delivery artifact. The final command binds a debugger session to the project. Continue with editor setup to install the extension once your editor's command line launcher is available.

Most command arguments pass directly to the focused tool. wax new and wax run are workflows owned by the driver: new creates a project driven by its manifest, while run builds a private run artifact and forwards arguments after -- to the program. Output, diagnostics, and exit status from focused tools otherwise pass back unchanged.

Builds keep the Debug/Release preset, Instant/Balanced/Optimized build tier, and C/Native/WebAssembly backend as independent choices. See Build Wax projects for the defaults and custom C compiler support.

Target discovery

wax targets shows manifest defaults, every named target after inheritance, and which target an ordinary build selects. Values omitted from the manifest remain omitted rather than expanding to compiler defaults. The JSON form emits one versioned wax.targets.v1 document designed for build tools and coding agents.

wax targets
wax targets --json

The JSON keeps unspecified bindings as null and an intentional empty binding set as []. With several targets and no default, discovery succeeds with selectedTarget: null; a subsequent build must pass --target.

Editor extension

wax vscode installs the editor extension bundled with the toolchain. It looks for supported editor command line launchers, or accepts an explicit launcher and VSIX path.

wax vscode
wax vscode --help

Versions and help

wax --version prints the driver and installed component versions. wax --help lists the available commands. The driver forwards wax <command> --help to the component that owns the command.

wax --version
wax --help
wax build --help

Discover installed commands

Run wax capabilities --json for installed command schemas and versions. Unavailable components are reported explicitly and cause exit 1. See the generated CLI reference or its plain Markdown.

Run without an external compiler

On macOS ARM64, Linux x64/ARM64, and Windows x64, wax run executes a Native Release image directly. Its default build tier is Instant. Explicit backend, preset, and tier choices in your command or project are respected; C and Debug builds still use the external compiler. wax build exports an application and currently needs a Clang-compatible compiler and platform linker.

wax run --record first-run.wxs saves a Native run for Inspector. Use a new filename for each run; existing recordings are preserved. Follow Your first investigation for a complete example.