The workshop · Edition No. 45 · 9 Oct 2026

charmbracelet/gum

One command that gives a shell script menus, confirmations, text fields, spinners and styled output, leaving the script a plain script.

← The workshopRead the whole edition →

24,479 stars · MIT · v2.0.2 (2026-09-24) · Track this in Scout

One command that gives a shell script menus, confirmations, text fields, spinners and styled output, leaving the script a plain script.

▶Repo detailsthe review · specs · pros & cons · install

What it is

Gum is a Go program offering a set of subcommands — choose, confirm, input, write, filter, spin, table, style, pager — each of which draws an interactive control in the terminal and returns the answer on standard output. It is built on the same library as its author's terminal applications.

What it is good for. Anyone with a setup script, a deploy script or a release script that other people have to run. The thing it fixes is not looks; it is that a menu cannot be mistyped. Because each control is just a command that prints its answer, it drops into a script that already exists, one line at a time, with no framework to adopt.

Stars24,479
LicenceMIT
Latestv2.0.2 (2026-09-24)
Good
  • The licence is plain MIT, read from the file, with a real holder: "Copyright (c) 2022-2024 Charmbracelet, Inc." No added conditions.
  • The Debian and Red Hat install routes never pipe anything into a shell — the curl goes into gpg --dearmor and tee to add a signing key and a repository, which is materially safer than the alternatives several other entries today ship.
  • Packaged almost everywhere: Homebrew, pacman, dnf, Nix, Flox, winget, Scoop, FreeBSD ports, plus prebuilt .deb, .rpm and .apk files and binaries for Linux, macOS, Windows, FreeBSD, OpenBSD and NetBSD.
Watch for
  • ⚠ The Go install line is unpinned: go install charm.land/gum/v2@latest fetches whatever is newest at the time, so the command is not repeatable. Prefer the package manager, or pin a version.
  • ⚠ Version 2's module path changed to charm.land/gum/v2, not github.com/charmbracelet/gum, so an older install command or a script that references the old path will not resolve.
  • 143 open issues against 65 open pull requests, no memory or processor figures published, no website set in the repository sidebar, and the copyright line's year range still ends at 2024. Also worth knowing before you assume the whole publisher is permissive: Charm's licensing is not uniform. This project and its underlying library are plain MIT, but charmbracelet/crush, which Edition 44 covered, ships the Functional Source License, which restricts competing use.
Similar repositories
Install
# macOS or Linux with Homebrew
brew install gum
# Debian or Ubuntu — nothing is piped into a shell here
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.charm.sh/apt/gpg.key \
  | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" \
  | sudo tee /etc/apt/sources.list.d/charm.list
sudo apt update && sudo apt install gum
Screenshots
charmbracelet/gum: GitHub preview cardcharmbracelet/gum: Screenshot 1charmbracelet/gum: Screenshot 2charmbracelet/gum: Screenshot 3charmbracelet/gum: Screenshot 4

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.