Building OmniCard: An AI-Powered Media Manager That Respects Your Privacy
Building a local-first AI media manager with semantic search, duplicate detection, and NVIDIA vision models.
Building OmniCard: An AI-Powered Media Manager That Respects Your Privacy
Stop searching for
IMG_4832.jpg. Start searching for “drone over mountains.”
Introduction
Every developer has that one folder.
It starts with a few photos from a vacation, a handful of screenshots, maybe some videos from a drone or a phone.
A few years later, it’s thousands of files spread across multiple drives, backups, and folders with names like New Folder (2).
Finding a specific photo becomes harder than taking it.
Cloud photo services solve some of the problem, but they come with trade-offs. Your media is uploaded, your privacy depends on someone else’s infrastructure, and you’re locked into another ecosystem.
I wanted something different.
So I built OmniCard.
A local-first AI media manager that understands your photos, detects duplicates, and lets you search using natural language while keeping your media on your own machine.
Why I Built OmniCard
My photo library had become impossible to manage.
Thousands of photos.
Hundreds of duplicate images.
Folders scattered across multiple drives.
Searching by filename was frustrating because filenames don’t describe what’s actually inside an image.
I wanted a tool that could understand images instead of just storing them.
That became OmniCard.
Features
OmniCard automatically:
- Generates AI captions
- Creates smart tags
- Detects objects and scenes
- Extracts dominant colors
- Builds semantic embeddings
- Detects duplicate images
- Creates thumbnails
- Organizes favorites, trash, and recent files
Instead of searching for a filename, you can simply type:
- “Drone over mountains”
- “Golden retriever on the beach”
- “Orange sunset”
and instantly find matching images.
Tech Stack
Backend
- Python
- FastAPI
Database
- SQLite
Vector Search
- LanceDB
Computer Vision
- OpenCV
AI
- NVIDIA NIM Vision Models
Desktop
- pywebview
- PyInstaller
How It Works
When you add a folder, OmniCard scans every supported image.
For each image it:
- Generates a thumbnail.
- Creates an AI caption.
- Detects objects.
- Extracts dominant colors.
- Generates vector embeddings.
- Stores metadata.
- Computes perceptual hashes for duplicate detection.
Once indexing is complete, searches become almost instant.
Privacy First
Privacy was one of the main goals of this project.
All media files remain on your own machine.
Application data is stored locally, including:
- SQLite database
- LanceDB vector index
- Thumbnail cache
- Trash folder
The application never uploads your photo library.
Building the Desktop App
I wanted OmniCard to feel like a native desktop application instead of another web app.
The backend is written in Python using FastAPI, while the interface runs inside a native window powered by pywebview.
For distribution, the application is packaged into a standalone executable using PyInstaller, allowing users to install and run OmniCard without setting up a Python environment.
Deployment
The project also includes a landing page hosted with GitHub Pages.
Every push to the repository automatically redeploys the website using GitHub Actions, making publishing updates as simple as pushing a commit.
Project Links
Landing Page
https://sreegeethes.github.io/Omnicard/
GitHub Repository
https://github.com/SREEGEETHES/Omnicard
Latest Release
https://github.com/SREEGEETHES/Omnicard/releases/tag/v1.0.0
Challenges
Some of the biggest challenges were not related to AI itself.
They included:
- Processing thousands of images efficiently
- Keeping the application responsive during indexing
- Managing vector search locally
- Packaging a desktop application for Windows
- Detecting duplicate images accurately using perceptual hashing
Each challenge taught me something new about building production-ready desktop software.
What I Learned
Building OmniCard gave me hands-on experience with:
- Local-first software architecture
- Computer vision
- AI vision models
- Semantic search
- Vector databases
- Desktop application development
- GitHub Actions
- Performance optimization
- Python application packaging
What’s Next?
The roadmap currently includes:
- OCR search
- Face clustering
- Video scene search
- Similar image recommendations
- Conversational AI over your media library
- Better metadata editing
- Batch organization tools
Final Thoughts
OmniCard started as a solution to my own problem, but it quickly became one of the most enjoyable projects I’ve built.
If you’ve ever spent more time looking for a photo than actually taking it, you’ll understand why I wanted to build this.
I’m excited to continue improving OmniCard and would love to hear your feedback, feature ideas, or suggestions.
Thanks for reading!