Skip to main content

Quick reference

FlagKindExampleDescription
-i <version>stringigo -i 1.23.4Install Go version 1.23.4
-u <version>stringigo -u 1.23.4Uninstall Go version 1.23.4
-s <version>stringigo -s 1.24.2Switch to version 1.24.2
-a <version>stringigo -a 1.24.2Activate Go version 1.24.2
-f <version>stringigo -f 1.24.2Fix installation of 1.24.2
-lbooligo -lList all installed Go versions
-ebooligo -eDisplay environment of active installation
-v / -versionbooligo -vDisplay igo binary version
-h / -helpbooligo -hDisplay help
-godir <path>stringigo -godir /opt/goOverride workspace directory
-goos <os>stringigo -goos linuxOverride target OS
-goarch <arch>stringigo -goarch amd64Override target architecture
-systembooligo -i 1.23.4 -systemInstall in system mode at /usr/go
-debugbooligo -i 1.23.4 -debugEnable debug output
-verbosebooligo -i 1.23.4 -verboseEnable verbose output
-extrasbooligo -i 1.23.4 -extrasInstall extra packages after Go
-extra-packagesmapsee belowCustomize extra packages to install

Commands

These flags trigger the primary actions igo performs. All version flags accept a string in X.Y.Z format.
-i
string
Install a specific version of Go. igo downloads the official tarball from go.dev/dl, extracts it into your workspace, renames the versioned binaries, creates shims, and sets up symlinks. The minimum supported version is 1.16.0.
igo -i 1.23.4
igo -i 1.23.4 -godir /Shared/go -debug
-u
string
Uninstall a specific version of Go. igo removes the sticky bit and set-uid/set-gid permissions from the version directory before deleting it, then updates symlinks if the removed version was the active one.
igo -u 1.23.4
-s
string
Switch to an already-installed version of Go. Updates the ~/go/version file and rewrites the bin, root, and path symlinks to point at the specified version.
igo -s 1.24.2
-a
string
Activate an already-installed version of Go. This is an alias for -s and behaves identically.
igo -a 1.24.2
-f
string
Fix a Go version installation. Re-runs the post-install setup steps (symlinks, shims, binary renaming) for the specified version without re-downloading the tarball.
igo -f 1.24.2
-l
boolean
List all installed Go versions in a formatted table. The active version is marked with * ACTIVE.
igo -l
Example output:
igo [open source at github.com/ProjectApario/igo]
┌──────────┬──────────────────┬─────────────┐
│ VERSION  │     CREATION     │   STATUS    │
├──────────┼──────────────────┼─────────────┤
│ 1.24.3   │ 2025-05-22 11:15 │             │
│ 1.23.4   │ 2025-05-22 11:30 │  * ACTIVE   │
└──────────┴──────────────────┴─────────────┘
-e
boolean
Display the environment of the currently active Go installation. Shows the resolved values of GOROOT, GOBIN, GOPATH, GOMODCACHE, GOOS, and GOARCH.
igo -e
-v
boolean
Display the igo binary version. -version is an alias for this flag.
igo -v
# v1.1.1 - igo open source at github.com/ProjectApario/igo

igo -version
-h
boolean
Display help information. -help is an alias for this flag.
igo -h
igo -help

Options

These flags modify the behavior of the command flags above. You can combine them with any command flag.
-godir
string
default:"~/go"
The directory where igo installs and manages Go versions. Defaults to ~/go in your home directory. Use this to share a Go installation across users or to put it on a separate volume.
igo -i 1.23.4 -godir /Shared/go
igo -l -godir /Shared/go
-goos
string
default:"detected"
Override the target operating system. Defaults to the OS detected at runtime via runtime.GOOS. Useful for cross-platform tarball downloads.
igo -i 1.23.4 -goos linux
-goarch
string
default:"detected"
Override the target CPU architecture. Defaults to the architecture detected at runtime via runtime.GOARCH. Useful for downloading a tarball for a different architecture.
igo -i 1.23.4 -goarch amd64
-system
boolean
default:"false"
Install Go in system mode. When set, igo uses /usr/go as the workspace instead of ~/go. You typically need elevated permissions to write to /usr/go.
igo -i 1.23.4 -system
-debug
boolean
default:"false"
Enable debug output. Prints additional diagnostic information during command execution, including internal state and file operations.
igo -i 1.23.4 -debug
-verbose
boolean
default:"false"
Enable verbose output. Prints progress messages during installation and other operations, such as symlink creation and version check results.
igo -i 1.23.4 -verbose
-extras
boolean
default:"true"
Install extra Go packages after a successful igo -i. This is enabled by default. Pass -extras=false to skip the extra package installation step.
igo -i 1.23.4 -extras=false
-extra-packages
map
Customize the set of extra packages installed after igo -i. Accepts a map of package name to module path. Overrides the built-in default package list.The default extra packages installed are:
NameModule
genwordpassgithub.com/ProjectApario/genwordpass
summarizegithub.com/andreimerlescu/summarize
countergithub.com/andreimerlescu/counter
bumpgithub.com/andreimerlescu/bump
goinigithub.com/andreimerlescu/goini
goenvgithub.com/andreimerlescu/goenv
govulncheckgolang.org/x/vuln/cmd/govulncheck
go-generate-passwordgithub.com/m1/go-generate-password/cmd/go-generate-password
cli-gematriagithub.com/andreimerlescu/cli-gematria

Config file

igo uses the figtree library for configuration. If the file ~/.igo.config.yml exists, igo loads it automatically at startup and merges its values with any flags you pass on the command line. Command-line flags take precedence over values in the config file.
# ~/.igo.config.yml
godir: /Shared/go
debug: false
verbose: true
extras: true

Build docs developers (and LLMs) love