cli-ui
Build Nice User Interfaces In The Terminal
What it is and what it does
cli-ui is a Python library for building formatted terminal user interfaces. It wraps common output patterns—colored text, progress bars, enumerated lists, and interactive prompts—into a simple API, reducing boilerplate for CLI applications that need readable, user-friendly terminal output.
The package depends on colorama, tabulate, and unidecode for cross-platform color support, table formatting, and text normalization. It targets Python 3.9 and later. Use it when you need to display structured information, ask users for input, or show progress without writing terminal escape sequences by hand.
Use it for:
- Display colored status messages and errors in a CLI tool without managing ANSI codes manually.
- Prompt users to choose from a list of options or answer yes/no questions in an interactive script.
- Show progress of a long-running operation with a counter and total, updating in place.
- Enumerate items in a loop with automatic numbering and formatting for readability.
- Format and display tabular data in the terminal with consistent styling.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides terminal UI components for colored output, progress indication, and interactive prompts—info messages, yes/no questions, choice selection, and enumeration display.
Yes, if you are building a CLI tool and want readable, formatted terminal output without managing escape codes. The low install friction and permissive license make it a practical choice. However, the aging maintenance status means you should be comfortable with minimal ongoing support; the package is stable for its narrow scope but unlikely to gain new features or rapid bug fixes.
Install
cli-ui on PyPI
pip
pip install cli-uiuv
uv add cli-uipoetry
poetry add cli-uiInstalling cli-ui
Before you install
Low install friction with three lightweight runtime dependencies. Maintenance status is aging—last release 503 days ago—so expect slower response to issues, though the package remains functional for its scope.
License in practice
BSD-3-Clause permissive license allows use in most projects, commercial or open-source, with minimal restrictions beyond retaining license and copyright notice.
Quickstart
pip install cli-ui
import cli_ui
cli_ui.info("This is", cli_ui.red, "red", cli_ui.reset)
selected = cli_ui.ask_choice("Choose a fruit", choices=["apple", "orange", "banana"])
Requires Python 3.9 or later (supports up to 3.13)
Verify before relying
- Whether the package handles Windows terminal color output correctly across all colorama-supported versions.
- Performance characteristics when rendering large tables or many progress updates in succession.
Package facts
| License | BSD-3-Clause (permissive) |
| Python support | supports the current Python release (<4.0,>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — colorama, tabulate, unidecode |
| Maintenance | aging — 503 days since the last release |
| First released | |
| Downloads | 233,269/month — #9,040 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: cli_ui-0.19.0-py3-none-any.whl
Tags
More Terminals packages
Wraps any iterable to display a real-time…
copyleft · top 100 on PyPI
richRich renders styled text, tables, progress…
permissive · top 100 on PyPI
coloramaColorama makes ANSI escape sequences for…
permissive · top 100 on PyPI
wcwidthMeasures the displayed width of Unicode strings…
permissive · top 1,000 on PyPI
ptyprocessRun a subprocess in a pseudo terminal (pty) and…
permissive · top 1,000 on PyPI
pexpectPexpect spawns and controls interactive console…
permissive · top 1,000 on PyPI
ascii-colorsUnified terminal UI library providing colored…
permissive · top 15,000 on PyPI
simple-term-menuCreates interactive command-line menus where…
permissive · top 5,000 on PyPI
simple-colorsAdds colored and styled text output to terminal…
unclear · top 15,000 on PyPI
clintClint provides command-line interface utilities…
permissive · top 15,000 on PyPI
crayonsCrayons provides colored text output for…
permissive · top 15,000 on PyPI
pastelPastel adds colored text output to terminal…
permissive · top 5,000 on PyPI
termcolorAdds ANSI color and text formatting (bold,…
permissive · top 1,000 on PyPI
colorclassProvides ANSI color text output for console…
permissive · top 5,000 on PyPI
pystylePystyle provides terminal styling utilities for…
unclear · top 15,000 on PyPI
inquirerInquirer provides interactive command-line…
permissive · top 5,000 on PyPI