Installation
Verve targets Zig 0.16.0 or newer. Verify your toolchain first:
zig version
# 0.16.0Get 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 buildA clean zig build produces three things:
| Artifact | Purpose |
|---|---|
zig-out/bin/verve-server | the demo app's HTTP server |
zig-out/bin/verve-cli | project scaffolder (verve-cli new) |
client.wasm + island chunks | hydration 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 runThe 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.dllare 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 withzig build -Dgtk4=true run.
Build options
| Flag | Effect |
|---|---|
-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).