Skip to main content
PromptQuorumBuilt for humans. Structured for AI.
Home/Power Local LLM
Image & Video Generation

Facet Review: Local Photo Scoring, Culling and Gallery

·8 min readBy Hans Kuepper · Founder of PromptQuorum · Discovery engine for open-weight & open-source AI

Facet (v1.25.0 as of 28 October 2026) is a free, MIT-licensed tool that scores, culls and browses a local photo library through a web gallery, with face grouping and plain-language search running on your own machine. According to the project's model-licence page, some of its default model weights are not licensed for commercial use. It contains no chat feature.

Key Takeaways

  • Maintenance: v1.25.0 was released on 27 October 2026 and the repository received a push on 28 October 2026, so no stale-project warning applies.
  • Operator: the README calls it a single-developer project without commercial support; the code is on GitHub under the MIT licence.
  • Setup: Docker Compose or an install script plus a first scan that downloads the models; a terminal is required.
  • Cost: free; no paid tier was found. The word "Edition" in the docs is an access level, not a product edition.
  • Scope: image scoring, culling and search; written tags, captions and critiques need an optional vision-language model.

📍 In One Sentence

Facet is a self-hosted tool that rates photos, picks the best of each burst, groups faces and lets you search a local library in plain words, all through a browser gallery.

💬 In Plain Terms

You point Facet at a folder of photos, it analyses them once on your computer, and you then browse, cull and search the results in your browser.

📌Note: This review is based on the project's website, README, documentation, GitHub releases and parts of its source, checked on 28 October 2026. PromptQuorum has not installed Facet, so scoring accuracy, search relevance and speed are not assessed.

Facet is a free, MIT-licensed photo-analysis tool that you run yourself: it scores each photo, finds bursts and near-duplicates, groups faces and lets you search your library in plain words through a web gallery. It is not a chat or LLM app; the AI is image scoring, embeddings and face models. This review reflects its README, documentation, GitHub releases and source as checked on 28 October 2026.

Facet Review: Local Photo Scoring, Culling and Gallery

What Is Facet?

Facet is a local photo-analysis and culling engine with a web gallery: it scores each image, then lets you browse, cull and organise the results. The README says everything runs on your machine with no cloud, accounts or API keys, and the code is MIT-licensed.

The LICENSE file names Nicolas Coevoet as the copyright holder. The work happens in two tools: a scanner started from the command line, and a viewer that serves the gallery in your browser.

Get It

Facet is installed from its source repository with Docker or an install script; the project publishes no installer, app-store listing or release binary.

Option
How to get it
Docker (recommended)Install guide: clone, set the photo folder, docker compose up
Without DockerClone, run bash install.sh, then python facet.py and python viewer.py (Linux, macOS)
DocumentationDocs folder in the repository
Websitencoevoet.github.io/facet
Source codegithub.com/ncoevoet/facet (MIT)
ReleasesGitHub releases, notes only

Version reviewed: v1.25.0, published on 27 October 2026 per the GitHub release; the last push to the repository was on 28 October 2026. Installing needs a terminal, Git and Docker or Python, so this is a developer-style setup rather than a double-click install. No separate privacy-policy page was found on the project site or in the documentation read; privacy statements are in the README.

Requirements

The docs say Facet runs on any machine with a CPU, and that an NVIDIA GPU or a large-memory Apple Silicon Mac unlocks its strongest models.

Profiles

What the sources say:
legacy: CPU only; 8gb: NVIDIA 6-14 GB; 16gb: NVIDIA 14-20 GB; 24gb: NVIDIA 20 GB or more

First-run download

What the sources say:
Roughly 4.7 GB (legacy), 6.9 GB (8gb), 14.6 GB (16gb) or 19.1 GB (24gb), once, per the docs

Apple Silicon

What the sources say:
Uses the Metal backend for Torch models; the auto profile is sized from total unified memory, 32 GB reaching 16gb

Memory

What the sources say:
The docs publish no minimum RAM; they warn that a container with a memory cap can be killed mid-scan on larger profiles

Software

What the sources say:
Docker, or Python 3.12 (3.10+ works) and Node.js 20+ for the gallery build when installing by hand

Operating system

What the sources say:
Windows, macOS or Linux; on Windows the docs point to Docker, and to WSL2 for an NVIDIA GPU

Photo formats

What the sources say:
JPEG, HEIC, 10 RAW formats, PNG, WebP, TIFF, AVIF and JPEG XL, among others

These figures come from the project's docs; PromptQuorum did not measure scan time or memory use on any hardware.

How to Get Started

These steps follow the project's documentation; PromptQuorum has not run them.

  1. 1
    Get the code and set the folder
    Why it matters: Clone the repository, copy .env.example to .env and set PHOTOS_DIR to your photo folder.
  2. 2
    Start Facet
    Why it matters: Run docker compose up -d; with an NVIDIA card, add the compose file for its size, or run the install script without Docker.
  3. 3
    Scan and wait for the downloads
    Why it matters: The first scan fetches the models for your profile, creates the database and scores the photos; you can browse while it works.
  4. 4
    Open the gallery and set a password
    Why it matters: Open the viewer in your browser, log in with the edition password the Docker image prints once, and set a viewer password before sharing the port.

Key Features

Every item below comes from the project's README or documentation; none has been tested by PromptQuorum.

  • Score. Nine dimensions per photo, including aesthetic quality, composition, face quality, eye sharpness and exposure, weighted per content category (30+ categories).
  • Cull. Burst, similar-photo and scene groups, blink flags, near-duplicate detection and an auto-cull with a dry-run preview; exposure brackets and panorama sets are kept whole.
  • Browse. Mosaic and grid views, filters, timeline, map, albums including smart albums, themed slideshows and "On This Day" memories.
  • Organise. Named people with merge suggestions, star ratings, tags and batch actions with a short undo.
  • Share and connect. Album links with a client-proofing mode, XMP sidecars for Lightroom, darktable and digiKam, a WebDAV inbox for phone uploads and a rating sync with Immich.

AI Features and Where They Run

The core AI is image-based: quality-scoring models, embeddings for search, face models and subject detection; written tags, captions and critiques come from an optional vision-language model.

  • Quality scores. The 16gb and 24gb profiles use TOPIQ for the aesthetic score, while legacy and 8gb use CLIP embeddings with an aesthetic head; the docs list supplementary scorers such as LIQE as available on any profile.
  • Search. Typed queries like "sunset on the beach" match embeddings: SigLIP 2 on the 16gb and 24gb profiles, OpenCLIP ViT-L-14 on legacy and 8gb.
  • Faces. InsightFace detects and recognises faces and clustering groups them into people; optional MediaPipe blendshapes sharpen the blink and smile reads.
  • Subjects. BiRefNet separates subject from background to judge focus and framing.
  • My Taste. Your A/B comparisons, ratings and culling choices feed a weight optimiser and a personal ranking.
  • Vision-language model. Tags, captions and critiques run in-process on the 16gb and 24gb profiles, or on a remote Ollama or OpenAI-compatible server set with vlm_backend, where the image is sent to that server.

Data Flow and Privacy

The README says everything runs on your machine, with no cloud, accounts or API keys, and the docs say a scan only reads your photos and writes results to Facet's own database. Models are fetched on first use from Hugging Face, PyIQA and InsightFace sources into local caches; PromptQuorum did not test operation offline after that download.

Outbound requests found in the docs and source: an update check that asks GitHub for the latest release every 7 days unless updates.enabled is false; map tiles that the browser loads from OpenStreetMap's tile server; a GPS edit dialog that credits the Photon geocoder; and, only if you set vlm_backend to Ollama or an OpenAI-compatible server, the images you send there. The viewer script listens on all interfaces by default, and while viewer.password is empty anyone who can reach the port can browse the library and download originals. The endpoint for MCP assistants is on by default; on an open install it serves a read-only anonymous key, and viewer.mcp.enabled set to false turns it off.

📌Note: These are the project's statements and PromptQuorum's reading of its docs and source. Network traffic was not inspected and the rest of the source was not audited.

Model Licences

Facet's own code is MIT-licensed, but some models it downloads by default are not licensed for commercial use. The project's model-licence page lists pyiqa (TOPIQ, LIQE and the other scorers) as PolyForm Noncommercial code with CC BY-NC-SA weights, and the InsightFace buffalo_l weights as non-commercial research only. GitHub's API reports no recognised licence for the repository, so read the LICENSE file itself.

Setting licensing.mode to commercial restricts Facet to permissively licensed models: restricted components are never imported or downloaded, and each slot is routed to a replacement such as YuNet and SFace for faces. The standard install script and Docker image include the restricted packages, and a commercial install does not switch the mode by itself. The page says it is information, not legal advice.

📌Note: If you plan to use Facet in a business, check each model's licence yourself before relying on the default setup.

Who Should Use It

  • Photographers with large libraries who want bursts, blinks and near-duplicates sorted before they edit.
  • Self-hosters who want a private gallery with plain-language search and face grouping and who are comfortable with Docker.
  • Lightroom, darktable and digiKam users who want scores and picks written back as standard sidecar files.

What We Could Not Verify

  • AI quality. Score accuracy, face grouping, search relevance and scan speed were not tested; the README itself calls the aesthetic score approximate.
  • Offline use. Whether Facet works fully offline after the first model download was not verified.
  • Release stability. The v1.23.1 notes say v1.23.0 shipped without the CUDA Docker image, and three versions were released between 24 and 27 October 2026, so expect fast change.
  • Support. The README describes a single-developer project without the support of commercial cullers.
  • Install steps. The setup commands come from the docs and were not run by PromptQuorum.

Competitors and Alternatives

The directory has three other reviewed photo and image library tools in the same segment.

Immich

Platforms:
Server (Docker), iOS, Android, browser
Price / license:
Free / AGPL-3.0
Key difference:
Phone backup and search; the Facet README says Facet adds quality scoring and culling and can sync ratings to Immich
Articles about Immich (1)

PhotoPrism

Platforms:
Server (Docker), browser
Price / license:
Free Community / AGPL-3.0
Key difference:
Self-hosted AI photo library; the Facet README groups it with Immich as an organising, search and backup tool
Articles about PhotoPrism (1)

PixlStash

Platforms:
Windows, macOS, Linux desktop app, web
Price / license:
Free / GPL-3.0
Key difference:
Image library with local tagging, captions and ComfyUI integration, installed as a desktop app
Articles about PixlStash (1)

Confirm each app's current price, license and platforms on its own page.

Compare in directory

Frequently Asked Questions

Does Facet need a GPU?

No. The legacy profile runs scoring, faces, tags, culling and the gallery on a CPU, only slower; TOPIQ, SigLIP 2 and the built-in captions need the 16gb or 24gb NVIDIA profiles unless you point vlm_backend at a remote server.

Does Facet change or delete my photos?

The docs say a scan only reads them. Writing ratings and keywords to your files is a separate opt-in action, and moving rejects to the trash works only when viewer.cull.allow_trash is on.

Can I use Facet from my phone?

There is no native app. The gallery is a responsive, installable web app, and the docs describe PhotoSync or any WebDAV app uploading into a watched inbox.

How do I use Facet commercially?

Install the commercial build, set licensing.mode to commercial and run the doctor command, which shows the active licence posture, then read the model-licence page.

How do I keep the gallery private?

Set viewer.password and put the viewer behind a reverse proxy with HTTPS; the deployment docs include nginx and Caddy examples.

Verdict

Facet is a free, actively updated way to score, cull and browse a large local photo library, with face grouping and plain-language search that run on your own machine. Against that, setup needs a terminal and a large first-run model download, per the project's model-licence page some default model weights are not licensed for commercial use, per its docs the viewer is open until you set a password, one optional feature can send images to a remote server, and none of the AI quality claims could be checked here. It suits photographers and self-hosters who are comfortable with Docker; anyone who wants a double-click app or an LLM assistant should look elsewhere.

Sources

← Back to Power Local LLM

MCP