Skip to main content
igo (Install Go) is a CLI tool that lets you install, switch between, and manage multiple versions of Go on your system. It runs entirely in your $HOME directory and never requires sudo.

Installation

Download the igo binary for your platform and get set up in minutes

Quickstart

Install your first Go version and configure your shell environment

Commands

Full reference for all igo flags and commands

Configuration

Customize the workspace directory, target OS, architecture, and more

What igo does

igo downloads official Go release tarballs from go.dev/dl, extracts them into a versioned directory structure under ~/go/versions/, and manages symlinks so your shell always points at the active version.

No root required

Everything lives under ~/go. No system directories are touched.

Multiple versions

Install and keep as many Go versions as you need, switch instantly.

Shim-based resolution

Shims read go.mod or .go_version to auto-select the right version per project.

Shell auto-configuration

igo writes GOROOT, GOBIN, GOPATH, and GOMODCACHE to your shell profile.

Supported platforms

PlatformArchitecture
macOSamd64 (Intel), arm64 (Apple Silicon)
Linuxamd64, arm64
Windows is not supported. Use Go’s official MSI installer on Windows instead.

How it works

igo organizes Go versions under a single workspace directory (default: ~/go):
~/go/
├── version          # active version string (e.g. "1.23.4")
├── versions/
│   ├── 1.23.4/
│   │   └── go/      # extracted Go toolchain
│   └── 1.22.6/
│       └── go/
├── bin -> versions/1.23.4/go/bin   # symlink (GOBIN)
├── root -> versions/1.23.4/go      # symlink (GOROOT)
├── path -> versions/1.23.4         # symlink (GOPATH)
└── shims/
    ├── go           # shim script — resolves version from go.mod
    └── gofmt        # shim script
When you run go build, the shim in ~/go/shims/go looks up the nearest go.mod (or .go_version file) and executes the matching versioned binary automatically.

Build docs developers (and LLMs) love