Offline-first Memory Organization & Intelligent Discovery Engine
Omoide is a self-hosted, offline-capable photo and video library designed for privacy and longevity. It uses local AI to organize your media, making it searchable and discoverable without sending a single byte to the cloud.
Data safety warning
Always keep verified backups of your media. Never import your only irreplaceable originals into any system you did not build and fully validate yourself.
Download the latest binary release
The app is ad-hoc signed but not notarized, so Gatekeeper will block it on the first open.
- Unzip the downloaded
.app.zip— you'll getomoide-....app- Move it to your Applications folder (optional but recommended)
- Double-click the app → macOS shows "cannot be opened because the developer cannot be verified"
- Open System Settings → Privacy & Security, scroll down, and click Open Anyway
- Confirm in the dialog — the app opens normally from now on
Alternatively, right-click (or Control-click) the
.app→ Open → Open skips the warning in one step.
Also available as a Docker container.
- 100% Local: No cloud services, no subscriptions. Your data stays on your drive.
- Offline-First: Works fully offline after the initial model download.
- Portable: Run it as a desktop app on Windows/Linux/MacOS or host it via Docker.
- Face Recognition: Automatically detects and clusters faces. Name them once, and Omoide finds them everywhere.
- Semantic Search: Search for "dog in the snow" or "birthday party" using natural language. Powered by OpenCLIP (Available since 0.6.0 search for known people with free text e.g. "Sam playing Baseball" and Omoide will automatically filter for images of the detected Person named Sam playing Baseball).
- Auto-Tagging: Optional AI categorization of your images, default tags exist, new tags can be added manually via config.
- Co-appearance Graph: Visualize how people in your library are connected and detecte friendship and family circles based on co-appearance counts.
- Duplicate Detection: Find and clean up exact or near-duplicates using perceptual hashing.
- Map View: Explore your photos on a world map. Edit or add GPS data directly.
- Video Support: Scans and plays videos, automatically detecting and extracting scenes for easy preview and free-text search.
- Orphan Face Management: Review and merge fragmented face clusters.
- Multiple Profiles: Switch between different libraries easily.
- Read-Only Mode: safely serve your archive to others.
- Background Tasks: Robust task management for scanning and processing large libraries.
| Library Grid | Media Detail |
|---|---|
![]() |
![]() |
| Semantic Search | People Overview |
|---|---|
![]() |
![]() |
| Map View | Co-appearance Graph |
|---|---|
![]() |
![]() |
Perfect for NAS or always-on servers.
-
Copy the template:
cp .env.template .env cp omoide.env.example omoide.env
-
Configure
.env: Set your media directories and ports. Ensure the folders you set in your .env actually exist in your system, to prevent permission issues on automatic creation. -
Run:
docker compose up -d
-
Open:
http://localhost:8123
Note for arm64: Ensure
sqlite-vecmatches your platform (e.g. 0.1.7a2) and build withdocker buildxormake build-image-arm64. Alternatively use the Docker Hub image as set in the docker-compose.yml
Requirements: Python 3.12+, FFmpeg, Node 18+. For Windows: .NET Framework Download .NET
# 1. Build Frontend
cd frontend && npm ci && npm run build && cd ..
# 2. Run Backend
uvicorn app.main:app --host 127.0.0.1 --port 8123To build a standalone binary:
pyinstaller main.spec- Backend: FastAPI + SQLModel (SQLite).
- Vector Search: sqlite-vec for high-performance similarity search.
- AI Models:
- Vision: OpenCLIP for embeddings and search.
- Faces: InsightFace (ONNX) for detection and recognition.
- Clustering: HDBSCAN/Chinese Whispers for grouping faces.
- Scene detection: scenedetect
- Frontend: React + MUI.
PolyForm Noncommercial License 1.0.0
Free for personal, non-commercial use. See LICENSE.md for details.
Omoide is a passion project maintained in my free time. If it helps you rediscover your memories, consider supporting its development!






