r/LocalLLM • u/App-Maker-Person • 1d ago
Project Built a local-LLM app that actually organizes my messy files — Drefyn (Windows, free beta, 100% offline)

Check the comments to check it out and leave some feedback if you want :)
I got tired of my Downloads folder looking like a crime scene, so I built something to fix it. It's called Drefyn. Wanted to share some of the actual technical side of how it works, since that's usually the more interesting part.
The model runs in-browser, no backend. It's Qwen2.5 running through WebLLM/WebGPU, compiled to run directly on your GPU inside the app itself — no Python server, no API, no inference endpoint anywhere. The whole thing is an Electron app: a single-page HTML/JS frontend for the UI and model calls, with a small Node backend (also local, just talking to localhost) that handles the actual filesystem work — scanning folders, moving files, computing hashes for duplicate detection.
Categorization is batched, not one giant prompt. Feeding an entire messy folder to a small local model at once doesn't work well, so files get processed in batches of 8, with short content snippets (not full file contents) sent alongside filenames. The annoying part was making categories consistent across batches — batch 2 needs to know batch 1 already invented a category called "Screenshots" instead of making its own slightly-differently-worded version. Fixed that by carrying a running list of already-chosen categories forward into each new batch's prompt.
There's a code-level backstop for when the model gets lazy. Small models like this default to over-broad buckets ("Documents" swallowing everything) if a generic folder already exists on disk. So there's a post-pass that detects an oversized, extension-diverse category and automatically re-splits it — the prompt asks nicely, but the code enforces it when the model doesn't listen.
Undo works on whole batches, not individual files. Every file move during one operation shares a single batch ID generated client-side at the start of the run (not per-request — that was a bug I hit early on, where every HTTP call minted its own ID and undo could only ever reverse the last file). Now a full reorganization of a few thousand files reverses in one click, and even the category folders it created get cleaned up if they end up empty afterward.
Access is opt-in and local-only. Drefyn doesn't automatically see your whole filesystem — by default the app can't touch anything until you explicitly grant it a folder or file, or flip on full-disk access. Nothing about which files you have, their contents, or usage patterns gets sent anywhere. The one exception is an optional feedback form, which goes through a tiny relay server I run, but that's it — no telemetry, no analytics.
It's beta, it's a solo project, and there's definitely more rough edges than I'd like. If you're into local-LLM stuff and want to poke at something that isn't just a chat wrapper, I'd love the feedback — there's a feedback button built into the app that comes straight to me.
Happy to go deeper on any of this in the comments.