High-performance virtualization for Apple Silicon (M1/M2/M3/M4) built with Rust and Tauri.
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?
.unwrap() calls in production| 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 |
# Install QEMU (required for VM execution)
brew install qemu
# Or build from source for optimal performance
./src-tauri/sidecars/qemu/build-qemu.sh
git clone https://github.com/pallab-js/r-utm.git
cd r-utm
npm install
# Start the development server with hot reload
npm run tauri dev
# Build the production application
npm run tauri build
The built application will be in src-tauri/target/release/bundle/.
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
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 accelerationvibe-qmp: QEMU Machine Protocol client via Unix Domain Socketsvibe-storage: QCOW2 image management with snapshot supportvibe-config: TOML-based VM configuration serializationvibe-security: Cryptographic operations and input validationvibe-monitor: Real-time VM metrics collectionvibe-cores: Apple Silicon P/E-core allocation suggestionsThe frontend uses Svelte 5's new Runes system for fine-grained reactivity:
$state(): Reactive state management$derived(): Computed values$effect(): Side effects and subscriptionsVM 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 }
Application settings are stored in ~/.config/VibeVisor/settings.toml and can be configured via the Settings UI.
| 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 |
| Shortcut | Action |
|---|---|
Cmd+K |
Open command palette |
Esc |
Close modals/dialogs |
Ensure QEMU is installed and accessible:
which qemu-system-aarch64
which qemu-img
VibeVisor searches for QEMU in this order:
/usr/local/bin//opt/homebrew/bin/ (Homebrew on Apple Silicon)src-tauri/sidecars/qemu/ (bundled)PATHThe app requires com.apple.security.hypervisor entitlement. This is automatically bundled in production builds.
qemu-system-aarch64 --version~/Library/Application Support/VibeVisor/vms/We welcome contributions! Please see our Contributing Guide for details.
git checkout -b feature/amazing-featurenpm run check && cd src-tauri && cargo testgit commit -m 'feat: add amazing feature'Look for issues labeled good-first-issue for beginner-friendly tasks.
# 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
VibeVisor implements multiple layers of security hardening:
0o700).unwrap() Calls: Proper error handling throughoutSee our Security Policy for details, including audit history and vulnerability reporting.
This project is licensed under the MIT License.
Made with โค๏ธ for the Apple Silicon community