explaingit

charmbracelet/gum

📈 Trending23,678GoAudience · developerComplexity · 2/5ActiveLicenseSetup · easy

TLDR

A command-line tool that adds polished interactive elements like menus, prompts, and dialogs to shell scripts without requiring Go knowledge.

Mindmap

mindmap
  root((repo))
    What it does
      Interactive prompts
      Dropdown menus
      Confirmation dialogs
      File pickers
    How to use
      Drop into scripts
      Subcommands
      Capture output
    Use cases
      Git workflows
      File selection
      User confirmations
    Tech stack
      Go
      Bubbles
      Lip Gloss
    Audience
      Developers
      System admins
      Power users

Things people build with this

USE CASE 1

Automate Git commit workflows with interactive prompts and confirmations.

USE CASE 2

Build file selection dialogs into deployment or backup scripts.

USE CASE 3

Create multi-step guided workflows that ask users for input at each stage.

USE CASE 4

Add loading spinners and progress feedback to long-running shell commands.

Tech stack

GoBubblesLip Gloss

Getting it running

Difficulty · easy Time to first run · 5min
Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

In plain English

Gum is a command-line tool written in Go that lets you add interactive, visually polished elements to plain shell scripts without needing to know Go. Think of a normal shell script as a set of instructions a computer follows, the problem is those scripts are usually just plain text with no way to ask the user for input in a friendly way, or show progress nicely. Gum solves this by giving you simple commands you can drop into any Bash or shell script to add things like text prompts, dropdown choice menus, confirmation dialogs, file pickers, loading spinners, and scrollable text viewers. The way it works is simple: each interactive element is its own subcommand (for example, "gum input" to collect typed text, "gum choose" to present a menu, "gum confirm" to ask yes or no). These commands print their result to standard output, so you can capture the user's answer in a variable and use it later in your script. You control the look and feel through command flags or environment variables, changing colors, borders, widths, and prompts without writing any interface code yourself. You would use Gum when you want to build a script that guides someone through a multi-step task, like automating a Git commit workflow, selecting files to process, or confirming a destructive action, and you want the result to feel polished rather than raw. It runs in the terminal, so it suits developers, system administrators, and power users who live in the command line. It is written in Go and builds on the Bubbles and Lip Gloss libraries from the same team.

Copy-paste prompts

Prompt 1
Show me how to add a dropdown menu to my Bash script using gum choose.
Prompt 2
How do I capture user input from gum input and use it in a shell variable?
Prompt 3
Create a script that uses gum confirm to ask before deleting files.
Prompt 4
How do I customize the colors and styling of gum prompts with environment variables?
Prompt 5
Build a multi-step wizard script using gum input, gum choose, and gum confirm.
Open on GitHub → Explain another repo

Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.