A lazy little agent with an open-weight brain. It reads your messiest folder, asks a 397 MB local model where each file belongs, and files everything in small shifts — napping in between. No cloud. No subscription. No deletions. Ever.

Manual triage of a month-old Downloads folder is 15–25 minutes of pure tedium: open, skim, decide, drag, rename. Sloth Sort does a 24-file folder in about 65 seconds — then keeps doing it at 2am every night on a cron job you set up once and never think of again.
Before:
1password-backup-2019.txt invoice_INV-2204_final_FINAL (2).pdf Screenshot 2025-10-02 .png rental_agreement_signed.pdf api_keys_OLD_ROTATED.json tax_summary_2024.pdf tmp9F31.tmp …
After $ python3 sloth_sort.py apply ~/Downloads --pace 8
Finance/receipts · statements · tax summary Documents/lease · letters · that recipe Notes/todo · lecture · standup Photos/ Screenshots/ Code/ Software/ _archive/stale password export · rotated API keys · tmp junk
Built in one session for the DEV Hacktoberfest Open-Source AI Challenge — Week 3: “Slow and
Steady”. The demo folder above was generated, sorted, un-sorted (undo), and re-sorted
live in a tiny 2-core sandbox; unedited logs ship in demo/*.log.
The folder held a tax summary and a password export. Local inference means they can’t “leak” — nothing ever leaves the machine.
After one 397 MB download, it sorts on planes, in blackouts, anywhere. Hygiene shouldn’t depend on signal bars.
Nightly, on every machine you own: still free. Idle CPUs you already have, not tokens you rent.
One flag to trade up to a bigger model — or fine-tune the small one on your definition of tidy. No vendor roadmap.
The entire decision loop — prompt, categories, fallbacks — is ~450 lines you can read in one sitting.
~2.5 s per file on 2 cores. Slow, steady, reproducible (temperature=0, pinned local weights).
Night shift, the truly lazy way: 0 2 * * * cd ~/sloth-sort && python3 sloth_sort.py apply "$HOME/Downloads" --pace 8 --siesta 2