Mirowl - Search all your screenshots via a local OCR-powered AI

by
A frictionless, local-first Mac app to index and search all your screenshots and image assets. Built with Rust/Tauri for zero footprint and powered by native macOS Vision for 10x OCR accuracy. Optional cloud, no tracking—just pure utility.

Add a comment

Replies

Best
Maker
📌
Hi PH community! 👋 I’m Safi, a solo builder and Portfolio Founder. I built Mirowl because my own desktop was a graveyard of 'Screen Shot...' files. I wanted a way to manage these assets that felt native, stayed local-first, and didn't require a cloud subscription. Why Mirowl? 🦉 Frictionless: It sits in your menu bar and works in the background. 🦀 Rust-Powered: Near-zero idle footprint and high-performance indexing. 🔍 10x Accuracy: We use native macOS Vision for deep text/code search. 🛡️ Privacy: 100% local. Your data never leaves your machine. We just shipped v1.1.0 and I'm excited to get it into your hands. I'm here all day to answer questions and listen to your feedback. Let's kill the digital clutter together! 🚀

Local OCR is a smart call, especially for screenshots that often have personal stuff in them. Curious which engine you went with under the hood, Apple Vision or something custom? I work with on-device OCR too and the accuracy on dense text was the hardest part to get right.

 Great question! The accuracy on dense text is definitely the 'final boss' of local OCR.

For Mirowl, I moved entirely to the native Apple Vision framework for the text extraction. In my testing for v1.1.0, it was spot on compared to general models, especially for high-res Retina shots.

For the auto-categorization and tagging, I’m using a local model so that we can keep the entire pipeline on-device.

 Makes sense. Keeping the whole pipeline on-device is the right call for screenshots. Nice work, will keep an eye on Mirowl.

 Thanks, Erdem! You are spot on, privacy is exactly why I started with screenshots.

But I actually designed the engine to be flexible, you can point Mirowl at any folder on your Mac (like project assets, downloads or design archives) and it will index and tag them exactly the same way. The goal is to make all your visual knowledge searchable, no matter where it's stored. Appreciate you following along! 

I like the local-first approach. Is Mirowl currently macOS-only, or are there plans for a Windows version in the future?

thank you! i am actively developing for windows. Will definetely notify once ready!

I have, like, thousands of unnamed screenshots just sitting there because once they get buried, it’s basically impossible to find them again.I've never really preferred cloud storage for screenshots/files because of the privacy aspect, so the fact that this works mostly on-device is probably the biggest selling point for me.

 that buried feeling is exactly what drove me to build this. i have folders with thousands of shots too and the cloud privacy tax was always a dealbreaker for me. glad the on-device focus is hitting the mark for you.

Nice that everything happens on device, as i state with thoth, our devices have more computing power than the Apollo guidance computer so why offload computing to the cloud !

Quick question: does Mirowl rename the files or propose titles based on the content, or is it search-only? Auto-naming "Screen Shot 2026..." into something findable would be huge for me. To keep that local it could be done with apple intelligence

 Love the Apollo Guidance Computer analogy! You’re absolutely right - our local hardware is more than capable of handling these workflows without a 'cloud tax.'

Regarding re-naming, Currently, Mirowl keeps the original file name on your disk to ensure we don't disrupt your existing filing system, but allows you to rename the asset within the app for searchability.

However, auto-naming 'Screen Shot' files is one of my top roadmap items. I’m actually exploring how to leverage Apple Intelligence and local LLMs to do exactly that in the next version. It’s the final step to truly killing the desktop clutter!

Built a K1 document OCR pipeline professionally and spent the last week generating hundreds of AI video storyboard screenshots across GPT and Kling. The screenshot search problem is real — I was manually scrolling through folders looking for specific reference images. Curious how Mirowl handles images with minimal text — like a cinematic still or a product photo with just a logo. Does the AI understand visual content beyond just OCR, or is it purely text extraction from images?

congrats on the K1 pipeline! Sifting through hundreds of AI storyboards is exactly the nightmare that inspired Mirowl. ​To answer your question: yes, it absolutely understands visual content, but it depends on your tier. Our free tier relies on local, on-device OCR, so it mostly catches text. But our Pro tier includes optional cloud vision AI specifically for this. ​For your cinematic stills or logo shots, the Pro tier analyzes the actual visual scene. You can search by descriptors like "moody sci-fi lighting" or "product mockup" rather than just text. Given your workflow with GPT and Kling, that's definitely the way to go. ​Would love for you to give it a spin on your latest batch and let me know how it handles them!
Awesome... this looks great.. i have some many screenshots and struggle to organize them
Any plans for a similar app for iPhone?

 Great question! We started on Mac because we wanted to leverage the native macOS Vision engine and a Rust core for high-performance, local-first search.

While a mobile version would be cool, we’re currently 100% focused on making the desktop 'Screenshot Graveyard' a thing of the past first. We want to be the best possible tool for the workstation workflow!

rust/tauri + native Vision — nice combo. built similar local-first on mac, the OCR pass got memory-heavy past a few thousand shots. you indexing incrementally on new ones or batching the lot?

 Great point! Memory management is definitely the biggest challenge when you're doing local OCR at scale. For mirowl, I handled this by using the native macOS Vision framework directly through Rust. Since it’s optimised by Apple to use the Neural Engine, the footprint stays surprisingly lean. To keep things stable, I use a native folder watcher to index new shots incrementally, but for larger batches, I built a sequential worker pipe. That way, the app only ever processes one image at a time, which keeps the memory usage flat whether you're indexing 10 images or 1,000. It’s been feeling really snappy so far!

  the one-at-a-time worker pipe is the right call for flat memory — i'd have reached for batching and regretted it. does the watcher ever fall behind on a big import, or does the queue just absorb it?

 Exactly. I kept the discovery and heavy lifting separate to avoid that. The watcher just handles the high-speed 'ingress' - it indexes the file locations in the DB almost instantly and then pushes the IDs into a Rust queue.

Finally, a tool for the thousands of screenshots I swear I’ll organize “later.” 😅 The local OCR + privacy-first architecture makes this stand out. Looking forward to trying it out!

 Haha, I was exactly the same! 'Later' never comes until you have a way to search it instantly. Really glad the local-first approach resonates with you - privacy was my top priority when developing this. Hope it helps you kill the clutter!

12
Next
Last