dialoguer

A Rust library for interactive command-line prompts and menus

Library
Cargo
v0.12.0
1,617 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
70 /100 Good
Development Activity 68
Maintenance 44
Community 68
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
77 /100 Good
Architecture 80
Code Quality 78
Innovation 65
Learning Curve 85

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
37%
Other

Hook0

Devops

1,491

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
82
Repo Health
82
Technical
69
Dependency
Built with
Rust 37%
TypeScript 12%
Updated 2 weeks ago
Rust
52%
Other

Jan

AI Assistants

44,680

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
65
Dependency
Built with
Rust 52%
TypeScript 44%
Updated 1 weeks ago
TypeScript
95%
MIT

melty

AI Code Assistants · Code Editors · Developer Tools

5,444

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
67
Dependency
Built with
TypeScript 95%
Updated 1 years ago
Rust
85%
Apache 2.0

OpenShell

AI Agents · Developer Tools

8,811

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
85
Repo Health
81
Technical
68
Dependency
Built with
Rust 85%
Updated 1 weeks ago
Rust
77%
AGPL 3.0

Spacedrive

Collaboration · File Storage

39,041

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

View details
56
Repo Health
84
Technical
63
Dependency
Built with
Rust 77%
TypeScript 20%
Updated 2 months ago
Rust
47%
MIT

Svix

Automation · Developer Tools

3,423

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
90
Repo Health
77
Technical
67
Dependency
Built with
Rust 47%
C# 15%
Updated 2 weeks ago
Rust
50%
Apache 2.0

Vibe Kanban

AI Agents · AI Code Assistants · Project Management

28,209

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
75
Repo Health
75
Technical
64
Dependency
Built with
Rust 50%
TypeScript 46%
Updated 2 weeks ago
TypeScript
95%
Apache 2.0

Void

AI Code Assistants · Automation · Code Editors

28,786

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

View details
45
Repo Health
84
Technical
68
Dependency
Built with
TypeScript 95%
Updated 4 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