Roadmap

The path to a
complete machine.

The development path from a working desktop foundation to a complete virtual machine manager. Statuses reflect the inspected repository, not a schedule.

Current position

Milestone 2 is implemented.

Complete

The first real VM lifecycle is implemented: persisted definitions, QCOW2 disks, QEMU start and stop, QMP control, and a loopback noVNC console. Guest installation, networking, and machine management remain ahead.

The console displays the actual guest framebuffer, but this build cannot install a guest operating system. No dates or completion estimates are implied.

Next milestone

Next: guest installation media and networking

Planned
CompleteImplemented in the inspected repository.
In progressPartially implemented; the missing work is stated explicitly.
PlannedNot implemented. A development target.
Under considerationAn idea under discussion, not an approved commitment.

Development phases

Milestones and evidence

Each phase lists its purpose, dependencies, and the source evidence used to determine its status. Dates and completion percentages are intentionally omitted.

Application shell and persistence

Desktop foundation

Complete

Establish a real desktop application with a trustworthy shell, local configuration, and a clear frontend boundary.

The foundation milestone provides a Tauri 2 window, a persistent vanilla frontend, versioned local configuration, atomic writes, and restrictive Unix permissions. The configuration schema is now version 2.

  • Tauri 2 application shell and Rust command boundary.
  • Vanilla HTML, CSS, and JavaScript frontend served by Tauri.
  • Persistent multi-page workspace with hash-based navigation.
  • Versioned config.json in the platform application data directory.
  • Atomic configuration writes with 0700 directories and 0600 files on Unix.

Dependencies

  • Rust stable
  • Node.js and npm for the Tauri CLI
  • Tauri 2 host prerequisites

Capability detection

Host readiness and engine discovery

Complete

Detect what the host can actually do before attempting any virtual machine operation.

Host diagnostics, QEMU and qemu-img discovery, version probing, and Linux KVM verification are implemented. Windows and macOS host behavior has not been verified.

  • Operating system, architecture, logical CPU count, memory, and application-data free space.
  • QEMU and qemu-img discovery through bundled resources, PATH, and standard platform locations.
  • Version probing with a five-second timeout and explicit failure reporting.
  • Linux KVM verification by opening /dev/kvm and issuing KVM_GET_API_VERSION.
  • Readiness warnings when QEMU, qemu-img, or KVM is unavailable.

Dependencies

  • Desktop foundation
  • QEMU installation for VM operations
  • Optional usable /dev/kvm

Machine configuration and storage

VM definitions and disk lifecycle

Complete

Turn a virtual machine into a validated local definition with explicit, protected storage.

Machine definitions are created with validated names, resources, and an x86_64 guest architecture. Each machine receives a thin-provisioned QCOW2 disk that is never overwritten.

  • Schema-v2 configuration stores VM definitions with lifecycle state.
  • Validation covers name, guest architecture, memory, virtual CPUs, disk size, host memory, host CPUs, and free space.
  • The lifecycle currently requires a Linux x86_64 host and supports x86_64 guests only.
  • qemu-img creates a QCOW2 disk in vms/<machine-id>/disk.qcow2.
  • Existing disk files are never overwritten; Unix disks are restricted to 0600.

Dependencies

  • Versioned configuration store
  • qemu-img discovery and probing
  • Clear storage layout under the application data directory

Process control

QEMU launch and QMP lifecycle

Complete

Start and supervise QEMU safely, then control supported lifecycle operations through QMP.

QEMU is launched with the configured resources. KVM is used when verified usable, with a TCG fallback. Start and stop use a private QMP Unix socket and bounded process-termination fallbacks.

  • QEMU arguments are constructed through typed vectors, never shell command strings.
  • The QEMU process is tracked, duplicate launches are blocked, and unexpected exits are detected through polling.
  • QMP performs the handshake, queries runtime status, requests system_powerdown, and falls back to quit.
  • Stop falls back to SIGTERM and then a forced kill if QEMU does not exit within bounded timeouts.
  • Persisted states left in starting, running, or stopping are reconciled when the application starts.

Dependencies

  • VM definitions and disks
  • QEMU system emulator discovery
  • A private local QMP transport

Interactive guest display

Graphical console

Complete

Provide a genuine interactive graphical console for the running guest.

A running machine can be opened in an interactive console backed by QEMU WebSocket VNC and bundled noVNC 1.7.0. The listener is loopback-only and protected by a per-run password.

  • QEMU VNC is bound to 127.0.0.1 and the WebSocket port is discovered through QMP.
  • The console password is generated for each run and kept in memory only.
  • Keyboard and mouse input are sent to the guest; the viewport scales to the console surface.
  • The console is available only while the machine is running and requires QEMU WebSocket VNC support.
  • The current build cannot install a guest operating system, so the display may show only firmware or a no-bootable-device message.

Dependencies

  • Working QEMU lifecycle
  • QEMU WebSocket VNC support
  • Bundled noVNC client

Installation and connectivity

Guest installation media and networking

Next milestone
Planned

Make operating system installation and guest connectivity practical without weakening local control.

This is the next planned milestone. No ISO selection, media attachment, guest OS installation, image download, or network configuration exists. QEMU currently starts with no guest network device.

  • Select local ISO images and validate paths.
  • Verify selected images when reliable checksum or signature data is available.
  • Attach installation media to a machine and support a guest OS installation workflow.
  • Detect networking capabilities and configure local VM networking.
  • Avoid arbitrary QEMU arguments and unauthenticated network control interfaces.

Dependencies

  • Working VM lifecycle
  • QCOW2 disk creation
  • Documented host network capabilities

Platform support

Cross-platform validation and packaging

Planned

Verify supported host platforms and produce installable builds without overstating support.

Linux x86_64 is the only environment exercised here. macOS and Windows behavior is unverified, and no installer or packaged release exists.

  • Compile and verify host behavior on macOS and Windows.
  • Verify acceleration detection separately from device presence.
  • Produce platform-appropriate packages and application icons.
  • Document supported and unsupported environments explicitly.
  • Keep platform-specific implementations behind clear interfaces.

Dependencies

  • Verified lifecycle and console
  • Access to each target host for verification

Trust, documentation, and distribution

Release preparation

Planned

Make a release trustworthy, understandable, and maintainable for users and contributors.

No release artifacts or checksums exist. The project must not be described as production-ready.

  • Keep the MIT License and third-party notices accurate as dependencies and assets change.
  • Complete user and contributor documentation for implemented workflows.
  • Review accessibility, security, and failure handling.
  • Prepare release notes, checksums, and support boundaries.
  • Publish only artifacts that have actually been built and verified.

Dependencies

  • Verified cross-platform packages
  • Completed guest installation and management workflows
  • Documentation and security review

Across the roadmap

Cross-cutting work

Security, documentation, accessibility, and reliability are not separate product features. They apply across the lifecycle and are tracked here.

Security foundations

Complete

The current build uses a restrictive Content Security Policy, minimal Tauri capabilities, a private QMP Unix socket, a loopback-only console listener with a per-run password, no guest network device, and restrictive local file permissions.

Evidence: capabilities/default.json · tauri.conf.json · vm/runtime.rs · config/store.rs

Documentation and contributor onboarding

In progress

The desktop README and this documentation site describe the implemented lifecycle and its limits. The MIT License is included; a CONTRIBUTING.md does not exist yet.

Evidence: Desktop README · Website repository

Accessibility review

Planned

Visible focus states, keyboard-accessible controls, and reduced-motion handling exist, but no formal accessibility audit has been completed.

Evidence: Desktop global styles

Lifecycle reliability and recovery

In progress

Process tracking, bounded stop fallbacks, stale-state reconciliation, and QEMU log capture exist. Cleanup after a force-killed desktop process and recovery of orphaned QEMU processes are not guaranteed.

Evidence: vm/runtime.rs · state.rs · error.rs

Not committed

Under consideration

These ideas may be investigated later. They are not approved features, scheduled milestones, or support commitments.

Under consideration

Bundled QEMU distribution

Could remove the external QEMU prerequisite, but adds size, licensing, update, and platform-packaging responsibilities.

Under consideration

Managed image catalogue and downloads

Would require trusted sources, verification data, download management, and ongoing maintenance. No catalogue or download service exists today.

Under consideration

Android host support

Mentioned as a possible long-term direction in project guidance. No implementation, approval, or schedule exists.

Under consideration

Additional accelerator backends

Investigate Windows WHPX and macOS HVF detection. Neither is implemented or verified, and no support is claimed.

Under consideration

USB passthrough

Passing host USB devices into a guest is not implemented. It would need explicit device selection, permission handling, and security review.