home / dev-tools / charm

charm

Official · Charm
23k

Shell UI CLI for adding prompts, pickers, spinners, styling, and logs to shell scripts.

$brew install gum
Language
Go
Stars
23,071
Category
Dev Tools
Agent
Ready
Agent Compatibility
JSON Output
Agent Skill
MCP Support
AI Analysis

Gum is a shell UI CLI that packages prompts, selectors, spinners, styling, and lightweight formatting helpers as subcommands for shell scripts and aliases. It is most useful when you want a human-friendly terminal flow around an existing script, not when you need a service API client or headless automation primitive.

What It Enables
  • Add confirms, text inputs, choosers, fuzzy filters, file pickers, and multi-line editors to shell scripts, returning selections on stdout or via exit codes.
  • Wrap long-running commands with spinners, styled logs, formatted markdown or code output, tables, and joined layouts for terminal-facing workflows.
  • Build lightweight interactive helpers for tasks like writing commit messages, selecting branches or packages, opening files, and reviewing long text in the terminal.
Agent Fit
  • Commands compose through stdin, stdout, and exit codes, and gum log can emit JSON with --formatter json for structured log output.
  • Most high-value commands open Bubble Tea TUIs and expect a human at the keyboard, so unattended agent use is limited.
  • Best fit as a UX layer for scripts a person will run or supervise; weaker as a direct inspect or change primitive for autonomous agents.
Caveats
  • Many commands need a real TTY; in CI or non-interactive shells they either fail or lose most of their value.
  • Structured output support is narrow; outside gum log, outputs are usually plain text selections or styled terminal content.