charmbracelet

charmbracelet/bubbletea

Go MIT Dev Tools

A powerful little TUI framework 🏗

43.6k stars
1.3k forks
active
GitHub +126 / week

43.6k

Stars

1.3k

Forks

190

Open issues

30

Contributors

v2.0.8 03 Jul 2026

AI Analysis

Bubble Tea is a Go framework for building terminal user interfaces (TUIs) based on The Elm Architecture functional programming paradigm. It excels at creating both simple and complex terminal applications with features like high-performance rendering, keyboard/mouse handling, and clipboard support. It is best suited for Go developers building CLI tools and interactive terminal applications, and is not intended for web applications or graphical desktop UIs.

Dev Tools Library Discovery value: 3/10
Documentation 9/10
Activity 10/10
Community 9/10
Code quality 8/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 9/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

tui-framework elm-architecture go-framework terminal-ui functional-programming
Actively maintained Well documented MIT licensed Popular Beginner friendly Production ready
Deep Analysis · Based on README and public signals
2w ago

Elm Architecture-inspired Go TUI framework with 43k stars and broad ecosystem adoption

Bubble Tea is a Go framework for building terminal user interfaces based on The Elm Architecture (Model-Update-View). It targets Go developers who need interactive, stateful CLI apps — from simple inline widgets to full-window TUIs. It sits at the center of the Charmbracelet ecosystem, which includes companion libraries for components (Bubbles), styling (Lipgloss), forms (Huh), and SSH apps (Wish). README explicitly states it is production-ready with performance optimizations including a cell-based renderer, color downsampling, and high-fidelity input handling. Wide adoption is observable across the Go CLI tooling space.

Origin

Created in January 2020 by Charmbracelet. Grew steadily as Go CLI tooling matured. Recently released v2 (breaking change from v1), signaling continued active architectural evolution rather than stagnation.

Growth

Growth was driven by the broader trend of developer-focused CLI tools written in Go, the appeal of functional/Elm-style architecture in a language with no dominant TUI framework, and strong ecosystem synergy across Charmbracelet repos. The companion libraries (Bubbles, Lipgloss, Huh) reinforce each other's adoption. 145 stars in 7 days indicates ongoing organic interest nearly 6 years in.

In production

README states the framework 'is in use in production.' The broader Charmbracelet ecosystem (gum with 23k stars, lipgloss with 11k stars) strongly implies real downstream production usage. Multiple high-profile Go CLI tools in the ecosystem are known to use Bubble Tea as their TUI layer. Adoption is verifiable through dependent projects on GitHub and pkg.go.dev, though specific production case studies are not enumerated in the README.

Code analysis
Architecture

Appears to implement a strict unidirectional data flow pattern inspired by The Elm Architecture: a Model struct, an Init function returning an initial Cmd, an Update function handling Msg events and returning updated Model+Cmd, and a View function rendering string output. Likely uses goroutines and channels internally for async command execution. The v2 release (charm.land/bubbletea/v2) appears to be a non-trivial API revision with a published upgrade guide, suggesting deliberate architectural refinement.

Tests

Not documented in README

Maintenance

Last push was 2026-06-22, two days before the evaluation date. CI badge is present. Active v2 development and an explicit upgrade guide indicate sustained, intentional maintenance rather than passive upkeep. Charmbracelet as an organization maintains multiple actively developed repositories, reducing bus-factor risk.

Honest verdict

ADOPT IF: you are building a Go CLI tool that requires interactive, stateful terminal UI and are comfortable with functional/Elm-style architecture patterns. AVOID IF: you need a quick imperative widget layout, prefer Python or another language ecosystem, or your TUI needs are limited to static output that lipgloss or simple fmt printing can handle. MONITOR IF: you are evaluating v2 migration from v1 and need to assess API stability before committing to the new module path.

Independent dimensions

Mainstream potential

7/10

Technical importance

8/10

Adoption evidence

7/10

Risks
  • v2 API migration introduces a new module path (charm.land/bubbletea/v2) that may cause fragmentation between v1 and v2 ecosystem libraries until all companions fully migrate.
  • Elm Architecture imposes a specific mental model that has a real learning curve for developers accustomed to imperative or reactive UI patterns, potentially limiting adoption in teams without prior functional UI experience.
  • Charmbracelet is a small company; while the organization reduces single-contributor risk, commercial sustainability of maintaining multiple high-quality open source libraries long-term is not publicly documented.
  • Terminal rendering remains an inherently inconsistent target across terminal emulators, OSes, and CI environments — framework quality notwithstanding, edge-case rendering bugs are structurally harder to eliminate.
  • The framework is Go-only, so any organizational shift away from Go for CLI tooling eliminates it as an option regardless of quality.
Prediction

Bubble Tea is likely to consolidate its position as the de facto TUI framework for Go, with v2 stabilization driving a new wave of ecosystem tooling over the next 12-18 months. Mainstream dominance outside Go is unlikely.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

Go
100%

Information

Language
Go
License
MIT
Last updated
4d ago
Created
79mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

charmbracelet

charmbracelet/bubbles

Bubbles provides reusable TUI (terminal user interface) components for building...

8.6k Go Dev Tools
charmbracelet

charmbracelet/huh

Huh is a Go library for building interactive terminal forms and prompts with a...

charmbracelet

charmbracelet/lipgloss

Lip Gloss is a Go library for declarative terminal styling and layout, designed...

11.5k Go Dev Tools
charmbracelet

charmbracelet/wish

Wish is a Go library for building custom SSH servers with sensible defaults and...

5.3k Go Dev Tools
charmbracelet

charmbracelet/gum

Gum is a shell scripting tool that provides glamorous, interactive UI...

vs. alternatives
tview

tview offers a widget-tree model closer to traditional GUI frameworks. Bubble Tea's functional/immutable approach is more predictable for complex state but requires more explicit wiring. tview has older adoption base; Bubble Tea has stronger recent momentum.

tcell

tcell is a low-level terminal cell library, not a framework. Bubble Tea likely builds on similar primitives but provides full application structure. Suitable comparison only for teams wanting full control vs. opinionated abstractions.

termui

termui is dashboard/widget focused and appears less actively maintained. Bubble Tea is more general-purpose and has a clearly more active maintenance signal.

gocui

gocui uses a layout-and-keybinding imperative model. Bubble Tea's Elm architecture is a different philosophy — more testable state management but a steeper initial mental model shift for imperative-minded developers.

Python/Textual

Textual (Python) is the closest philosophical analog across languages, also framework-level with component model. Not directly competitive for Go projects but relevant when language choice is open.