Stop deciding where your files belong. Tidy does it for you.
Fast, non-destructive file organizer and background watcher in Rust. Organizes your ~/Downloads folder by default, or point it to any folder you choose.
Static binary
Idle RSS memory
Instant batch undo
Zero overwrites
Organization & Rollback Demo
Engineered for Safety & Speed
Native Rust Binary
Compiled with LTO and zero runtime dependencies for sub-millisecond dispatch.
cargo build --releaseNon-Destructive Operations
Automatic incremental collision renaming (e.g. photo (1).jpg) and symlink barriers.
name (1).pdfTransactional Undo
Every file move is journaled into local history.db for immediate single or batch rollbacks.
tidy undo --last 370+ Formats Classifier
Native handling for compound archives (.tar.gz) and magic-byte MIME fallback.
compound .tar.gzAdaptive Kernel Watcher
inotify and FSEvents hooks with download guards that ignore in-progress files.
tidy watch --debounce 2000Native OS Daemon
Manage persistent background watching via systemd --user (Linux) or launchd (macOS).
tidy service enableExecution Pipeline
Event Trigger
inotify (Linux) / FSEvents (macOS) event or manual CLI trigger.
Download Guard
Bypasses active browser downloads (.crdownload, .part, .aria2).
Stability Filter
Samples file size across intervals and queries advisory OS locks.
MIME Classifier
Matches compound extensions (.tar.gz) with magic-byte fallback.
Category Routing
Maps file to structured directory hierarchy (e.g. Documents/PDF).
Collision Handler
Appends incremental counter (file (1).ext) if name already exists.
Atomic Mover
Fast atomic rename with staged verify-unlink fallback across disks.
SQLite Journal
Commits batch transaction into history.db for immediate undo.
Verifies size and checksum before deleting source across disk partitions.
Never traverses directory symlinks targeting outside the watch root.
Immediate WAL journal writes guarantee zero orphaned files during undo.
Resource Footprint
Zero-Config Defaults, Fully Extensible
tidy initMagic-byte fallback via inferEssential Commands
Install & Approve Script
Install globally via npm (with script permission) or direct curl shell script.
Dry-Run vs Real Run
Simulate first to see planned moves safely, then execute live on Downloads.
Target Specific Folder
Run on your current directory or point tidy to any arbitrary folder.
Configure Rules & Folders
Scaffold and edit the default TOML configuration to define custom rules.
Run in Background (Daemon)
Daemon defaults to watching ~/Downloads on boot; override with --path.
Instant Undo & Rollback
Revert any single or multi-run batch safely via embedded SQLite ledger.
Installation & Commands
Fetches pre-compiled static binary for Linux (x86_64 / aarch64) or macOS (Apple Silicon / Intel).
CLI Commands
$ tidy run --dry-runPreview without moving$ tidy watchStart kernel watcher$ tidy undoRevert last batch$ tidy undo --last 3Revert last 3 batches$ tidy statusReport DB and rulesBackground Service (systemd / launchd)
$ tidy service enable$ tidy service status$ tidy service logs -f$ tidy service disable