selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
Omoide logo

Self-host Omoide

v0.7.6

Offline-first photo and video library with local AI

BetaSource AvailableOther
Updated9 hours ago
LanguageTypescript
Setup difficultyModerate
Stars
277
Port
8123 (HTTP web interface)
Requires
SQLite (embedded via sqlite-vec)
Docker
einaeffchen/omoide:latest
Install with Docker Compose
Library grid view showing photo thumbnailsMedia detail view with metadata and tagsSemantic search interface with text queryPeople overview showing recognized facesMap view displaying photos with GPS locationsCo-appearance graph visualizing connections between people

What is Omoide?

Omoide manages photos and videos on your own hardware without any cloud dependency. Local AI models handle face detection, recognition, and grouping, while OpenCLIP embeddings enable natural-language search across the library. It also finds duplicates, extracts video scenes, plots images on a map, and builds relationship graphs between recognized people. You can run it as a desktop program on Windows, Linux, or macOS, or deploy it in a container on a server or NAS. The code is available under a non-commercial license for personal use.

Should you self-host Omoide?

Omoide scores 40/100 on selfhost.directory (how scoring works) and ranks #37 of 41 in Photo Management. It has 277 GitHub stars.

It shipped 16 stable releases in the past year. The latest, v0.7.6, came out on 21 October 2026. New versions land roughly every 5 days.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is Other-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is Ente (81/100, 29 702 stars). It scores higher overall, so compare the two before you pick. See Omoide vs Ente side by side.

Features

  • Auto-Tagging
  • Background tasks
  • Co-appearance Graph
  • Duplicate Detection
  • Face Recognition
  • Map View
  • Multiple Profiles
  • Read-Only Mode
  • Semantic Search
  • Video support

Omoide README

How to install Omoide

Install Omoide with Docker Compose

Docker and Docker Compose
Environment variables
PORT, HOST_MEDIA_DIR, HOST_DATA_DIR, ENV_FILE, plus all OMOIDE_* vars in omoide.env

cp .env.template .env cp omoide.env.example omoide.env

Configure .env with media directories and ports

docker compose up -d

Port 8123 by default; set HOST_MEDIA_DIR and HOST_DATA_DIR in .env

How to configure Omoide

  • OMOIDE_AI__CLIP_MODELxlm-roberta-base-ViT-B-32OpenCLIP model (options: xlm-roberta-large-ViT-H-14, xlm-roberta-base-ViT-B-32, ViT-L-14, ViT-B-32, convnext_base_w).

    OpenCLIP model (options: xlm-roberta-large-ViT-H-14, xlm-roberta-base-ViT-B-32, ViT-L-14, ViT-B-32, convnext_base_w).

  • OMOIDE_AI__MIN_SEARCH_DIST0.68Minimum cosine distance for semantic search (higher = stricter).

    Minimum cosine distance for semantic search (higher = stricter).

  • OMOIDE_AI__MIN_SIMILARITY_DIST1.2Similarity distance for similar media suggestions. Higher = stronger similarity

    Similarity distance for similar media suggestions. Higher = stronger similarity

  • OMOIDE_DUPLICATES__DUPLICATE_AUTO_HANDLINGkeepHow to handle duplicates (options: keep, remove, blacklist, delete).

    How to handle duplicates (options: keep, remove, blacklist, delete).

  • OMOIDE_DUPLICATES__DUPLICATE_AUTO_KEEP_RULEhighest_resWhich file to keep when auto-handling (options: biggest, smallest, highest_res, lowest_res, oldest, newest).

    Which file to keep when auto-handling (options: biggest, smallest, highest_res, lowest_res, oldest, newest).

  • OMOIDE_FACE_RECOGNITION__CLUSTER_BATCH_SIZE15000Faces processed per clustering batch.

    Faces processed per clustering batch.

  • OMOIDE_FACE_RECOGNITION__EXISTING_PERSON_COSINE_THRESHOLD0.8Cosine threshold for matching faces to existing persons.

    Cosine threshold for matching faces to existing persons.

  • OMOIDE_FACE_RECOGNITION__EXISTING_PERSON_MIN_COSINE_MARGIN0.05Required margin between best and second-best match.

    Required margin between best and second-best match.

  • OMOIDE_FACE_RECOGNITION__FACE_RECOGNITION_MIN_CONFIDENCE0.5Minimum confidence to extract a face.

    Minimum confidence to extract a face.

  • OMOIDE_FACE_RECOGNITION__FACE_RECOGNITION_MIN_FACE_PIXELS1600Minimum face pixel area to be considered.

    Minimum face pixel area to be considered.

  • OMOIDE_FACE_RECOGNITION__HDBSCAN_CLUSTER_SELECTION_EPSILON0.1HDBSCAN cluster selection epsilon.

    HDBSCAN cluster selection epsilon.

  • OMOIDE_FACE_RECOGNITION__HDBSCAN_CLUSTER_SELECTION_METHODeomHDBSCAN cluster selection method (options: leaf, eom).

    HDBSCAN cluster selection method (options: leaf, eom).

  • OMOIDE_FACE_RECOGNITION__HDBSCAN_MIN_CLUSTER_SIZE6Minimum cluster size for HDBSCAN.

    Minimum cluster size for HDBSCAN.

  • OMOIDE_FACE_RECOGNITION__HDBSCAN_MIN_SAMPLES10Minimum samples for HDBSCAN.

    Minimum samples for HDBSCAN.

  • OMOIDE_FACE_RECOGNITION__PERSON_CLUSTER_MAX_L2_RADIUS1Maximum L2 radius allowed inside a face cluster.

    Maximum L2 radius allowed inside a face cluster.

  • OMOIDE_FACE_RECOGNITION__PERSON_MERGE_PERCENT_SIMILARITY75Percent similarity to merge near-duplicate persons.

    Percent similarity to merge near-duplicate persons.

  • OMOIDE_FACE_RECOGNITION__PERSON_MERGE_SEARCH_K20Search K used when merging persons.

    Search K used when merging persons.

  • OMOIDE_FACE_RECOGNITION__PERSON_MIN_FACE_COUNT2Faces needed to auto-create a person.

    Faces needed to auto-create a person.

  • OMOIDE_FACE_RECOGNITION__PERSON_MIN_MEDIA_COUNT2Distinct media items required per person.

    Distinct media items required per person.

  • OMOIDE_FACE_RECOGNITION__PRESETlooseFace clustering preset (options: strict, normal, loose, custom).

    Face clustering preset (options: strict, normal, loose, custom).

  • OMOIDE_GENERAL__ENABLE_PEOPLEtrueEnable face/person features.

    Enable face/person features.

  • OMOIDE_GENERAL__MEME_MODEfalseEnable meme mode labels.

    Enable meme mode labels.

  • OMOIDE_GENERAL__PERSON_RELATIONSHIP_MAX_NODES100Max nodes returned for people graph.

    Max nodes returned for people graph.

  • OMOIDE_GENERAL__PRESENTATION_MODEfalseServe in read-only mode (no writes).

    Serve in read-only mode (no writes).

  • OMOIDE_GENERAL__THUMB_DIR_FOLDER_SIZE1000Max thumbnails per folder.

    Max thumbnails per folder.

  • OMOIDE_PROCESSORS__EXIF_PROCESSOR_ACTIVEtrueEnable EXIF extraction.

    Enable EXIF extraction.

  • OMOIDE_PROCESSORS__FACE_PROCESSOR_ACTIVEtrueEnable face extraction (requires ENABLE_PEOPLE=true).

    Enable face extraction (requires ENABLE_PEOPLE=true).

  • OMOIDE_PROCESSORS__IMAGE_EMBEDDING_PROCESSOR_ACTIVEtrueEnable image embedding generation.

    Enable image embedding generation.

  • OMOIDE_PROCESSORS__MEDIA_BATCH_SIZE125Media rows processed per heavy pipeline batch.

    Media rows processed per heavy pipeline batch.

  • OMOIDE_SCAN__AUTO_CLEAN_ON_SCANfalseClean DB of missing files during auto scan.

    Clean DB of missing files during auto scan.

  • OMOIDE_SCAN__AUTO_CLEANUP_GRACE_HOURS72Grace period (hours) before auto cleanup deletes missing items.

    Grace period (hours) before auto cleanup deletes missing items.

  • OMOIDE_SCAN__AUTO_CLEANUP_WITHOUT_REVIEWfalseRemove missing records without manual review.

    Remove missing records without manual review.

  • OMOIDE_SCAN__AUTO_CLUSTER_ON_SCANfalseRe-cluster faces automatically on scan.

    Re-cluster faces automatically on scan.

  • OMOIDE_SCAN__AUTO_ROTATEtrueRespect EXIF rotation automatically.

    Respect EXIF rotation automatically.

  • OMOIDE_SCAN__AUTO_SCANfalseEnable automatic background scans.

    Enable automatic background scans.

  • OMOIDE_SCAN__IMAGE_SUFFIXES.jpg,.jpeg,.png,.tiff,.bmpImage suffixes to ingest (comma-separated list).

    Image suffixes to ingest (comma-separated list).

  • OMOIDE_SCAN__SCAN_INTERVAL_MINUTES15Minutes between auto scans.

    Minutes between auto scans.

  • OMOIDE_SCAN__VIDEO_SUFFIXES.mp4,.mov,.wmv,.avi,.flv,.mkv,.webm,.gp3,.gif,.ts,.mpegVideo suffixes to ingest (comma-separated list).

    Video suffixes to ingest (comma-separated list).

  • OMOIDE_TAGGING__AUTO_TAGGINGtrueRun automatic tagging.

    Run automatic tagging.

  • OMOIDE_TAGGING__CUSTOM_TAGS,Custom tags (comma-separated list).

    Custom tags (comma-separated list).

  • OMOIDE_TAGGING__USE_DEFAULT_TAGStrueInclude built-in default tags.

    Include built-in default tags.

  • OMOIDE_VIDEO__AUTO_SCENE_DETECTIONtrueUse automatic scene detection for videos.

    Use automatic scene detection for videos.

  • OMOIDE_VIDEO__MAX_FRAMES_PER_VIDEO30Fallback max frames per video when scene detection fails.

    Fallback max frames per video when scene detection fails.

Omoide releases & version history

More in Video

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…