Getting Started

Building from source

Clone, install, run, and build the desktop application.

The desktop application is a Tauri 2 project. The frontend is static and has no bundler; Tauri serves the files in src/. The Rust backend owns host detection, VM validation, persistence, disk creation, and the QEMU process lifecycle.

Clone and install

git clone https://github.com/somemorewater/waveVM.git
cd waveVM
npm install

The repository contains both npm and pnpm lockfiles. The documented workflow uses npm. Do not mix package managers in a way that produces an unrecorded dependency tree.

Run the desktop application

npm run dev

This launches the Tauri window. Do not open src/index.html directly in a browser; the frontend requires the Tauri desktop shell and its command bridge.

QEMU is required for VM operations

The shell compiles and launches without QEMU. Host readiness will report QEMU and qemu-img as missing, and KVM as unavailable if /dev/kvm is not accessible. Creating a disk or starting a machine requires QEMU and qemu-img.

Checks

These are the commands documented by the desktop repository:

npm run check:frontend
cargo fmt --check --manifest-path src-tauri/Cargo.toml
cargo check --manifest-path src-tauri/Cargo.toml
npx tauri build --no-bundle

The Rust checks require the Tauri system libraries. The final command builds a release binary without producing an installer bundle.

Build output

The release binary is written under src-tauri/target/release/. It is a local build artifact, not a public release. There is no supported installer, versioned release, or checksum.

Local data

On first launch, the application resolves the platform application data directory from the bundle identifier com.wavevm.desktop and creates config.json and a vms/ directory. The configuration is schema version 2 and is written atomically. Each machine receives its own directory:

vms/<machine-id>/
  disk.qcow2   # blank QCOW2 virtual disk
  qemu.log     # latest QEMU run log

See Storage and configuration for the details and platform paths.

Next

If the build fails, see Troubleshooting. To understand the current interface, read the user guide.