# charmbracelet/gum

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/charmbracelet-gum).**

22,814 stars · 460 forks · Go · mit

## Links

- GitHub: https://github.com/charmbracelet/gum
- awesome-repositories: https://awesome-repositories.com/repository/charmbracelet-gum.md

## Topics

`bash` `shell`

## Description

Gum is a toolkit for building interactive, visually styled command-line interfaces and prompts directly within shell scripts. It functions as a library of modular components that allow developers to enhance terminal workflows by adding structured layouts, formatted text, and user-input widgets to standard command-line operations.

The project distinguishes itself by providing a suite of specialized utilities for common shell tasks, such as fuzzy-matched selection menus, interactive file system navigation, and confirmation dialogs. It translates high-level styling and layout instructions into terminal-native escape sequences, enabling the creation of complex, readable interfaces without requiring deep knowledge of terminal rendering logic.

Beyond basic input and styling, the tool supports advanced terminal interactions including scrollable viewports for long documents, animated progress indicators for background tasks, and structured table displays. It integrates into existing shell environments by reading from standard input and writing results to standard output, facilitating its use within automated pipelines and scripts.

## Tags

### Development Tools & Productivity

- [Interactive CLI Tooling](https://awesome-repositories.com/f/development-tools-productivity/terminal-shell-cli/cli-tooling-frameworks/interactive-cli-tooling.md) — Provides a suite of modular components for building interactive, visually styled command-line interfaces directly within shell scripts.
- [Terminal UI Frameworks](https://awesome-repositories.com/f/development-tools-productivity/terminal-ui-frameworks.md) — Enables the creation of professional command-line experiences through a declarative framework for formatting text, managing layouts, and capturing user input.
- [Shell Scripting Utilities](https://awesome-repositories.com/f/development-tools-productivity/shell-scripting-utilities.md) — Offers a library of interactive widgets that simplify data collection, file navigation, and task progress indication in terminal workflows.
- [Terminal Output Stylers](https://awesome-repositories.com/f/development-tools-productivity/terminal-output-stylers.md) — Enhances command-line readability by applying colors, markdown, and structured layouts to terminal output. ([source](https://github.com/charmbracelet/gum/blob/main/examples/demo.sh))
- [Interactive Command Interfaces](https://awesome-repositories.com/f/development-tools-productivity/interactive-command-interfaces.md) — Builds visually styled command-line interfaces using modular components for script interaction. ([source](https://github.com/charmbracelet/gum/blob/main/flake.nix))
- [Progress Indicators](https://awesome-repositories.com/f/development-tools-productivity/progress-indicators.md) — Provides animated spinners and status indicators to give visual feedback during long-running command-line operations. ([source](https://github.com/charmbracelet/gum/blob/main/examples/demo.sh))
- [File System Navigators](https://awesome-repositories.com/f/development-tools-productivity/file-system-navigators.md) — Enables interactive directory browsing and file selection directly within command-line interfaces. ([source](https://github.com/charmbracelet/gum/blob/main/gum.go))
- [Background Processing Tools](https://awesome-repositories.com/f/development-tools-productivity/background-processing-tools.md) — Displays animated spinners to indicate activity during background command execution. ([source](https://github.com/charmbracelet/gum/blob/main/README.md))
- [Viewport Navigators](https://awesome-repositories.com/f/development-tools-productivity/documentation-navigation/viewport-navigators.md) — Provides a scrollable viewport for viewing and navigating lengthy text content within the terminal. ([source](https://github.com/charmbracelet/gum#readme))
- [Terminal Viewports](https://awesome-repositories.com/f/development-tools-productivity/terminal-abstractions/terminal-viewports.md) — Manages scrollable regions and windowing logic to render large text buffers within constrained terminal dimensions.
- [Terminal Layout Engines](https://awesome-repositories.com/f/development-tools-productivity/terminal-layout-engines.md) — Structures command-line interfaces by arranging components into organized layouts. ([source](https://github.com/charmbracelet/gum#readme))

### Operating Systems & Systems Programming

- [ANSI Escape Sequence Renderers](https://awesome-repositories.com/f/operating-systems-systems-programming/terminal-command-line-environments/terminal-management/output-rendering-engines/ansi-escape-sequence-renderers.md) — Generates ANSI escape sequences to apply colors, borders, and formatting to terminal output.

### Software Engineering & Architecture

- [Model-View-Update Runtimes](https://awesome-repositories.com/f/software-engineering-architecture/model-view-update-runtimes.md) — Implements a message-passing architecture for state management in interactive terminal interfaces.

### User Interface & Experience

- [Native Input Prompts](https://awesome-repositories.com/f/user-interface-experience/text-input-widgets/native-input-prompts.md) — Captures user-provided strings through interactive text input fields in shell scripts. ([source](https://github.com/charmbracelet/gum/blob/main/gum.go))
- [User Confirmation Dialogs](https://awesome-repositories.com/f/user-interface-experience/user-confirmation-dialogs.md) — Creates intuitive prompts, selection menus, and confirmation dialogs for user interaction in shell scripts.
- [Input Collection Components](https://awesome-repositories.com/f/user-interface-experience/input-collection-components.md) — Gathers data from users through interactive text fields and selection lists. ([source](https://github.com/charmbracelet/gum#readme))
- [Masked Inputs](https://awesome-repositories.com/f/user-interface-experience/masked-inputs.md) — Prompts users for text entries with support for masking sensitive characters. ([source](https://github.com/charmbracelet/gum/blob/main/examples/demo.sh))
- [Selectable Lists](https://awesome-repositories.com/f/user-interface-experience/selectable-lists.md) — Presents interactive lists that support fuzzy-matched filtering and selection for command-line workflows. ([source](https://github.com/charmbracelet/gum/blob/main/gum.go))
- [Text Rendering](https://awesome-repositories.com/f/user-interface-experience/styling-theming-systems/typography-and-iconography/text-rendering.md) — Renders markdown, syntax-highlighted code, and structured tables to improve terminal output readability. ([source](https://github.com/charmbracelet/gum/tree/main/format))
- [Item Navigation and Selection](https://awesome-repositories.com/f/user-interface-experience/terminal-user-interfaces/item-navigation-and-selection.md) — Filters lists of options using fuzzy matching for single or multiple item selection. ([source](https://github.com/charmbracelet/gum#readme))
- [Selection Tables](https://awesome-repositories.com/f/user-interface-experience/selection-tables.md) — Displays structured data in tables and allows users to select specific rows for further processing. ([source](https://github.com/charmbracelet/gum/blob/main/README.md))
- [Content Display Components](https://awesome-repositories.com/f/user-interface-experience/content-display-components.md) — Renders long documents in a scrollable viewport with line numbers and display settings. ([source](https://github.com/charmbracelet/gum/blob/main/README.md))
- [Text Formatting Utilities](https://awesome-repositories.com/f/user-interface-experience/text-formatting-utilities.md) — Formats command-line output using markdown, code highlighting, and templates. ([source](https://github.com/charmbracelet/gum/blob/main/gum.go))
- [Text Styling](https://awesome-repositories.com/f/user-interface-experience/text-styling.md) — Renders text with custom colors, styles, and markdown support. ([source](https://github.com/charmbracelet/gum#readme))
- [Visual Status Indicators](https://awesome-repositories.com/f/user-interface-experience/visual-status-indicators.md) — Provides visual feedback through spinners and formatted logs to communicate task status. ([source](https://github.com/charmbracelet/gum#readme))

### Part of an Awesome List

- [Shell Scripting Tools](https://awesome-repositories.com/f/awesome-lists/devtools/shell-scripting-tools.md) — Tool for creating interactive and styled shell scripts.
- [TUI Libraries](https://awesome-repositories.com/f/awesome-lists/devtools/tui-libraries.md) — Tool for shell script TUIs.

### System Administration & Monitoring

- [Task Status Monitors](https://awesome-repositories.com/f/system-administration-monitoring/task-status-monitors.md) — Monitors background tasks by providing visual feedback through spinners and status logs.

### Web Development

- [Terminal UI Layouts](https://awesome-repositories.com/f/web-development/terminal-ui-layouts.md) — Provides declarative primitives for arranging terminal UI elements using a box-model approach.

### Data & Databases

- [Fuzzy Matching](https://awesome-repositories.com/f/data-databases/fuzzy-matching.md) — Uses string similarity algorithms to filter and rank list items for rapid selection.

### Programming Languages & Runtimes

- [Standard Input/Output Streams](https://awesome-repositories.com/f/programming-languages-runtimes/standard-input-output-streams.md) — Integrates with shell environments by reading from standard input and writing to standard output.
