Getting Started

Getting Started

Project status, expectations, and the shortest path into the codebase.

Wave VM is a local-first desktop application for creating and managing virtual machines. It is built with Tauri 2, a Rust backend, and a vanilla HTML, CSS, and JavaScript frontend. Direct QEMU integration is the virtualization path; libvirt is not a mandatory dependency.

The project is in active development. The inspected repository is at Milestone 2: First Real VM Lifecycle. It is not a complete virtual machine manager yet, and there is no public download.

Current status

The current build implements:

  • A Tauri 2 desktop shell with a persistent multi-page frontend.
  • Host diagnostics for the operating system, architecture, CPU count, memory, and application-data free space.
  • QEMU and qemu-img discovery through bundled resources, PATH, and standard platform locations.
  • QEMU version probing with a five-second timeout.
  • Linux KVM verification by opening /dev/kvm and issuing KVM_GET_API_VERSION.
  • VM definitions with validated names, memory, virtual CPU counts, guest architecture, and disk size.
  • Thin-provisioned QCOW2 disk creation with protection against overwriting existing disks.
  • QEMU launch with KVM when verified usable, or software emulation (TCG) as a fallback.
  • Start and stop through a private QMP Unix socket, with process tracking and bounded termination fallbacks.
  • A genuine guest console through QEMU WebSocket VNC and bundled noVNC, bound to loopback.
  • Schema-v2 local configuration with atomic writes and restrictive Unix permissions.

What this build is not

The current build cannot install a guest operating system, select an ISO, attach installation media, download images, configure networking, edit or delete a machine, reset or pause it, take snapshots, or use USB passthrough. A configured disk is blank until an operating system is installed in a later milestone.

What you can inspect today

Running the desktop application shows host readiness, saved machines, local storage, and application settings. You can create a machine definition, create its QCOW2 disk, start and stop a real QEMU process, and open the guest display while the machine is running.

The console is a real VNC connection to the running guest, not a screenshot or a simulated terminal. Because no guest operating system is installed by this build, a new machine may display only firmware output or a no-bootable-device message.

The lifecycle currently requires a Linux x86_64 host and supports x86_64 guests only. QEMU and qemu-img must be installed. KVM is optional; without a verified /dev/kvm, QEMU uses software emulation and may be slow.

Next steps