#Sortd β€” Local-first AI file organizer built with Tauri 2 + Rust

3 messages Β· Page 1 of 1 (latest)

winter stirrup
#

Hey everyone! πŸ‘‹

Just shipped my first real Tauri 2 project and wanted to share it here.

Sortd watches your folders and automatically organizes files using
a local AI model via Ollama. Everything runs on your machine ,
no cloud, no API keys, no subscriptions.

How it works:

  • Known extensions β†’ instant classification (no AI call needed)
  • Unknown files β†’ Ollama + llama3.2 reads the filename and content
  • 90% confidence β†’ auto-moved silently in the background

  • 70-90% β†’ staging queue for your approval
  • Every correction teaches it via SQLite rules cache

Some Tauri 2 things I used:

  • #[tauri::command] with Arc<Mutex<T>> state for thread safe DB access
  • rfd crate for native Windows folder picker dialogs
  • Tauri events to push "file-staged" notifications from Rust β†’ React
  • app.handle() to emit events from inside a spawned tokio task

Learned a ton about the Rust/async boundary the watcher runs on
a sync thread but the AI classifier is async, solved it with
Handle::current().block_on() inside spawn_blocking.

GitHub: https://github.com/mussussu/sortd

Would love feedback from experienced Tauri devs β€” especially on
state management patterns and whether there's a cleaner way to
handle the sync/async boundary in the agent loop. PRs welcome! πŸ¦€

GitHub

Contribute to mussussu/sortd development by creating an account on GitHub.

cosmic root
#

That looks great
I love that use case for local models
Do you ship the model inside the app executable ?
What do you mean "sort"? It means move to different folders? What's the typical use case?

winter stirrup
#

There was s no executable yet, but I could do that. The name of the app is sortd, you can add watched folders and it will sort and save every file according to its file type, images, documents, etc, it uses ollama to look at the file contents and decide were to save it, if it does not recognize the file it will ask you if and where you want to save it, all local and no APIs, isnactually pretty cool, try it