Skip to main content

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

$ dirty ~/code
 * apps/dashboard
   apps/storefront
 * libs/ui-kit [local]
   libs/common
 * services/auth
   services/payments
   tools/cli [local]
 * tools/scripts [local]

8 repos, 4 dirty, 3 local-only
Understanding the markers:
  • * — 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

  1. Directory walking — Recursively searches directories up to the specified depth looking for .git folders
  2. Parallel inspection — Inspects each repository in parallel using libgit2 (via git2) and rayon
  3. Status detection — Checks for uncommitted/untracked changes and whether any remotes exist
  4. Smart reporting — Displays results with color-coded indicators and summary statistics

Build docs developers (and LLMs) love