What is Dirty?
Dirty is a fast CLI tool written in Rust that scans directories for git repositories and instantly shows you which ones have uncommitted changes and which are local-only (no remote configured). Perfect for developers managing multiple projects across a monorepo or workspace, Dirty helps you quickly identify work in progress and repos that haven’t been pushed to a remote.Key features
Fast parallel scanning
Uses Rust’s rayon for parallel processing and libgit2 for lightning-fast repo inspection
Uncommitted changes detection
Instantly see which repos have dirty working directories with untracked or modified files
Local-only repo detection
Identify repositories that have no remotes configured, helping you avoid losing work
Configurable depth and filtering
Control how deep to search and filter results to show only dirty or local-only repos
Unpushed commits tracking
Optionally show how many commits are ahead of upstream for each repository
Raw output for scripting
Machine-readable output mode for piping to other tools and automation scripts
Example output
*— Repository has uncommitted changes (displayed in red)[local]— Repository has no remotes configured (displayed in yellow)
Get started
Installation
Install Dirty using Cargo in seconds
Quickstart
Start scanning your repositories right away
How it works
- Directory walking — Recursively searches directories up to the specified depth looking for
.gitfolders - Parallel inspection — Inspects each repository in parallel using libgit2 (via git2) and rayon
- Status detection — Checks for uncommitted/untracked changes and whether any remotes exist
- Smart reporting — Displays results with color-coded indicators and summary statistics