indicatif

A Rust library for progress bars, spinners, and colored terminal output in command-line applications.

Library
Cargo
v0.18.6
5,199stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
77/100Good
Development Activity84
Maintenance60
Community64
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
82/100Excellent
Architecture82
Code Quality84
Innovation76
Learning Curve85

indicatif is a Rust library for showing users progress in command-line applications, providing configurable progress bars, spinners, and basic terminal color support. It’s part of the console-rs family of crates (alongside console and dialoguer) and is one of the most widely depended-upon terminal UI crates in the Rust ecosystem, with over 184 million total downloads.

Beyond a single progress bar, indicatif supports MultiProgress for coordinating several concurrently rendered bars (e.g. per-file download progress), an iter() extension for wrapping any iterator with automatic progress tracking, and a rayon integration for progress on parallel iterators. Companion crates in the ecosystem — indicatif-log-bridge and tracing-indicatif — let it coexist cleanly with the log and tracing crates so log output doesn’t collide with an active progress bar’s rendering.

What You Get

  • ProgressBar and ProgressStyle for single progress bars/spinners with customizable templates, characters, and colors
  • MultiProgress for rendering several progress bars concurrently, e.g. one per parallel download or worker thread
  • An iter() extension trait that wraps any Iterator to report progress automatically as it’s consumed
  • Optional rayon feature for automatic progress tracking on parallel iterators
  • Ecosystem integrations (indicatif-log-bridge, tracing-indicatif) so log/tracing output doesn’t corrupt active progress bar rendering

Common Use Cases

  • Showing download/upload progress in CLI tools that transfer files over the network
  • Displaying build or processing progress across many parallel tasks (e.g. compiling, testing, batch file processing)
  • Wrapping a long-running iterator (like a directory walk or dataset scan) with a live progress bar via .progress()
  • Building interactive CLI UX comparable to tools like cargo, yarn, or npm’s own progress output

Under The Hood

Architecture — The crate separates rendering concerns cleanly: progress_bar.rs (876 lines) exposes the public ProgressBar API, state.rs (884 lines) tracks position/length/timing state behind a shared, thread-safe handle, style.rs (1,184 lines) handles template parsing and rendering (spinners, bars, ETA/speed formatting), multi.rs (802 lines) coordinates multiple bars’ terminal positions via a shared draw_target.rs, and term_like.rs/in_memory.rs abstract the actual terminal so tests can render against an in-memory buffer instead of a real TTY.

Tech Stack — Pure Rust, built on the console crate (a sibling console-rs project) for terminal capability detection and ANSI styling, with optional integrations gated behind Cargo features for rayon (parallel iterators), tokio (async), improved_unicode (grapheme-aware width calculation), and in_memory (test rendering).

Code Quality — Tests (tests/render.rs, tests/multi-autodrop.rs) render against the in-memory terminal abstraction to assert exact byte-for-byte output, a strong pattern for a library whose entire job is precise terminal rendering. The crate ships 14+ runnable examples (download, multi-tree, rayon, tokio, log integration) that double as both documentation and de facto integration tests, and CI includes deny.toml-enforced dependency auditing.

API Design — The builder-style ProgressBar::new(len).with_style(...) API and template-string-based styling (e.g. {spinner} {msg} [{bar}] {pos}/{len}) make common cases quick to reach while still exposing enough low-level control (custom characters, tick strings, ETA formatting) for polished CLI UX. The iterator extension trait (.progress()) is a particularly low-friction entry point — wrapping an existing loop in a progress bar requires almost no code change.

Used by 14 apps in this directory

TypeScript
55%
Other

Cap

Team Chat · Video Conferencing

20,986

Open source Loom alternative with GPU-accelerated recording, instant share links, AI summaries, and full self-hosting via Docker Compose.

View details
89
Repo Health
81
Technical
65
Dependency
Built with
TypeScript55%
Rust40%
Updated yesterday
Rust
100%
Other

Fluree DB

Databases

445

A temporal, verifiable graph database with git-like branching, integrated vector/text/geo search, and RDF/SPARQL/JSON-LD/openCypher support — benchmarked at 10.4x faster than the next database on the full Wikidata dump.

View details
86
Repo Health
74
Technical
65
Dependency
Built with
Rust100%
Updated yesterday
Rust
93%
Apache 2.0

helix-db

Databases

5,803

A graph-vector database built from scratch in Rust that unifies graph traversal, vector search, key-value, and relational storage into a single platform for AI applications.

View details
85
Repo Health
80
Technical
81
Dependency
Built with
Rust93%
Updated today
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
Rust
72%
Other

iii

Developer Tools · Devops

18,604

Compose, extend, and observe every backend service in real time using three primitives: Workers, Functions, and Triggers.

View details
86
Repo Health
85
Technical
69
Dependency
Built with
Rust72%
TypeScript17%
Updated yesterday
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
79%
MIT

mnemo

AI Agents · AI Development

237

A local-first AI memory sidecar that extracts entities, builds a persistent knowledge graph, and injects ranked context into any LLM pipeline — no cloud required.

View details
30
Repo Health
78
Technical
75
Dependency
Built with
Rust79%
Python16%
Updated 2 months ago
Python
74%
AGPL 3.0

OpenViking

Databases · AI Development

29,711

An open-source context database that gives AI agents a unified filesystem for memory, resources, and skills with hierarchical tiered retrieval.

View details
84
Repo Health
75
Technical
65
Dependency
Built with
Python74%
Rust14%
Updated today

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