dialoguer

A Rust library for interactive command-line prompts and menus

Library
Cargo
v0.12.0
1,611stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
66/100Good
Development Activity52
Maintenance44
Community68
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
77/100Good
Architecture80
Code Quality78
Innovation65
Learning Curve85

dialoguer provides a set of ready-made interactive command-line prompts for Rust CLI tools: text input, password entry, confirmation, single/multi-select menus, fuzzy select, sorting, and full-screen text editor invocation. It is part of the console-rs family of crates, built directly on top of console for terminal styling and cursor control.

Rather than requiring developers to hand-roll raw terminal input handling, dialoguer exposes a builder-style API per prompt type (Input::new(), Select::new(), Confirm::new()) with theming support (plain or colorful), input validation hooks, history support, and command-line completion, making it the standard choice for adding interactive prompts to Rust CLI applications.

What You Get

  • Prompt builders for Input, Password, Confirm, Select, MultiSelect, Sort, and FuzzySelect
  • Pluggable Theme trait with built-in SimpleTheme and ColorfulTheme implementations
  • Input validation hooks that re-prompt on invalid input without extra boilerplate
  • History support for input prompts, useful for CLIs that want shell-like recall
  • Shell-word aware completion support for input prompts
  • External editor integration (Editor) for multi-line text entry via $EDITOR

Common Use Cases

  • Interactive setup wizards for CLI tools (project scaffolding, config generation)
  • Confirmation prompts before destructive CLI operations (delete, overwrite, force-push)
  • Menu-driven CLI UIs where the user picks from a list of options or toggles multiple choices
  • Collecting masked password/secret input from a terminal session

Under The Hood

Architecture — The crate is organized around a prompts/ module (src/prompts/) containing one file per prompt type (input.rs, select.rs, multi_select.rs, confirm.rs, password.rs, sort.rs, fuzzy_select.rs), each exposing a builder struct with a fluent .with_prompt()/.default()/.interact() chain. Rendering is centralized in src/theme/render.rs, which every prompt type calls into so that terminal-drawing logic (cursor movement, redraw-on-keypress) lives in one place rather than being duplicated per prompt. src/paging.rs handles scrolling for select menus that exceed the terminal height, and src/completion.rs/src/history.rs are opt-in behaviors layered onto the Input prompt.

Tech Stack — Built directly on console (also a console-rs crate) for cross-platform terminal styling, cursor control, and raw-mode input handling, keeping the dependency footprint small. Optional features gate extras: editor pulls in tempfile for external-editor round-tripping, password pulls in zeroize to scrub secret input from memory, and fuzzy-select pulls in fuzzy-matcher. This feature-gating keeps the default build lean for consumers who only need basic prompts.

Code Quality — Unit tests are colocated with the prompt implementations most prone to edge-case bugs — select.rs (10 tests), multi_select.rs, fuzzy_select.rs, confirm.rs, input.rs, password.rs, and sort.rs — covering keyboard-navigation and selection-state logic. The crate also ships a deny.toml for dependency license/advisory auditing in CI, and every prompt type has a matching runnable example under examples/, which doubles as documentation and a smoke test for the public API.

API Design — The builder pattern (Input::new().with_prompt("Name").interact()) is consistent across every prompt type, so learning one prompt largely transfers to the rest. Theming is a separate concern injected via .theme(&ColorfulTheme::default()), keeping visual customization decoupled from prompt logic. The API favors terse call sites for simple use, single method chains, over configuration structs, which keeps most real-world usage to a few lines per prompt.

Used by 8 apps in this directory

Rust
41%
Other

Hook0

Devops

1,477

Open-source Webhooks-as-a-Service: deliver events to your users with auto-retry, signed payloads, and a real-time subscriber dashboard — all without building the infrastructure yourself.

View details
83
Repo Health
82
Technical
70
Dependency
Built with
Rust41%
TypeScript17%
JavaScript15%
Updated today
TypeScript
75%
Other

Jan

AI Assistants

44,052

Run LLMs 100% locally with full privacy, or connect to cloud AI — your machine, your data, your control.

View details
90
Repo Health
81
Technical
66
Dependency
Built with
TypeScript75%
Rust21%
Updated today
TypeScript
95%
MIT

melty

Developer Tools · AI Code Assistants · Code Editors

5,449

The AI code editor where every chat message is a git commit you can revert, branch, or squash

View details
35
Repo Health
75
Technical
68
Dependency
Built with
TypeScript95%
Updated 1 years ago
Rust
84%
Apache 2.0

OpenShell

AI Agents · Developer Tools

8,270

The safe, private runtime that lets autonomous AI agents operate in sandboxed environments governed by declarative YAML policies — blocking data exfiltration, credential leaks, and unauthorized network activity before they happen.

View details
84
Repo Health
81
Technical
69
Dependency
Built with
Rust84%
Updated today
Rust
77%
AGPL 3.0

Spacedrive

File Storage · Collaboration

38,790

One file manager for all your devices and clouds — powered by a Virtual Distributed File System built in Rust.

View details
60
Repo Health
84
Technical
65
Dependency
Built with
Rust77%
TypeScript20%
Updated 3 weeks ago
Rust
49%
MIT

Svix

Developer Tools · Automation

3,359

Open source, self-hostable webhook infrastructure that handles delivery, retries, HMAC signing, and multi-tenant event management so you never have to build a webhooks system from scratch.

View details
91
Repo Health
77
Technical
70
Dependency
Built with
Rust49%
C#15%
Updated today
Rust
50%
Apache 2.0

Vibe Kanban

AI Agents · AI Code Assistants · Project Management

27,849

A kanban board for planning work and dispatching Claude Code, Codex, Gemini CLI, and eight other coding agents into isolated git worktrees, then reviewing and merging their diffs from one UI.

View details
53
Repo Health
75
Technical
65
Dependency
Built with
Rust50%
TypeScript46%
Updated 3 months ago
TypeScript
95%
Apache 2.0

Void

AI Code Assistants · Code Editors · Automation

28,833

Open-source AI code editor with direct LLM integration and data privacy

View details
49
Repo Health
84
Technical
69
Dependency
Built with
TypeScript95%
Updated 2 months ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search