{"id":42263959,"url":"https://github.com/mroboff/vm-curator","last_synced_at":"2026-02-17T08:03:28.563Z","repository":{"id":334085194,"uuid":"1139974620","full_name":"mroboff/vm-curator","owner":"mroboff","description":"vm-curator is a fast and friendly TUI to build and manage QEMU/KVM virtual machines for desktop use with working 3D acceleration (para-virtualized and pass-through.)","archived":false,"fork":false,"pushed_at":"2026-02-14T06:54:47.000Z","size":129685,"stargazers_count":154,"open_issues_count":1,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-14T14:44:37.637Z","etag":null,"topics":["3d-acceleration","linux","nvidia-gpu","para-virtualization","qemu-kvm","tui","vm-management"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mroboff.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["mroboff"],"ko_fi":"mroboff"}},"created_at":"2026-01-22T16:59:07.000Z","updated_at":"2026-02-14T06:54:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mroboff/vm-curator","commit_stats":null,"previous_names":["mroboff/computer-history-with-claude","mroboff/vm-curator"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/mroboff/vm-curator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mroboff%2Fvm-curator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mroboff%2Fvm-curator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mroboff%2Fvm-curator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mroboff%2Fvm-curator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mroboff","download_url":"https://codeload.github.com/mroboff/vm-curator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mroboff%2Fvm-curator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29537263,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T05:00:25.817Z","status":"ssl_error","status_checked_at":"2026-02-17T04:57:16.126Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-acceleration","linux","nvidia-gpu","para-virtualization","qemu-kvm","tui","vm-management"],"created_at":"2026-01-27T06:12:03.437Z","updated_at":"2026-02-17T08:03:28.539Z","avatar_url":"https://github.com/mroboff.png","language":"Rust","funding_links":["https://github.com/sponsors/mroboff","https://ko-fi.com/mroboff","https://github.com/sponsors/mroboff):","https://ko-fi.com/mroboff):"],"categories":["Rust"],"sub_categories":[],"readme":"# vm-curator\n\nA fast and friendly Rust TUI for managing desktop QEMU/KVM virtual machines — with 3D acceleration, GPU passthrough, VM import, and 120+ pre-configured OS profiles!\n\n### Changelog\n\n**v0.4.3**\n- **Floppy Disk Support**: Boot floppy image support for OSes that require a boot floppy for installation (e.g., OS/2). Browse for floppy images (.img, .ima, .flp, .vfd) in the create wizard and boot from floppy in the management screen.\n\n**v0.4.2**\n- **macOS Intel VM Support**: Comprehensive overhaul of macOS Intel profiles with Apple SMC emulation, AHCI disk, OpenCore bootloader integration, version-specific CPU models (Penryn/Skylake-Client), passt networking with vmxnet3, and spice-app display with vmware-svga\n- **QEMU Profile Audit**: Review and update of 40+ QEMU profiles against current OS compatibility research — fixes critical boot failures (Bazzite, Pop!_OS, OpenWrt), corrects VGA/network/audio defaults for BSD, Windows 9x, BeOS, Plan 9, and retro OSes, and bumps resource allocations for Proxmox, Tails, and Classic Mac profiles\n\n[Full changelog](CHANGELOG.md)\n\n### Features\n\n**VM Discovery \u0026 Organization**\n- Automatically scans your VM library for directories containing `launch.sh` scripts\n- Hierarchical organization by 16 OS families with emoji icons and 49 subcategories\n- Parses QEMU launch scripts to extract configuration (emulator, memory, CPU, VGA, audio, network, disks)\n- Smart categorization with configurable hierarchy patterns\n- Live process monitoring — shows running VMs with status indicators\n- Search and filter VMs by name\n\n**VM Creation Wizard**\n- 5-step guided wizard for creating new VMs\n- 120+ pre-configured OS profiles with optimal QEMU settings (Windows, macOS, Linux, BSD, Unix, retro, and more)\n- Automatic UEFI firmware detection across Linux distributions (Arch, Debian, Fedora, NixOS, etc.)\n- ISO file browser for selecting installation media\n- Configurable disk size, memory, CPU cores, and QEMU options with direct text editing and size suffixes (e.g., \"8GB\")\n- Use existing disk images (copy or move) instead of creating new ones\n- Support for custom OS entries with user metadata\n\n**VM Import Wizard**\n- Import existing VMs from libvirt (virsh) XML configurations and Quickemu `.conf` files\n- 5-step guided import: select source, choose VM, review compatibility warnings, configure disk handling, review and import\n- Automatic OS profile detection from imported configurations\n- Disk handling options: symlink, copy, or move existing disk images\n\n**GPU Passthrough**\n- **Single-GPU passthrough**: Pass your only GPU to a VM (requires TTY, stops display manager)\n- **Multi-GPU passthrough**: Pass a secondary GPU while keeping the primary for the host\n- **Looking Glass integration**: Near-zero latency display for multi-GPU setups with auto-launch support\n- **PCI passthrough screen**: Select PCI devices (GPUs, USB controllers, NVMe) for VM passthrough\n- **System setup wizard**: One-click VFIO/IOMMU configuration with initramfs regeneration\n\n**3D Graphics Acceleration**\n- Para-virtualized 3D acceleration with `virtio-vga-gl` and SDL `gl=on`\n- Tested on NVIDIA RTX-4090 with driver 590.48.01+\n- Automatic SDL display selection for 3D-enabled VMs\n\n**Snapshot Management**\n- Create, restore, and delete snapshots for qcow2 disk images\n- Visual snapshot list with timestamps and sizes\n- Background operations with progress feedback\n\n**Network Configuration**\n- Network backend selection: user/SLIRP (NAT), passt, bridge, or none\n- Port forwarding with presets for common services (SSH, RDP, HTTP, HTTPS, VNC)\n- Bridge networking with automatic bridge detection, status checklist, and setup guidance\n- Configurable network adapter models per VM\n\n**Shared Folders**\n- Share host directories with VMs using virtio-9p\n- Add, remove, and edit shared folders from the management menu\n- Automatic mount tag generation\n\n**USB Passthrough**\n- USB device enumeration via libudev with sysfs fallback\n- xHCI USB 3.0 controller with 8 ports (supports up to 8 USB 2.0 + 8 USB 3.0 devices)\n- Persistent passthrough configuration\n- Hub filtering and keyboard/mouse detection for passthrough validation\n\n**VM Notes**\n- Free-form personal notes for any VM from the management menu\n- Multi-line text editor with full keyboard navigation\n- Notes displayed in the main info panel and preserved across VM renames\n\n**Launch Script Editor**\n- Edit `launch.sh` scripts directly in the TUI\n- Syntax-aware display with line numbers and horizontal scrolling\n- Automatic QEMU configuration re-parsing after saves\n- Automatic single-GPU passthrough script regeneration when applicable\n\n**Additional Features**\n- Vim-style navigation (j/k, arrows, mouse) with full clickable interface\n- Multiple boot modes (normal, install, custom ISO)\n- Dynamic display backend detection per emulator (GTK, SDL, SPICE-app, VNC)\n- Headless VM support (display=none) with process monitoring\n- Stop/force-stop VMs (ACPI poweroff or SIGKILL)\n- VM rename with persistent custom display names\n- OS metadata with historical blurbs, fun facts, and multi-step installation guides\n- 42+ ASCII art logos for classic and modern operating systems\n- BTRFS copy-on-write auto-disable for VM directories\n- First-time setup wizard for configuring the VM library directory\n- Configurable settings with persistence\n\n### Screenshots\n\n```\n VM Curator (QEMU VM Library in ~/vm-space)\n┌─────────────────────────────────────────────────────────────────────┐\n│ ┌─────────────────────────┐  ┌────────────────────────────────────┐ │\n│ │ VMs (35)                │  │       _    _ _           _        │ │\n│ │ ──────────────────────  │  │      | |  | (_)         | |       │ │\n│ │ 🪟 Microsoft            │  │      | |/\\| |_ _ __   __| | ___   │ │\n│ │   ▼ DOS                 │  │      \\  /\\  / | '_ \\ / _` |/ _ \\  │ │\n│ │     \u003e MS-DOS 6.22   [*] │  │       \\/  \\/|_|_| |_|\\__,_|\\___/  │ │\n│ │     \u003e Windows 3.11      │  │                                   │ │\n│ │   ▼ Windows 9x          │  │   Windows 95 OSR2.5               │ │\n│ │     \u003e Windows 95        │  │   Microsoft | August 1995 | i386  │ │\n│ │     \u003e Windows 98        │  │                                   │ │\n│ │ 🐧 Linux                │  │   The OS that changed everything  │ │\n│ │   ▼ Debian-based        │  │   with the Start Menu, taskbar,   │ │\n│ │     \u003e Debian 12         │  │   and 32-bit computing for all.   │ │\n│ │     \u003e Ubuntu 24.04      │  │                                   │ │\n│ └─────────────────────────┘  └────────────────────────────────────┘ │\n├─────────────────────────────────────────────────────────────────────┤\n│ [Enter] Launch  [m] Manage  [c] Create  [s] Settings  [?] Help     │\n└─────────────────────────────────────────────────────────────────────┘\n```\n\n### Installation\n\n**AUR (Arch / Arch-derived)**\n\n```bash\n# Using your preferred AUR helper\nparu -S vm-curator\nyay -S vm-curator\n```\n\n**crates.io**\n\n```bash\ncargo install vm-curator\n```\n\n**Binary Packages**\n\nPre-built packages (DEB, RPM, AppImage, tarball) are available from [GitHub Releases](https://github.com/mroboff/vm-curator/releases).\n\n**From Source**\n\n```bash\ngit clone https://github.com/mroboff/vm-curator.git\ncd vm-curator\ncargo build --release\n```\n\nThe binary will be at `target/release/vm-curator`.\n\n**Prerequisites**\n- **Required**: QEMU (`qemu-system-*` binaries), qemu-img (for disk creation and snapshots), libudev\n- **Build**: Rust 1.70+, libudev-dev (Debian/Ubuntu) or systemd-libs (Arch/Fedora)\n- **Optional**:\n  - OVMF/edk2 — UEFI boot support (`edk2-ovmf` on Arch, `ovmf` on Debian/Ubuntu)\n  - virt-viewer — SPICE-app display backend\n  - passt — passt network backend\n  - Looking Glass client — multi-GPU passthrough display\n  - polkit — bridge networking permissions\n\n### Usage\n\n#### TUI Mode (default)\n\n```bash\nvm-curator\n```\n\n#### CLI Commands\n\n```bash\n# List all VMs\nvm-curator list\n\n# Launch a VM\nvm-curator launch windows-95\nvm-curator launch windows-95 --install    # Boot in install mode\nvm-curator launch windows-95 --cdrom /path/to/image.iso\n\n# View VM configuration\nvm-curator info windows-95\n\n# Import a VM\nvm-curator  # then press 'i' for the import wizard\n\n# Manage snapshots\nvm-curator snapshot windows-95 list\nvm-curator snapshot windows-95 create my-snapshot\nvm-curator snapshot windows-95 restore my-snapshot\nvm-curator snapshot windows-95 delete my-snapshot\n\n# List available QEMU emulators\nvm-curator emulators\n```\n\n### Key Bindings\n\n#### Main Menu\n\n| Key | Action |\n|-----|--------|\n| `j/k` or `Down/Up` | Navigate VM list |\n| `Enter` | Launch selected VM |\n| `m` | Open management menu |\n| `x` | Stop VM (if running) |\n| `c` | Open VM creation wizard |\n| `i` | Open VM import wizard |\n| `s` | Open settings |\n| `/` | Search/filter VMs |\n| `?` | Show help |\n| `PgUp/PgDn` | Scroll info panel |\n| `Esc` | Back / Cancel |\n| `q` | Quit |\n\n#### VM Management\n\n| Key | Action |\n|-----|--------|\n| `j/k` or `Down/Up` | Navigate menu |\n| `Enter` | Select menu option |\n| `e` | Edit launch script |\n| `u` | Configure USB passthrough |\n\nManagement menu options:\n- Boot Options (normal, install, custom ISO)\n- Snapshots\n- USB Passthrough\n- PCI Passthrough\n- Shared Folders\n- Network Settings\n- Multi-GPU Passthrough (if enabled)\n- Single GPU Passthrough (if enabled)\n- Change Display\n- Edit Notes\n- Rename VM\n- Stop VM / Force Stop\n- Reset VM (recreate disk)\n- Delete VM\n- Edit Raw Configuration\n\n#### Create Wizard\n\n| Key | Action |\n|-----|--------|\n| `Tab` / `Shift+Tab` | Next/previous field |\n| `Enter` | Select / Continue |\n| `n` | Next step |\n| `p` | Previous step |\n| `Esc` | Cancel wizard |\n\n### Configuration\n\nSettings are stored in `~/.config/vm-curator/config.toml` and can be edited via the Settings screen (`s` key).\n\n```toml\n# VM library location\nvm_library_path = \"~/vm-space\"\n\n# Default values for new VMs\ndefault_memory_mb = 4096\ndefault_cpu_cores = 2\ndefault_disk_size_gb = 64\ndefault_display = \"gtk\"      # gtk, sdl, spice-app, vnc\ndefault_enable_kvm = true\n\n# Behavior\nconfirm_before_launch = true\n\n# Multi-GPU passthrough (Looking Glass)\nenable_multi_gpu_passthrough = false\ndefault_ivshmem_size_mb = 64\nshow_gpu_warnings = true\nlooking_glass_client_path = \"\"       # Path to Looking Glass client\nlooking_glass_auto_launch = true     # Auto-launch client when VM starts\n\n# Single GPU passthrough\nsingle_gpu_enabled = false\nsingle_gpu_auto_tty = false          # Experimental: auto switch TTY\nsingle_gpu_dm_override = \"\"          # Override display manager detection\n```\n\n### VM Library Structure\n\nVMs are expected in your library directory (default `~/vm-space/`) with this structure:\n\n```\n~/vm-space/\n├── windows-95/\n│   ├── launch.sh      # QEMU launch script (required)\n│   └── disk.qcow2     # Disk image (qcow2 recommended for snapshots)\n├── linux-debian/\n│   ├── launch.sh\n│   ├── disk.qcow2\n│   └── install.iso    # Optional: installation media\n└── macos-tiger/\n    ├── launch.sh\n    └── disk.qcow2\n```\n\nThe `launch.sh` script should invoke QEMU. VM Curator parses this script to extract configuration and can generate new scripts via the creation wizard.\n\n### OS Profiles\n\nThe creation wizard includes 120+ pre-configured profiles organized into 16 OS families:\n\n**Microsoft**: DOS, Windows 1.x–3.x, Windows 95/98/ME, Windows NT/2000/XP/Vista, Windows 7/8/10/11, Server editions\n\n**Apple**: Classic Mac OS (System 6–9), Mac OS X PowerPC (Cheetah–Tiger), Mac OS X Intel (Leopard–El Capitan), macOS (Sierra–Tahoe)\n\n**Linux**: Arch, Manjaro, EndeavourOS, Garuda, CachyOS, Debian, Ubuntu, Mint, Pop!_OS, Fedora, RHEL, Rocky, Alma, Bazzite, openSUSE, Slackware, Gentoo, Void, NixOS, Alpine, and more\n\n**BSD**: FreeBSD, GhostBSD, OpenBSD, NetBSD, DragonFly BSD\n\n**Unix**: Solaris, OpenIndiana, illumos, HP-UX, IRIX, MINIX, QNX\n\n**IBM**: OS/2, eComStation, ArcaOS, AIX\n\n**Commodore**: AmigaOS, AROS, MorphOS\n\n**Be / Haiku**: BeOS, Haiku\n\n**NeXT**: NeXTSTEP, OpenStep\n\n**Research**: Plan 9, 9front, Inferno\n\n**Alternative**: SerenityOS, Redox, TempleOS, KolibriOS, MenuetOS, ReactOS\n\n**Retro**: Atari TOS, CP/M, FreeDOS, DR-DOS, GEOS, RISC OS\n\n**Mobile**: Android-x86, LineageOS, Bliss OS\n\n**Infrastructure**: pfSense, OPNsense, OpenWrt, TrueNAS, Proxmox, ESXi\n\n**Utilities**: GParted, Clonezilla, Memtest86+\n\n**Other**: Catch-all for uncategorized VMs\n\nEach profile includes optimal QEMU settings for that OS (emulator, machine type, CPU model, VGA, audio, network, disk interface, and more).\n\n### Metadata Customization\n\n**OS Information**: Override or add OS metadata in `~/.config/vm-curator/metadata/`:\n\n```toml\n# ~/.config/vm-curator/metadata/my-os.toml\n[my-custom-os]\nname = \"My Custom OS\"\npublisher = \"My Company\"\nrelease_date = \"2024-01-01\"\narchitecture = \"x86_64\"\n\n[my-custom-os.blurb]\nshort = \"A brief description\"\nlong = \"A longer description with history and details.\"\n\n[my-custom-os.fun_facts]\nfacts = [\"Fact 1\", \"Fact 2\"]\n```\n\n**ASCII Art**: Add custom ASCII art in `~/.config/vm-curator/ascii/`.\n\n**QEMU Profiles**: Override profiles in `~/.config/vm-curator/qemu_profiles.toml`.\n\n### Dependencies\n\n- **Runtime**: QEMU, qemu-img, libudev\n- **Build**: Rust 1.70+, libudev-dev (Debian/Ubuntu) or systemd-libs (Arch)\n- **Optional**: OVMF/edk2 (UEFI), virt-viewer (SPICE-app), passt (networking), Looking Glass client (multi-GPU), polkit (bridge networking)\n\n### Cross-Distribution Compatibility\n\nVM Curator automatically detects OVMF/UEFI firmware paths across Linux distributions:\n- Arch Linux: `/usr/share/edk2/x64/OVMF_CODE.4m.fd`\n- Debian/Ubuntu: `/usr/share/OVMF/OVMF_CODE.fd`\n- Fedora/RHEL: `/usr/share/edk2/ovmf/OVMF_CODE.fd`\n- NixOS: Multiple search paths supported\n- And more...\n\n---\n\n### Contributing\n\nContributions are welcome! If you find a bug or have an idea for an improvement, feel free to open an issue or submit a Pull Request.\n\n**Help Wanted: ASCII Art**\nAs a TUI application, `vm-curator` relies on visual flair to stand out. I am specifically looking for help with:\n* **Logo/Banner Art:** A cool ASCII banner for the startup screen.\n* **Iconography:** Small, recognizable ASCII/block character icons for the TUI menus (e.g., stylized hard drives, network cards, or GPU icons).\n\nIf you have a knack for terminal aesthetics, your PRs are highly appreciated!\n\n### Support \u0026 Maintenance Status\n\n**`vm-curator`** was built to solve a specific, painful problem: getting high-performance, 3D-accelerated Linux VMs (via QEMU) without the overhead and complexity of `libvirt` or `virt-manager`.\n\nThis is a **personal passion project** that I am sharing with the community. While I use this tool daily and will fix critical bugs as I encounter them, please note:\n\n* **Development Pace:** This project is maintained in my spare time. Feature requests will be considered but are not guaranteed.\n* **The \"As-Is\" Philosophy:** The goal is a lean, transparent TUI. I prioritize stability and performance over comprehensive enterprise feature parity.\n\n**If this tool saved you time or helped you get 3D Acceleration working without having to resort to passthrough:**\n\nIf you'd like to say thanks, you can support the project below. **Donations are a \"thank you\" for existing work, not a payment for future support.**\n\n* **[GitHub Sponsors](https://github.com/sponsors/mroboff):** Best for one-time contributions (Goes to the RTX-Pro 6000 fund!)\n* **[Ko-fi](https://ko-fi.com/mroboff):** Buy me a coffee (or a generic energy drink).\n\n---\n\n### License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmroboff%2Fvm-curator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmroboff%2Fvm-curator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmroboff%2Fvm-curator/lists"}