unsubbed.co

Omoide

Omoide is a self-hosted photo galleries tool that provides photo and video library with AI features.

Self-hosted media management, honestly reviewed. No marketing fluff, just what you get when you run AI on your own hardware.

TL;DR

  • What it is: A self-hosted, offline-capable photo and video library that uses local AI models for face recognition, semantic search, and duplicate detection — no cloud account required [README].
  • Who it’s for: Privacy-conscious individuals who want Google Photos-level smart search on their own hardware, running on a NAS, home server, or Windows desktop [README].
  • License caveat: PolyForm Noncommercial License 1.0.0 — free for personal use, but commercial use is prohibited [README]. This is not an open-source license in the OSI sense.
  • Cost savings: Google Photos charges $2.99–$9.99/mo for cloud storage once you pass 15 GB. Omoide runs free on hardware you already own, with no per-GB storage billing.
  • Key strength: An unusually complete AI feature set for a single-developer project — face recognition, semantic natural-language search, GPS map view, duplicate detection, and a social co-appearance graph in one package [README].
  • Key weakness: Solo-developer “passion project” with 245 GitHub stars and no dedicated website, no independent reviews, and a noncommercial license that limits what you can do with it. Not suitable for business use.

What is Omoide

Omoide is a self-hosted photo and video library manager with a local AI pipeline. The name and tagline — “Offline-first Memory Organization & Intelligent Discovery Engine” — describes what it actually does: it runs AI models on your machine to make your personal photo archive searchable without sending anything to an external server [README].

The project ships in two forms. A Windows desktop application (downloadable from GitHub Releases) and a Docker container for Linux or NAS deployments. The backend is FastAPI + SQLite via SQLModel; the frontend is React + MUI. Vector search is handled by sqlite-vec, which keeps the entire stack in a single SQLite file with no external database server required [README].

The AI layer is where Omoide differentiates from simpler gallery tools. It uses three models running locally:

  • OpenCLIP for vision embeddings, powering the semantic search (“dog in the snow”, “birthday party”)
  • InsightFace (ONNX) for face detection and recognition
  • HDBSCAN for clustering detected faces into person identities

All three run entirely on-device after the initial model download. Nothing is sent to OpenAI, Google, or any cloud API [README].

As of this review, Omoide sits at 245 GitHub stars with 13 forks and 29 releases — the most recent being v0.5.3 from March 22, 2026. The repository has 411 commits and one named contributor. It is, by any measure, a small independent project rather than a backed company product.


Why people choose it

No independent third-party reviews of Omoide were located during research. The following is based on the README and feature set alone.

The case for Omoide comes down to one question: do you want a photo library where you own the AI results? Google Photos has excellent face recognition and semantic search — but every photo you upload passes through Google’s servers, and if you cancel or get locked out, your organized library doesn’t come with you.

Omoide’s pitch is that the same categories of AI capability (face grouping, natural language search, GPS map, duplicate finding) can run on hardware you control, with SQLite as the only database. For someone with a NAS full of unorganized photos going back 15 years, that’s a real offer.

The Windows desktop app matters more than it might seem. Most self-hosted photo tools are server-only — you need a Linux box or NAS to run them. Omoide can run as a local application on a Windows PC, which lowers the barrier for non-technical users who just want the AI organization features without setting up Docker.


Features

Based on the README:

Privacy and portability:

  • 100% local — no cloud services or subscriptions [README]
  • Offline after initial model download [README]
  • Runs as Windows desktop app or Docker container on Linux/NAS [README]
  • Multiple library profiles (switch between different directories) [README]
  • Read-Only mode for sharing your archive without allowing edits [README]

AI organization:

  • Face Recognition: detects and clusters faces using InsightFace + HDBSCAN. Name a cluster once, and Omoide finds that person across the entire library [README]
  • Semantic Search: natural language queries (“red dress”, “snowy mountain”) powered by OpenCLIP embeddings stored in sqlite-vec [README]
  • Auto-Tagging: optional AI categorization of images [README]
  • Co-appearance Graph: visualizes social connections — which people appear together, how often [README]
  • Orphan Face Management: tools to review and merge fragmented face clusters that HDBSCAN couldn’t automatically group [README]

Practical tools:

  • Duplicate Detection: perceptual hashing to find exact and near-duplicate photos [README]
  • Map View: explore photos geographically; edit or add GPS metadata directly [README]
  • Video Support: scans video files, extracts scenes for previewing [README]
  • Background Tasks: robust task queue for scanning and processing large libraries without blocking the UI [README]

Tech stack:

  • Backend: FastAPI + SQLModel (Python 3.12+) [README]
  • Database: SQLite with sqlite-vec for vector similarity search [README]
  • Frontend: React + MUI [README]
  • AI models: OpenCLIP, InsightFace (ONNX), HDBSCAN [README]

Pricing: SaaS vs self-hosted math

Omoide itself: $0 for personal use. The PolyForm Noncommercial License means free to use, study, and modify for personal, non-commercial purposes [README]. If you are using it for any business activity, the license prohibits it.

Infrastructure cost for self-hosting:

  • NAS you already own: $0 incremental
  • Dedicated VPS: $5–10/mo (though a VPS isn’t typical for a personal photo library)
  • Windows desktop: runs directly, no server needed

Google Photos for comparison:

  • Free: 15 GB shared with Gmail and Drive
  • 100 GB: $2.99/mo ($35.88/yr)
  • 2 TB: $9.99/mo ($119.88/yr)
  • 5 TB: requires Google One, $24.99/mo

iCloud Photos for comparison:

  • 50 GB: $0.99/mo ($11.88/yr)
  • 200 GB: $2.99/mo ($35.88/yr)
  • 2 TB: $9.99/mo ($119.88/yr)

Savings math: A family with 500 GB of photos pays ~$9.99/mo on Google One — $120/year. Self-hosting on a NAS they already own, with Omoide: $0/year. Over five years that’s $600 in storage fees avoided, and the photos never leave the home network.

The real cost of self-hosting here isn’t money — it’s time. Initial setup, model downloads, indexing a large library for the first time (which may take hours for 100,000+ photos given local AI inference), and ongoing maintenance.


Deployment reality check

Docker path (Linux/NAS):

  1. Copy .env.template to .env and omoide.env.example to omoide.env
  2. Configure media directory paths and ports in .env
  3. docker compose up -d
  4. Open http://localhost:8123 [README]

This is about as simple as Docker deployments get. SQLite means no separate database container to configure. The docker-compose.yml is included in the repository.

ARM64 gotcha: There is a documented platform-specific issue — sqlite-vec must match your platform (the README specifically cites version 0.1.7a2 for ARM64), and building requires docker buildx or make build-image-arm64 [README]. If you’re running a Raspberry Pi or an ARM-based NAS (Synology, QNAP), budget extra time to verify the build works.

Windows desktop path: Download the release from GitHub, install, run. No Docker or Python required [README]. This is the lowest-barrier option for non-technical users.

First-run experience: Models must be downloaded on first run [README]. Depending on your connection, OpenCLIP and InsightFace ONNX models may be several hundred megabytes. Once downloaded, the system is fully offline.

Initial indexing: The README does not document indexing speed. For a library of 50,000+ photos with face recognition and CLIP embeddings enabled, expect hours of processing time on modest hardware. Background Tasks handles this without blocking the UI, but don’t expect instant results [README].

What can go sideways:

  • ARM64 requires manual platform verification for sqlite-vec [README]
  • Face clustering (HDBSCAN) produces “orphan” clusters that need manual review — the Orphan Face Management feature exists specifically because automatic clustering isn’t perfect [README]
  • Video scene extraction requires FFmpeg [README]
  • There is no documented upgrade path for major versions in the README — for a 29-release project, this is a gap worth noting

Realistic time estimates:

  • Technical user on x86 Linux with Docker: 15–30 minutes to a working instance
  • Non-technical user on Windows: download and install, under 10 minutes
  • First full library scan: hours for large collections

Pros and Cons

Pros

  • Complete local AI stack in one package. Face recognition + semantic search + duplicate detection + GPS map is a feature set usually split across multiple tools or requiring cloud APIs [README].
  • Works offline. After the initial model download, no internet connection is ever needed [README].
  • Windows desktop app. Eliminates the Linux/Docker requirement for personal users — rare in the self-hosted space [README].
  • SQLite-only. No PostgreSQL, no Redis, no external services. The entire library state lives in a single file [README].
  • Actively maintained. 29 releases, 411 commits, latest release March 2026 [GitHub metadata].
  • Semantic natural-language search is genuinely useful. Searching “green jacket outdoor” instead of manually browsing folders is the killer feature for unorganized archives [README].
  • Co-appearance graph is a genuinely novel feature — visualizing social connections in your photo library isn’t available in any mainstream competitor.

Cons

  • PolyForm Noncommercial License — not OSI open source. You cannot use this commercially. If you’re a photographer running client work through your NAS, check the license carefully before deploying [README].
  • Solo developer, 245 stars. This is a passion project. If the developer stops maintaining it, there’s no company, no funded fork, no community large enough to pick it up. Compare to Immich (60K+ stars, funded) or PhotoPrism (36K+ stars, commercial backing).
  • No independent reviews exist. No Trustpilot page, no dedicated review articles, no Reddit threads from real users surfaced during research. You are essentially betting on the README description.
  • No dedicated website. All documentation lives on GitHub. No community forum, no changelog beyond GitHub Releases.
  • ARM64 requires extra manual steps. Not a dealbreaker, but NAS users (who are the most natural audience for this) often run ARM hardware [README].
  • Face clustering requires manual cleanup. HDBSCAN isn’t perfect; orphan face management is a workaround, not a solution [README].
  • No cloud sync or backup. Omoide is a viewer and organizer, not a backup solution. Your photos still need separate backup.
  • No documented REST API. Programmatic access or integration with other tools isn’t a stated feature.

Who should use this / who shouldn’t

Use Omoide if:

  • You have a large personal photo archive and want Google Photos-style face grouping and semantic search without any cloud involvement.
  • You’re on Windows and don’t want to set up Docker — the desktop app works.
  • You’re running a NAS on x86 hardware and want a media manager with real AI features, not just a gallery viewer.
  • You understand that “passion project at 245 stars” means you’re an early adopter, and you’re comfortable with that tradeoff.

Skip it (use Immich instead) if:

  • You want a mature, community-backed alternative to Google Photos with mobile apps, sharing, and a large user community.
  • You want a project with long-term organizational backing and a clear roadmap.
  • You need multi-user support beyond the basic profiles feature.

Skip it (use PhotoPrism instead) if:

  • You need a project with years of production deployments, documented upgrade paths, and commercial support options.
  • You need facial recognition that doesn’t require manual cluster merging.

Skip it entirely if:

  • You need this for business or commercial use — the PolyForm Noncommercial license explicitly prohibits it.
  • Your NAS is ARM64 and you don’t want to troubleshoot sqlite-vec platform compatibility.
  • You need a mobile upload client — Omoide doesn’t appear to have one.

Alternatives worth considering

  • Immich — the current leader in self-hosted photo management. MIT license, 60K+ stars, mobile apps, strong community, face recognition, AI search, actively funded. The default choice if you want something production-ready.
  • PhotoPrism — AGPL-licensed community edition, commercial license for business use. Older and more battle-tested than Omoide. Semantic search and face recognition, but facial recognition requires manual tagging.
  • Photoview — MIT license, simpler feature set, no AI. Good choice if you want a clean gallery without the AI complexity.
  • DigiKam — GPL, desktop application, 20+ years of development. Mature face recognition, RAW support, extensive metadata tools. Better for photographers than casual family libraries.
  • Lychee — MIT, web-based, simple and elegant. No AI features, focused on sharing and album organization.
  • Piwigo — GPL, more photo sharing/gallery focused than organization, plugin ecosystem, 20+ years old.

For the target use case (private AI-organized library, offline, no cloud), the realistic comparison is Omoide vs. Immich. Immich has 250x the community, mobile apps, and production maturity. Omoide has the Windows desktop app, the co-appearance graph, and a somewhat simpler single-file SQLite architecture. If Immich’s Docker-only, server-centric setup is a barrier, Omoide’s Windows app is a genuine differentiator.


Bottom line

Omoide is a technically impressive one-developer project that ships more AI features per line of README than most self-hosted tools three times its size. The face recognition pipeline, semantic search via OpenCLIP, duplicate detection, and GPS map view are all real, and the Windows desktop app lowers the setup barrier below anything comparable. The honest caveats are equally real: 245 stars means thin community, PolyForm Noncommercial means no commercial use, and no independent user reviews means you’re trusting the README description with no external validation. For privacy-focused personal users who want Google Photos capabilities on their own hardware and are comfortable being early adopters, Omoide is worth serious consideration. For anyone building a production library management workflow — personal or business — Immich is the safer bet until Omoide’s community and documentation mature.


Sources

Primary sources (all information in this review is derived from these):

Pricing comparison sources:

Note: Third-party review sources provided during research ([1]–[5]) were unrelated to Omoide (all were pages from scratch.mit.edu). No independent reviews of Omoide were located. All feature and capability claims in this review are sourced exclusively from the project’s own README and GitHub metadata.