The CLI

verve-cli scaffolds new projects from the framework checkout it was built in. Build it with zig build (it lands at zig-out/bin/verve-cli).

verve-cli new

verve-cli new <target-dir> [options]
OptionEffect
--webscaffold a standard HTTP server app (default)
--desktopscaffold a native desktop app (OS webview)
--template full\|minimaldesktop only: demo-rich scaffold vs single-window starter
--name <ident>package name (defaults to sanitized target dir basename)
--verve-path <path>path to the Verve checkout the scaffold depends on
--release <tag>desktop only: depend on a release tarball instead of a local path
--release-hash <hash>pin the release tarball hash (requires --release)

Notes:

  • The target directory must be empty (or absent) — the CLI refuses to scaffold over existing files.
  • --name must be a valid Zig identifier; a basename like my-project is auto-sanitized to my_project.
  • Web scaffolds copy the full framework tree (build.zig, src/, tools/); desktop scaffolds vendor the platform layer and reference Verve through a .path dependency — --verve-path overrides the default baked in at CLI build time.

Examples

# Standard web app
verve-cli new blog

# Desktop app, full demo scaffold (tray, notifications, multi-window…)
verve-cli new studio --desktop

# Desktop app, minimal single-window starter
verve-cli new widget --desktop --template minimal

# Explicit package name for a hyphenated directory
verve-cli new my-site --name mysite

After scaffolding

cd blog
zig build run          # web: dev server on :8080
# or, desktop:
zig build && ./zig-out/bin/app