r-utm Svelte Themes

R Utm

High-performance virtualization for Apple Silicon. Built with Rust + Tauri + Svelte 5 | ๐Ÿฆ€ Rust-powered VM manager for Apple Silicon โ€” near-native performance, zero vulnerabilities, modern UI.

VibeVisor

High-performance virtualization for Apple Silicon (M1/M2/M3/M4) built with Rust and Tauri.

Overview

VibeVisor is a lightweight, memory-secure virtualization apparatus engineered for macOS on Apple Silicon. It uses a curated QEMU backend with Rust-based control logic for a professional, high-velocity user experience.

Why VibeVisor?

  • ๐Ÿš€ Near-Native Performance: Leverages Apple's Hypervisor.framework (HVF) for minimal overhead
  • ๐Ÿ”’ Security-First Design: Comprehensive hardening with CSPRNG, path validation, rate limiting, and sandboxed processes
  • ๐Ÿฆ€ Rust Backend: Memory-safe, async orchestration with zero .unwrap() calls in production
  • ๐ŸŽจ Modern UI: Svelte 5 with Runes + Tailwind CSS, dark mode aesthetic
  • ๐Ÿ’พ QCOW2 Support: Snapshot capabilities, linked clones, efficient storage

Features

Category Features
Performance HVF acceleration, P/E-core allocation, direct kernel boot, SPICE display
Security CSPRNG passwords, path canonicalization, archive inspection, rate limiting, CSP
Storage QCOW2 disk images, snapshots, import/export, linked clones
Monitoring Real-time VM metrics, CPU topology detection, resource usage charts
UI/UX Svelte 5 reactive components, dark mode, responsive design

Requirements

  • macOS: 14.0+ (Sonoma or later)
  • Hardware: Apple Silicon (M1/M2/M3/M4)
  • Tools: Xcode Command Line Tools
  • QEMU: 9.0+ (aarch64)

Quick Start

1. Install Dependencies

# Install QEMU (required for VM execution)
brew install qemu

# Or build from source for optimal performance
./src-tauri/sidecars/qemu/build-qemu.sh

2. Clone & Setup

git clone https://github.com/pallab-js/r-utm.git
cd r-utm
npm install

3. Development

# Start the development server with hot reload
npm run tauri dev

4. Production Build

# Build the production application
npm run tauri build

The built application will be in src-tauri/target/release/bundle/.

Project Structure

r-utm/
โ”œโ”€โ”€ src/                          # Frontend (Svelte 5)
โ”‚   โ”œโ”€โ”€ app.css                   # Tailwind CSS styles
โ”‚   โ”œโ”€โ”€ app.html                  # HTML template
โ”‚   โ”œโ”€โ”€ routes/                   # SvelteKit routes
โ”‚   โ”‚   โ”œโ”€โ”€ +page.svelte          # Main VM management UI
โ”‚   โ”‚   โ””โ”€โ”€ +layout.svelte        # Layout wrapper
โ”‚   โ””โ”€โ”€ lib/
โ”‚       โ”œโ”€โ”€ components/           # Reusable UI components
โ”‚       โ”‚   โ”œโ”€โ”€ Chart.svelte      # Metrics visualization
โ”‚       โ”‚   โ”œโ”€โ”€ CreateVmWizard.svelte
โ”‚       โ”‚   โ”œโ”€โ”€ EditVmModal.svelte
โ”‚       โ”‚   โ”œโ”€โ”€ Settings.svelte
โ”‚       โ”‚   โ””โ”€โ”€ SpiceDisplay.svelte
โ”‚       โ””โ”€โ”€ stores/
โ”‚           โ””โ”€โ”€ metrics.ts        # VM metrics store
โ”‚
โ”œโ”€โ”€ src-tauri/                    # Backend (Rust/Tauri 2)
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ lib.rs                # Tauri commands + AppState
โ”‚   โ”‚   โ”œโ”€โ”€ main.rs               # Entry point
โ”‚   โ”‚   โ””โ”€โ”€ vibe_core/            # Core modules
โ”‚   โ”‚       โ”œโ”€โ”€ config.rs         # TOML VM configuration
โ”‚   โ”‚       โ”œโ”€โ”€ launcher.rs       # QEMU process launcher
โ”‚   โ”‚       โ”œโ”€โ”€ qmp.rs            # QMP client (Unix sockets)
โ”‚   โ”‚       โ”œโ”€โ”€ storage.rs        # QCOW2 management
โ”‚   โ”‚       โ”œโ”€โ”€ monitor.rs        # VM monitoring
โ”‚   โ”‚       โ”œโ”€โ”€ kernel.rs         # Direct kernel boot
โ”‚   โ”‚       โ”œโ”€โ”€ cores.rs          # P/E-core allocation
โ”‚   โ”‚       โ”œโ”€โ”€ error.rs          # Error types
โ”‚   โ”‚       โ”œโ”€โ”€ security.rs       # Security utilities
โ”‚   โ”‚       โ””โ”€โ”€ rate_limiter.rs   # Rate limiting
โ”‚   โ”œโ”€โ”€ capabilities/
โ”‚   โ”‚   โ””โ”€โ”€ default.json          # Tauri permissions
โ”‚   โ”œโ”€โ”€ sidecars/qemu/            # QEMU binaries
โ”‚   โ”œโ”€โ”€ icons/                    # Application icons
โ”‚   โ”œโ”€โ”€ tauri.conf.json           # Tauri configuration
โ”‚   โ”œโ”€โ”€ vibe.entitlements         # macOS entitlements
โ”‚   โ””โ”€โ”€ Cargo.toml                # Rust dependencies
โ”‚
โ”œโ”€โ”€ .github/                      # GitHub configuration
โ”‚   โ”œโ”€โ”€ workflows/ci.yml          # CI/CD pipeline
โ”‚   โ”œโ”€โ”€ ISSUE_TEMPLATE/           # Issue templates
โ”‚   โ””โ”€โ”€ FUNDING.yml               # Sponsorship links
โ”‚
โ”œโ”€โ”€ package.json                  # Node.js configuration
โ””โ”€โ”€ vite.config.js                # Vite bundler

Architecture

Backend (Rust)

The Rust backend provides robust, memory-safe control over QEMU:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Tauri Commands                        โ”‚
โ”‚              (lib.rs - Frontend Bridge)                  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                          โ”‚
          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
          โ”‚               โ”‚               โ”‚
    โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”
    โ”‚ launcher  โ”‚  โ”‚  config   โ”‚  โ”‚  storage  โ”‚
    โ”‚   (QEMU   โ”‚  โ”‚  (TOML    โ”‚  โ”‚  (QCOW2   โ”‚
    โ”‚  spawn)   โ”‚  โ”‚  parsing) โ”‚  โ”‚  mgmt)    โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ”‚
    โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”
    โ”‚    qmp    โ”‚
    โ”‚  (Unix    โ”‚
    โ”‚  sockets) โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Key Modules:

  • vibe-launcher: Async QEMU process spawning with HVF acceleration
  • vibe-qmp: QEMU Machine Protocol client via Unix Domain Sockets
  • vibe-storage: QCOW2 image management with snapshot support
  • vibe-config: TOML-based VM configuration serialization
  • vibe-security: Cryptographic operations and input validation
  • vibe-monitor: Real-time VM metrics collection
  • vibe-cores: Apple Silicon P/E-core allocation suggestions

Frontend (Svelte 5)

The frontend uses Svelte 5's new Runes system for fine-grained reactivity:

  • $state(): Reactive state management
  • $derived(): Computed values
  • $effect(): Side effects and subscriptions
  • Tailwind CSS v4: Utility-first styling with dark mode

Configuration

VM Configuration (TOML)

VM configurations are stored in ~/Library/Application Support/VibeVisor/vms/:

name = "My Linux VM"
id = "uuid-here"
architecture = "aarch64"

[hardware]
cpu_cores = 4
memory_mb = 4096
cpu_model = "host"

[storage]
disk_path = "/path/to/disk.qcow2"
disk_size_gb = 20
disk_type = "qcow2"
snapshot_enabled = true

[network]
enabled = true
mode = "nat"

[display]
spice_enabled = true
resolution = { width = 1920, height = 1080 }

App Settings

Application settings are stored in ~/.config/VibeVisor/settings.toml and can be configured via the Settings UI.

Supported Guest Operating Systems

Guest OS Status Notes
Linux (AArch64) โœ… Stable Primary target, recommended
Windows (ARM64) ๐Ÿงช Experimental Limited driver support
FreeBSD (AArch64) ๐Ÿงช Experimental Community supported
macOS (VM) โŒ Not Supported Licensing restrictions

Keyboard Shortcuts

Shortcut Action
Cmd+K Open command palette
Esc Close modals/dialogs

Troubleshooting

QEMU Not Found

Ensure QEMU is installed and accessible:

which qemu-system-aarch64
which qemu-img

VibeVisor searches for QEMU in this order:

  1. /usr/local/bin/
  2. /opt/homebrew/bin/ (Homebrew on Apple Silicon)
  3. src-tauri/sidecars/qemu/ (bundled)
  4. System PATH

Hypervisor Entitlement Missing

The app requires com.apple.security.hypervisor entitlement. This is automatically bundled in production builds.

SPICE Display Issues

  • Ensure you're using a SPICE-compatible viewer or the built-in display
  • SPICE is bound to localhost only for security
  • Check firewall settings if connecting remotely

VM Won't Start

  1. Check QEMU is installed: qemu-system-aarch64 --version
  2. Verify VM configuration in ~/Library/Application Support/VibeVisor/vms/
  3. Check logs in the development console or Console.app

Contributing

We welcome contributions! Please see our Contributing Guide for details.

Quick Start for Contributors

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes
  4. Run tests: npm run check && cd src-tauri && cargo test
  5. Commit with conventional commit message: git commit -m 'feat: add amazing feature'
  6. Push and submit a PR

Good First Issues

Look for issues labeled good-first-issue for beginner-friendly tasks.

Development Commands

# Frontend
npm run dev              # Start dev server
npm run build            # Build frontend
npm run check            # Type checking (Svelte)

# Backend (Rust)
cd src-tauri && cargo test       # Run tests
cd src-tauri && cargo clippy     # Linting
cd src-tauri && cargo fmt        # Formatting

# Full application
npm run tauri dev        # Development mode
npm run tauri build      # Production build

Before committing:

npm run check && cd src-tauri && cargo check --lib --bins && cargo test

Security

VibeVisor implements multiple layers of security hardening:

  • ๐Ÿ” Cryptographic Security: CSPRNG-generated passwords with 325+ bits of entropy
  • ๐Ÿ›ก๏ธ Command Injection Prevention: All paths validated and canonicalized
  • ๐Ÿ“ Secure Temporary Files: QMP sockets in restricted directories (0o700)
  • ๐Ÿ“ฆ Archive Inspection: Pre-extraction validation prevents malicious imports
  • โฑ๏ธ Rate Limiting: Token bucket algorithm prevents resource exhaustion
  • ๐Ÿšซ Zero .unwrap() Calls: Proper error handling throughout

See our Security Policy for details, including audit history and vulnerability reporting.

License

This project is licensed under the MIT License.

Acknowledgments

Star History


Made with โค๏ธ for the Apple Silicon community

Top categories

Loading Svelte Themes