A beautiful TUI-based command-line tool for managing Hyper-V virtual machines
Features β’ Installation β’ Usage β’ Screenshots
- π¨ Beautiful TUI Interface - Interactive table view with color-coded VM states and responsive actions
- β‘ Quick Commands - Start/stop/restart VMs by index number
- π Concurrent Batch Operations - Start, stop, or restart multiple VMs simultaneously (
1 3 5,--range 1-5, or--all) with bounded parallel worker pools - π‘οΈ Reliable & Idempotent - Graceful handling of already running VMs, deterministic result ordering, and strict 60s context timeout safety
- π€ AI-Agent & Scripting Ready - Machine-readable JSON output mode (
--output json/-o json) across all commands - π Real-time Monitoring - Live VM status, CPU usage, memory, and uptime
- π― Easy Navigation - Keyboard shortcuts for efficient VM management
- π Auto-refresh - Keep your VM list up-to-date with a single keypress
- π» Windows Native - Direct integration with Hyper-V via safe PowerShell execution
- Windows 10/11 with Hyper-V enabled
- Administrator privileges (required for Hyper-V management)
- Go 1.27.0 or higher (for building from source)
For the easiest installation experience:
-
Download the latest release package for your architecture
-
Extract the ZIP file to a folder
-
Run the installation menu
- Double-click
install-menu.bat, or - Right-click on
install-menu.ps1β Run with PowerShell
- Double-click
-
Choose your installation location:
- Option 1 (System): Install to
C:\Windows\System32- available globally for all users (requires Admin) - Option 2 (User): Install to
%USERPROFILE%\bin- available for current user (recommended) - Option 3 (Current): Keep in current directory - portable mode
- Option 1 (System): Install to
For scripted or custom installations:
# Install for current user (recommended)
.\install.ps1 -InstallLocation User
# Install system-wide (requires Admin)
.\install.ps1 -InstallLocation System
# Keep in current directory
.\install.ps1 -InstallLocation Current
# Additional options
.\install.ps1 -InstallLocation User -CreateAlias # Add 'qvm' aliasFor developers or those who want the latest code:
# Clone the repository
git clone https://github.com/hoangtran1411/quickvm.git
cd quickvm
# Download dependencies
go mod download
# Build the application
go build -ldflags="-s -w" -o quickvm.exe
# Lint the code (requires golangci-lint v2.8.0+)
golangci-lint run
# Install using the menu
.\install-menu.batLaunch the interactive interface by running:
quickvmKeyboard Shortcuts:
β/β- Navigate through VMsEnter- Start the selected VMs- Stop the selected VMt- Restart the selected VMr- Refresh VM listqorEsc- Quit
quickvm list
# or
quickvm ls# Start a single VM by index
quickvm start 1
# Start multiple VMs concurrently (parallel execution)
quickvm start 1 3 5
# Start a range of VMs
quickvm start --range 1-5
# Start all VMs
quickvm start --all# Stop a single VM
quickvm stop 1
# Stop multiple or all VMs
quickvm stop 1 2 3
quickvm stop --all# Restart a single VM or a range
quickvm restart 1
quickvm restart --range 1-3All commands support --output json (-o json) for machine-readable automation:
# List all VMs in JSON format
quickvm list -o json
# Batch start VMs with JSON status reporting
quickvm start 1 2 -o json
# Get system info as structured JSON
quickvm info -o jsonquickvm infoThis will display:
- π₯οΈ CPU: Name and number of cores
- πΎ Memory: Total, used, and free RAM (in MB and GB)
- πΏ Disk Drives: Name, free space, and total capacity for each drive
- π§ Hyper-V Status: Whether Hyper-V is enabled or disabled
# Check for updates and install
quickvm update
# Check for updates without installing
quickvm update --check-only
# Auto-install without prompting
quickvm update -y
# Check for updates before running any command
quickvm --update list# Enable Hyper-V (will prompt for restart if needed)
quickvm enable
# Enable and restart immediately
quickvm enable -y
# Enable without restarting (manual restart required)
quickvm enable --no-restart
β οΈ Note: Theenablecommand requires Administrator privileges.
# List all snapshots for a VM
quickvm snapshot list 1
# Create a new snapshot
quickvm snapshot create 1 "Before Update"
# Restore a VM to a snapshot
quickvm snapshot restore 1 "Before Update"
# Delete a snapshot
quickvm snapshot delete 1 "Old Snapshot"# Export a VM to a directory
quickvm export 1 "D:\Backups\VMs"
# Import a VM from an exported directory
quickvm import "D:\Backups\VMs\MyVM"
# Import with options
quickvm import "D:\Backups\VMs\MyVM" --copy # Copy VM files
quickvm import "D:\Backups\VMs\MyVM" --new-id # Generate new VM ID# Check GPU partitioning support
quickvm gpu status
# Add GPU partition to a VM (requires Admin)
quickvm gpu add 1
# Remove GPU partition from a VM
quickvm gpu remove 1
# Show driver paths for manual copy to guest
quickvm gpu drivers# Connect to a running VM via RDP
quickvm rdp 1
# Connect with auto-login credentials
quickvm rdp 1 -u "admin@password123"# Create a workspace with specific VMs
quickvm ws create "DevEnvironment" --vms "Proxy,WebApp,DB"
# List all workspaces
quickvm ws list
# Start all VMs in a workspace
quickvm ws start "DevEnvironment"
# Stop all VMs in a workspace
quickvm ws stop "DevEnvironment"# View all VMs in a formatted table
quickvm list
# Start the first VM in the list
quickvm start 1
# Stop the second VM
quickvm stop 2
# Restart the third VM
quickvm restart 3
# Launch interactive mode for visual management
quickvmQuickVM is built with clean architecture principles:
quickvm/
βββ cmd/ # CLI commands (Cobra)
β βββ root.go # Root command & TUI launcher
β βββ list.go # List VMs command
β βββ start.go # Start VM command
β βββ stop.go # Stop VM command
β βββ restart.go # Restart VM command
β βββ output_helpers.go # Concurrent batch operations & worker pool
β βββ info.go # System info command
β βββ snapshot.go # Snapshot management
β βββ clone.go # Clone VM command
β βββ export.go # Export VM command
β βββ import.go # Import VM command
β βββ gpu.go # GPU passthrough management
β βββ rdp.go # Remote Desktop connection
β βββ workspace.go # VM group management
β βββ enable.go # Enable Hyper-V command
β βββ update.go # Update command
β βββ version.go # Version & build info
βββ internal/ # Private application logic
β βββ hyperv/ # Hyper-V integration layer
β β βββ hyperv.go # Core VM management & idempotency
β β βββ snapshot.go # Snapshot operations
β β βββ clone.go # Clone operations
β β βββ export.go # Export/Import operations
β β βββ gpu.go # GPU passthrough logic
β β βββ rdp.go # RDP & Credential logic
β β βββ sysinfo.go # Hardware & System info
β β βββ workspace.go # Workspace profile logic
β βββ output/ # Formatter for console tables & AI-agent JSON
βββ ui/ # TUI components (Bubble Tea)
β βββ table.go # Interactive dashboard
βββ updater/ # Auto-update functionality
βββ main.go # Application entry point
βββ go.mod # Go modules
- Cobra - CLI framework
- Bubble Tea - TUI framework
- Bubbles - TUI components
- Lipgloss - Terminal styling
- PowerShell - Hyper-V integration
- User Experience First - Intuitive keyboard navigation and clear visual feedback
- Performance - Fast VM operations with minimal overhead
- Reliability - Comprehensive error handling, automated testing, and proper process management via Context API
- Beauty - Color-coded states and modern terminal aesthetics
For more detailed information, check out our comprehensive documentation:
- Installation Guide - Detailed installation instructions
- Quick Reference - All commands and shortcuts at a glance
- Demo & Examples - Real-world use cases and power user tips
- Developer Guide - Architecture and development notes
- Feature Roadmap - Planned features and priorities
- Workflow Guide - Development and deployment workflow
- Contributing Guide - How to contribute to QuickVM
- Project Summary - Complete project overview
- AI Agent Setup - Skills, workflows, and AI assistant configuration
QuickVM requires administrator privileges because it manages Hyper-V virtual machines. Always run PowerShell or Command Prompt as Administrator when using QuickVM.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Charm.sh team for the amazing TUI libraries
- Cobra framework for CLI management
- The Go community for continued support
For questions, suggestions, or issues, please open an issue on GitHub.
Made with β€οΈ by a Go enthusiast Hoang Tran
β Star this repo if you find it useful!