Installation

Verve targets Zig 0.16.0 or newer. Verify your toolchain first:

zig version
# 0.16.0

Get Verve

Clone the framework — a Verve application is a copy of the framework source tree, so the checkout doubles as your scaffolding source:

git clone https://github.com/sirhco/verve
cd verve
zig build

A clean zig build produces three things:

ArtifactPurpose
zig-out/bin/verve-serverthe demo app's HTTP server
zig-out/bin/verve-cliproject scaffolder (verve-cli new)
client.wasm + island chunkshydration runtime, embedded into the server

Scaffold your first project

./zig-out/bin/verve-cli new myapp        # web app (default)
./zig-out/bin/verve-cli new mydesk --desktop   # native desktop app
cd myapp
zig build run

The dev server listens on http://127.0.0.1:8080.

The scaffold copies build.zig, src/, and tools/ into the new directory — your application code lives in src/app/ and the framework builds the server, the WASM client, and per-island chunks around it. See Project structure for the full tour.

Platform requirements

Web apps need nothing beyond Zig. Desktop apps embed the OS webview:

  • macOS — Cocoa + WebKit, no extra dependencies.
  • Windows — the WebView2 header and WebView2Loader.dll are vendored in-tree; runtime needs the WebView2 Evergreen Runtime (preinstalled on Windows 11, bootstrapper on Windows 10).
  • Linux (GTK3, default)sudo apt install libgtk-3-dev libwebkit2gtk-4.1-dev (Fedora: gtk3-devel webkit2gtk4.1-devel).
  • Linux (GTK4)sudo apt install libgtk-4-dev libwebkitgtk-6.0-dev, build with zig build -Dgtk4=true run.

Build options

FlagEffect
-Dpublic-dir=<path>embed a static-asset directory, served at /public/* with cache-busted URLs
-Di18n-dir=<path>directory of <locale>.json catalogs (default i18n/)
-Di18n-default=<tag>default locale for the lazy catalog

Next: Hello world (web).