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 installThe 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 devThis 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
/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-bundleThe 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 logSee 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.