fgvm

fgvm is a friendly Godot version manager that lets you install and manage multiple versions of Godot with ease. It uses a hybrid CLI/TUI design with flexible query support, allowing you to find versions using keywords like latest, 4 mono, or 3.3 rc4. It works on Windows, macOS, and Linux with support for both standard and .NET builds.

IMPORTANT This project was previously known as gdvm, but as of 2.0 has now been renamed to fgvm. Most users won't be significantly impacted, but some changes were breaking and will require users to switch over to fgvm; please see this section for information on how to migrate.

Features

Installation

Windows Installation

Install using Scoop:

scoop bucket add patricktcoakley https://github.com/patricktcoakley/scoop-bucket
scoop install patricktcoakley/fgvm

⚡ fgvmup (Alternative)

Experimental one-line PowerShell installer:

irm https://raw.githubusercontent.com/patricktcoakley/fgvm/main/installer.ps1 | iex

💾 Manual Binary

📥 Download Windows x64

macOS Installation

Install using Homebrew:

brew tap patricktcoakley/formulae
brew install fgvm

Linux Installation

Install using Homebrew on Linux:

brew tap patricktcoakley/formulae
brew install fgvm

💾 Manual Binary (Alternative)

📥 Download Linux x64

🔧 Build from Source (All Platforms)

Clone the repository and build with .NET 9 SDK:

git clone https://github.com/patricktcoakley/fgvm.git
cd fgvm
dotnet build -c Release

📋 View all releases

Quick Usage

Install Godot versions:

fgvm install latest        # Latest stable release
fgvm install latest mono  # Latest .NET stable release
fgvm install 4 mono       # Latest 4.x with .NET support
fgvm install 3.3 rc       # Latest 3.3 release candidate
fgvm install 4.4.1        # Specific version

Set default version:

fgvm set 4.3-stable-mono   # Set specific version as default
fgvm set -i                # Interactive version picker

Launch Godot:

fgvm godot                 # Launch default version
fgvm godot -i              # Interactive version picker
fgvm godot --args --headless  # Pass arguments to Godot

Project-specific versions:

fgvm local                 # Detect and set version for current project
fgvm local 4.3 mono        # Set specific version for project
fgvm godot                 # Auto-detects project version

List and manage versions:

fgvm list                  # Show installed versions
fgvm search 4              # Search available versions
fgvm search 4.2 rc         # Search specific release candidates
fgvm remove 3.6-stable-mono # Remove installed version
fgvm which                 # Show current default version location

Commands Reference

Core Commands

fgvm install [<...strings>] [--default|-D|--set-default]

Install Godot versions with powerful query system. If no arguments are supplied, prompts interactively.

Query Examples:

The first installed version automatically becomes the default. Use --default (or -D) to explicitly set the installed version as the default regardless of whether other versions are already installed.

fgvm list

List all locally installed Godot versions showing version, type, and runtime.

fgvm set [<...strings>]

Set the default Godot version. Prompts interactively if no arguments supplied.

Supports query filtering for partial matches (e.g., 4, 4.4, stable, mono) or exact version matches (e.g., 4.4.1-stable-mono).

fgvm godot [options]

Launch Godot with intelligent version detection and project awareness.

Key Features:

Options:

Auto-attached mode for arguments like --version, --help, --headless

fgvm local [<...strings>]

Manage project-specific versions via .fgvm-version files.

Behavior:

fgvm search [<...strings>]

Search all available remote Godot versions with filtering.

Query Examples:

fgvm remove [<...strings>]

Remove installed Godot versions with smart selection.

Behavior:

Removing the current default version will unset it.

fgvm which

Display the file path that the current Godot symlink points to.

fgvm logs [--level|-l <string>] [--message|-m <string>]

View application logs with optional filtering by level or message content.

Installation Paths

Storage locations:

Folder structure: VERSION-TYPE-RUNTIME (e.g., 4.3-stable-mono)

Symlinks: Created in bin/ folder for easy access via fgvm godot

Project Integration

FGVM integrates seamlessly with Godot projects through:

  1. .fgvm-version files - Explicit version locking
  2. project.godot detection - Automatic version detection from project files
  3. Missing version handling - Prompts to install required versions
  4. Direct launching - fgvm godot opens projects with correct version

Version Query System

FGVM supports flexible version queries, including:

Migrating from gdvm

If you were using this project in the past then you'll know it used to be called gdvm. Prior to this project's creation and after, there have been several other projects with similar goals using the same name.

In an effort to differentiate this project I decided to change the name to stand out, and am also using it as an opportunity to implement some breaking changes due to some recent updates in the libraries I am using to write this tool.

What this means for you

Learn More

For detailed documentation, advanced features, and troubleshooting, visit the full README on GitHub.