Skip to content

Latest commit

 

History

453 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo

Buy Me a Coffee

Omoide

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 - Now also available on macOS!

Download the latest binary release

First launch on macOS

The app is ad-hoc signed but not notarized, so Gatekeeper will block it on the first open.

  1. Unzip the downloaded .app.zip — you'll get omoide-....app
  2. Move it to your Applications folder (optional but recommended)
  3. Double-click the app → macOS shows "cannot be opened because the developer cannot be verified"
  4. Open System Settings → Privacy & Security, scroll down, and click Open Anyway
  5. Confirm in the dialog — the app opens normally from now on

Alternatively, right-click (or Control-click) the .appOpenOpen skips the warning in one step.

Also available as a Docker container.


✨ Key Features

🔒 Private & Offline

  • 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.

🧠 Intelligent Organization

  • 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.

⚡ Powerful Tools

  • 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.

🛠️ Flexible Management

  • 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.

📸 Screenshots

Library Grid Media Detail
Library grid Media detail
Semantic Search People Overview
Text search People overview
Map View Co-appearance Graph
Map Co-Appearance Graph

🚀 Quick Start (Docker)

Perfect for NAS or always-on servers.

  1. Copy the template:

    cp .env.template .env
    cp omoide.env.example omoide.env
  2. 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.

  3. Run:

    docker compose up -d
  4. Open: http://localhost:8123

Note for arm64: Ensure sqlite-vec matches your platform (e.g. 0.1.7a2) and build with docker buildx or make build-image-arm64. Alternatively use the Docker Hub image as set in the docker-compose.yml


🖥️ Quick Start (Desktop Development)

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 8123

To build a standalone binary:

pyinstaller main.spec

🧩 How It Works


📄 License

PolyForm Noncommercial License 1.0.0 Free for personal, non-commercial use. See LICENSE.md for details.


❤️ Support

Omoide is a passion project maintained in my free time. If it helps you rediscover your memories, consider supporting its development!

☕ Buy Me a Coffee

About

Free and Open-Source media manager

Topics

Resources

Stars

270 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages