questo
A library of extensible and modular CLI prompt elements
Decision gist · record as of 2026-08-14
Yes, if you need customizable CLI prompts and are comfortable managing your own event loop. The low install friction, active maintenance, permissive license, and no known vulnerabilities make it a safe choice. Not ideal if you want a batteries-included prompt library that handles the event loop for you—consider it when you need fine-grained control over terminal interaction.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires a terminal that supports raw key input; python-yakh handles platform-specific key capture.
- Low friction: pure Python wheel with only two runtime dependencies (python-yakh and rich).
- Active maintenance with recent commits and no known vulnerabilities.
License · maintenance · safety
MIT (permissive) — MIT license is permissive; you can use, modify, and distribute this package freely in commercial and private projects with minimal restrictions.
last release 2025-11-30 (257 days) · last repo commit 2026-08-13 · 6 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 91,347 downloads/mo, #13,519 on PyPI
Alternatives
Verify before relying
pip install questo
from yakh import get_key
from questo import prompt
p = prompt.Prompt()
p.state = prompt.PromptState(title="Your name?")
with p.displayed():
while True:
key = get_key()
p.state = prompt.key_handler(p.state, key)
if p.state.exit or p.state.abort:
break
print(p.result)- Whether custom renderers can integrate with rich markup beyond the built-in examples shown.
- Performance characteristics when handling large option lists in Select elements.
- Exact behavior of pagination and filtering in Select with edge cases.
What it is and what it does
Questo is a library for building interactive CLI prompts and selections in Python. It differs from higher-level prompt libraries by exposing the underlying state machine, event loop, and rendering functions, giving you direct control over how keypresses are handled and how elements appear on screen. You provide your own event loop (typically using python-yakh for key capture), update the element's state in response to each keypress, and render the result—this architecture lets you integrate prompts seamlessly into existing terminal applications or add custom behavior without fighting against library abstractions.
The library includes two main elements: Prompt for text input with completion and cursor navigation support, and Select for single or multi-select lists with filtering and pagination. Both are built on a consistent pattern of state dataclasses, key handlers, and renderer functions. Dependencies are minimal—just python-yakh for cross-platform key input and rich for terminal rendering—making it lightweight to add to existing projects.
Use it for
- Build interactive CLI tools that need text input or menu selection without being locked into a single prompt library's design.
- Integrate custom terminal UI elements into existing event-driven applications by controlling the render loop yourself.
- Create terminal UIs with non-standard appearance or behavior by providing custom renderer and key-handler functions.
- Add pagination and filtering to large option lists in interactive selection prompts.
- Prototype or test CLI interactions by manipulating state directly without running a full event loop.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need customizable CLI prompts and are comfortable managing your own event loop.
The low install friction, active maintenance, permissive license, and no known vulnerabilities make it a safe choice. Not ideal if you want a batteries-included prompt library that handles the event loop for you—consider it when you need fine-grained control over terminal interaction.
Install
questo on PyPI
Before you install
Low friction: pure Python wheel with only two runtime dependencies (python-yakh and rich). Active maintenance with recent commits and no known vulnerabilities.
Requires a terminal that supports raw key input; python-yakh handles platform-specific key capture.
License in practice
MIT license is permissive; you can use, modify, and distribute this package freely in commercial and private projects with minimal restrictions.
Quickstart
pip install questo
from yakh import get_key
from questo import prompt
p = prompt.Prompt()
p.state = prompt.PromptState(title="Your name?")
with p.displayed():
while True:
key = get_key()
p.state = prompt.key_handler(p.state, key)
if p.state.exit or p.state.abort:
break
print(p.result)
Verify before relying
- Whether custom renderers can integrate with rich markup beyond the built-in examples shown.
- Performance characteristics when handling large option lists in Select elements.
- Exact behavior of pagination and filtering in Select with edge cases.
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release <4.0.0,>=3.7.8 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 2 packagespython-yakhrich |
| Maintenance | Actively maintained 257 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 91,347 / month, #13,519 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | License :: OSI Approved :: MIT LicenseProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9 |
Evidence: questo-0.4.2-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “CLI prompt library”
- questoQuesto provides modular, extensible CLI prompt elements (text input…
- bulletBullet provides styled, interactive CLI prompts for Python—bullet…
- questionaryQuestionary builds interactive command-line prompts with text input,…
Give your agent the search over MCP, or paste the wish link into any chat.
More Terminals packages
Wraps any iterable to display a real-time progress bar in the terminal or Jupyter notebook, showing iteration count, elapsed time, and estimated time remaining.
Rich renders styled text, tables, progress bars, syntax highlighting, markdown, and tracebacks to the terminal with minimal code.
Colorama makes ANSI escape sequences for colored terminal text work on Windows by intercepting and converting them to win32 API calls, while passing through unchanged on other platforms.
Install it if you need colored terminal output to work on Windows or want to use ANSI-based libraries portably; skip it only if you target non-Windows platforms…
Measures the displayed width of Unicode strings in terminals, accounting for wide characters, combining marks, and terminal escape sequences that standard Python string functions mishandle.
Install it if your application formats text for terminals and handles non-ASCII characters.
Run a subprocess in a pseudo terminal (pty) and interact with its input and output, enabling automation of interactive programs that require terminal features like password prompts or curses-style interfaces.
However, note that it is aging (last release 2020-12-28) and not actively maintained; it works well for its narrow, well-defined purpose but won't receive updates for…
Pexpect spawns and controls interactive console applications by sending input and matching output patterns, automating tasks that would otherwise require manual interaction.
See also beaupy · prompthub-py · ascii-colors · nxplora · dynamicprompts · sphinx-prompt · pastel · pick · simple-colors · click-prompt