ncoevoet/facet
Local AI photo scoring, culling, and gallery — score, organise, and explore your library with face recognition and semantic search. No cloud, no subscriptions.
Facet is a self-hosted photo analysis and culling tool. It runs entirely on your own machine, reads a folder of photos, scores each one across 9 quality dimensions (aesthetics, composition, sharpness, exposure, etc.), and shows the results in a web gallery you can open in any browser. No cloud, no account, no API keys — every photo stays on your hardware.
The core workflow:
- Scan — Point Facet at a photo folder. It analyzes each image for quality, composition, and faces. Supports JPG, HEIC, 10 camera RAW formats, PNG, GIF, and more.
- Browse — Open the web gallery to explore with filters, search, and multiple layouts.
- Cull — Facet groups rapid-fire shots (bursts), flags closed eyes, finds visually similar photos, and surfaces the strongest picks, so you can quickly delete the weak ones.
Key features, grouped:
- Scoring: 9 metrics per photo, with weights tuned per content type (portrait, landscape, macro, etc.). Hover any photo to see a tooltip with the score breakdown and EXIF data.
- Culling: burst detection with auto-best selection, sequence awareness (panoramas/brackets are kept whole), similarity grouping, chronological "scene" grouping, one-click auto-cull with a dry-run preview, genre presets (sports/wedding/concert), blink detection, duplicates via perceptual hashing, and a "junk sweep" that catches screenshots/documents/memes.
- Browsing: mosaic and grid views, date/camera/lens/person/rating filters, natural-language semantic search ("sunset on the beach"), a timeline view, geotagged map, themed slideshow "capsules", "On This Day" memories, and folder navigation.
- Organizing: automatic face recognition with person grouping and merge suggestions, manual and smart albums, star ratings, AI tags, batch operations with undo, and keyboard shortcuts.
- Understanding: dashboards for equipment/categories/timeline, an AI critique of each score, weight tuning with A/B photo comparison, a personal Taste ranker that learns from your decisions, histogram display, and AI captions.
- Sharing: shareable album links (no login for recipients), client proofing mode with comments, phone auto-upload via WebDAV, photo-frame/kiosk feeds, static portfolio export, and CSV/JSON export.
- More: dark/light modes with 10 accents, mobile-responsive interface, installable as a PWA, virtualized gallery (stays fast at 100k+ photos), resumable scans, 7 UI languages, multi-user support, and plugins/webhooks.
Hardware realities:
- Most features run on any CPU-only machine — scoring, face detection, search, albums, metadata export.
- Apple Silicon automatically uses the GPU via PyTorch's Metal backend.
- An NVIDIA GPU (16 GB or 24 GB VRAM) unlocks the strongest AI models: TOPIQ aesthetic scoring, SigLIP embeddings, VLM tagging, AI captions/critique, and subject saliency.
- No local GPU? You can point the AI text features at a remote Ollama or OpenAI-compatible server.
Who it's for:
- People with large local photo libraries who want to find their best shots and trim bursts and near-duplicates.
- Those who value privacy and already use Lightroom, darktable, digiKam, or Immich — Facet writes ratings and tags to XMP sidecars (originals untouched by default) and reads external edits back, with a Lightroom plugin for two-way sync.
- It is not a mobile cloud app, does not edit RAW files, and requires some setup (Python installation; the best models need a GPU).
Quick start: Docker is recommended — clone, copy .env.example, set your photos directory, run docker compose up, open http://localhost:5000. A no-Docker route exists for Linux/macOS via install.sh. First-run walkthrough, full docs, and configuration references are in the docs/ folder.
License: MIT for Facet's own code. Some default AI models (TOPIQ, InsightFace weights) are non-commercial; a commercial licensing mode routes to permissively licensed replacements automatically.
Related
- Project
- Project
- Project
- Project