███████╗ ██████╗ ███╗ ███╗ ██╔════╝██╔════╝ ████╗ ████║ █████╗ ██║ ███╗██╔████╔██║ ██╔══╝ ██║ ██║██║╚██╔╝██║ ██║ ╚██████╔╝██║ ╚═╝ ██║ ╚═╝ ╚═════╝ ╚═╝ ╚═╝
Fast Go Manager — install and switch Go versions in seconds.
curl -fsSL https://raw.githubusercontent.com/m-amaresh/fgm/main/scripts/install.sh | bash
iwr -useb https://raw.githubusercontent.com/m-amaresh/fgm/main/scripts/install.ps1 | iex
Everything you need, nothing you don't. A fast, no-nonsense Go version manager.
Downloads and extracts in seconds with a live progress bar.
Every download verified against official SHA-256 checksums.
Shims resolve the active version at runtime. No eval, no hooks.
Install and keep as many Go versions side by side as you need.
Release manifest cached locally for 15 minutes — stays fast offline.
go and
gofmt shims just work once
~/.fgm/bin is on your PATH.
Up and running in three commands.
$ fgm install latest
Resolving go 1.26.1...
Downloading go1.26.1.linux-amd64.tar.gz...
[██████████████████████████] 100% 63.7 MB / 63.7 MB
✓ Installed go 1.26.1
$ fgm use latest
✓ Using go 1.26.1
$ go version
go version go1.26.1 linux/amd64
$ fgm list
* 1.26.1 (current)
1.25.8
Five steps from zero to go version.
fgm downloads the official Go release list from
go.dev/dl and caches it locally for 15 minutes so
subsequent commands are instant.
The official tarball (or zip on Windows) is streamed to disk with a live progress bar, then verified against the manifest SHA-256 before extraction.
~/.fgm/versions/The toolchain is extracted into
~/.fgm/versions/<version>/. Multiple versions coexist
without conflict.
fgm use writes the chosen version to
~/.fgm/current-version and generates thin shims for
go and
gofmt in
~/.fgm/bin/.
Every time you invoke go, the shim reads
current-version and delegates to the right binary.
No eval, no source, no shell modifications.
fgm accepts flexible version strings so you never have to look up an exact release.
latest
Resolves to the most recent stable release,
e.g. 1.26.1.
1.25
Resolves to the latest patch of Go 1.25,
e.g. 1.25.8.
1.25.5
Pins to an exact release. Fails if 1.25.5 does not exist.
A small, focused command set — nothing extraneous.
fgm install <version>
alias: in
Download a Go version without activating it.
fgm use <version>
Install if needed, then activate. Updates shims instantly.
fgm uninstall <version>
alias: un
Remove a previously installed version from disk.
fgm list
alias: ls
List all locally installed versions, marking the current one.
fgm current
Print the currently active Go version.
--verbose, -v
Enable verbose diagnostic output. Shows manifest cache status, resolved archive details, and platform info.
Linux and Windows on amd64/arm64, plus macOS on Apple Silicon.
| Platform | amd64 | arm64 |
|---|---|---|
| Linux | ||
| macOS | ||
| Windows |