Skip to content

Sift

Safe, local-first file organization.

Preview changes. Apply explicitly. Undo safely.
Keep messy folders organized without giving up control.

Dry-run by default

Every command is a preview until you explicitly add --apply. Nothing moves or gets trashed before that.

Undo built in

Successful moves are recorded as history and can be safely reversed with sift undo.

Explain every decision

sift explain <file> shows exactly why a file was classified, skipped, protected, or moved — before or after the fact.

Per-folder rules

Drop a .sift.toml into any directory to give it its own strategy, rules, and Watch behavior.

Watch

Turn selected folders into continuously organized inboxes, with explicit, persistent authorization.

Tray app

An optional desktop tray UI for managing watched folders without keeping a terminal open.

Folders accumulate entropy — a Downloads directory starts with a few PDFs and screenshots and ends up a mix of documents, archives, videos, datasets, and forgotten project folders. Manual cleanup doesn’t scale, one-off shell scripts are risky to reuse, and AI-based organizers can be hard to predict or audit.

Sift takes a different approach:

  • Predictable — classification is deterministic, based on filenames, extensions, metadata, and explicit rules. The same input always produces the same plan.
  • Safe by default — no --apply, no mutation. Existing destinations are never silently overwritten, directory trees are never automatically merged, and software projects are protected outright.
  • Local-first — core organization runs entirely on your machine. No cloud service and no AI are required.
  • Controlled automation — Watch keeps a folder continuously organized, but only after explicit, persistent authorization (--auto-apply), and only for files that arrive from that point on.
  • Per-folder rules — a .sift.toml file lets any directory define its own organize strategy and declarative rules, which always take precedence over the built-in defaults.
Terminal window
sift organize ~/Downloads
invoice.pdf → Documents/
vacation.jpg → Images/
backup.zip → Archives/
notes.xyz → Other/
my-project/ → protected: software project
No changes made.
Run with --apply to execute.

Happy with the plan? Apply it:

Terminal window
sift organize ~/Downloads --apply
✓ Applied successfully
3 files moved
3 directories created
1 entry skipped
0 failures
History
hist-...

Changed your mind? sift undo hist-... reverses it.

.sift.toml

Every directory can define its own policy: strategy, unknown-file handling, Watch stability, and declarative rules.

version = 1
[organize]
strategy = "type"
unknown = "other"
[[rules]]
enabled = true
priority = 100
pattern = "*.tmp"
action = "Trash"

Watch + Tray

Register a folder once, and Sift keeps it organized as new files arrive — stable-file detection avoids half-downloaded files. Manage every watched folder visually from the optional tray app: open, pause, reapply, or toggle recursive mode, without a terminal.

Terminal window
sift watch add ~/Inbox --auto-apply
sift watch start ~/Inbox
sift watch tray