explaingit

charmbracelet/bubbles

8,353GoAudience · developerComplexity · 2/5Setup · easy

TLDR

A Go library of ready-made terminal UI components, text inputs, tables, lists, spinners, progress bars, file pickers, and more, for building interactive command-line apps with the Bubble Tea framework.

Mindmap

mindmap
  root((Bubbles))
    What it does
      UI components
      Terminal apps
      Go library
    Components
      Text input
      Table and list
      Progress bar
      File picker
    Built on
      Bubble Tea
    Use cases
      CLI tools
      TUI dashboards
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Add a searchable, paginated list picker to a Go CLI tool by dropping in the list component.

USE CASE 2

Build a filesystem browser with keyboard navigation inside a terminal app using the file picker component.

USE CASE 3

Display a real-time progress bar or spinner while your CLI tool downloads or processes data in the background.

USE CASE 4

Show tabular data with scrollable rows and columns in a terminal using the table component.

Tech stack

GoBubble Tea

Getting it running

Difficulty · easy Time to first run · 30min

In plain English

Bubbles is a collection of ready-made interface components for building text-based applications that run in a terminal. It is built on top of Bubble Tea, a framework for creating interactive terminal programs in Go. If Bubble Tea is the foundation, Bubbles is the library of pre-built parts you assemble into a working app. The components cover common interface needs. There is a text input for single-line typing, a text area for multi-line writing, a table for displaying rows and columns of data, and a list for browsing a set of items with optional filtering and pagination. There are also smaller pieces like a spinner to show that something is loading, a progress bar, a timer, a stopwatch, a paginator for navigating pages of content, a viewport for scrolling through long text, a file picker for navigating the filesystem, and a help view that generates a keyboard shortcut reference automatically from your defined keybindings. Each component is designed to be dropped into a Bubble Tea application as a reusable piece. Developers can customize colors, key bindings, sizes, and other visual properties to match the style of their app. The components handle the rendering and update logic internally, so the developer focuses on how to wire them together rather than how to draw each element from scratch. The project is maintained by Charmbracelet, the same team behind Bubble Tea and other terminal tooling. The components are used in production in Charmbracelet's own applications and in many community projects. There is also a collection of community-maintained components beyond what this repository includes.

Copy-paste prompts

Prompt 1
Write a Bubble Tea app in Go that uses the bubbles list component to display a menu of 10 options with vim-style keyboard navigation and fuzzy filtering.
Prompt 2
Show me how to combine the bubbles text input and viewport components to build a terminal chat interface in Go where the input stays at the bottom.
Prompt 3
Using charmbracelet/bubbles, add a file picker component to my existing Bubble Tea app so users can select a config file at startup.
Prompt 4
Create a Go terminal app with a bubbles progress bar that fills as a background goroutine completes work, updating every 100ms.
Open on GitHub → Explain another repo

← charmbracelet on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.