Build Izwi from source for development, backend-specific installs, or to customize your setup. See the Runtime Support Matrix before choosing a build target. In particular:
  • GitHub Release artifacts and source builds do not expose the same backend set.
  • Metal is the primary accelerated source-build path on Apple Silicon.
  • CUDA source builds are useful for development, custom validation, and fallback debugging. Linux and Windows GitHub Release artifacts are CPU-only; the CUDA distribution path is the Docker CUDA image/profile on NVIDIA Linux hosts.

Prerequisites

All Platforms

  • Git — Version control
  • Rust — 1.83 or later (stable). CI and Docker builds use current stable Rust; the Docker CPU builder currently uses Rust 1.88.
  • Node.js — 18+ for UI development. Release CI uses Node 20, while the Docker UI builder currently uses Node 24.
  • espeak-ng (optional, required only for Kokoro-82M TTS)
Treat Rust 1.83 and Node 18 as minimums. If you are reproducing release or Docker behavior exactly, use the toolchain versions from the release workflow or Dockerfile.

macOS

Linux (Ubuntu/Debian)

Windows

  1. Install Visual Studio Build Tools
    • Select “Desktop development with C++”
  2. Install Rust
  3. Install Git

Clone the Repository

If you plan to use Kokoro-82M, install espeak-ng using your platform guide before running TTS:

Build

The install script builds the CLI, server, and desktop binaries together and makes the backend choice explicit:
Backend-specific examples:
On Linux, the script defaults to cpu. On Apple Silicon macOS, it defaults to metal. The repository’s Cargo configuration includes a stable-Rust workaround for Candle 0.11.0 on Apple Silicon. Keep .cargo/config.toml in the checkout and avoid replacing its target flags with a workspace-wide RUSTFLAGS value; release, debug, and test profiles are configured to work together.

Manual Cargo Builds

If you only want specific binaries, use package-scoped commands:
For Whisper CUDA experiments, source builds can add Candle-backed CUDA features such as flash-attn or cudnn, for example cargo build --release -p izwi-server --features cuda,flash-attn. Only enable cudnn when the matching cuDNN development and runtime libraries are installed.

Install UI Dependencies

The web UI requires Node.js:

Build the UI

Required for desktop app builds. The UI must be built before compiling izwi-desktop:

Install CLI Tools

Using the Install Script

This installs to ~/.local/bin:
  • izwi — Main CLI
  • izwi-server — API server
  • izwi-desktop — Desktop application
Verify the resulting backend support with:
After you start the server with izwi serve, run izwi status --detailed to confirm which backend the runtime actually selected.

Manual Installation


Development Mode

Run Server in Dev Mode

Run UI in Dev Mode

In a separate terminal:
The dev UI runs at http://localhost:5173 and proxies API requests to the server.

Run with Hot Reload


Project Structure


Running Tests


Building Release Packages

Tauri installer bundles include the release CLI and server binaries as bundled resources, so build those binaries before running cargo tauri build. If you chain the commands, use && so Tauri does not continue after a failed binary build.

macOS DMG

Output: target/release/bundle/dmg/Izwi_*.dmg

Linux DEB

Output: target/release/bundle/deb/izwi_*.deb

Windows Installer

Output: target/release/bundle/nsis/Izwi_*-setup.exe

Troubleshooting

Rust version too old

Missing OpenSSL (Linux)

Metal not available (macOS)

Ensure you’re on Apple Silicon and macOS 12.0+:

CUDA build fails

Ensure CUDA toolkit is installed and nvcc is in PATH:

frontendDist path doesn’t exist

If you see this error when building:
Build the UI first:
Then retry the build.

Next Steps