Vibeleaderboard
Index / app
Visit immich.app
Category
Lifestyle
Pricing
Open Source
Type
APP
Builder
immich-app
Latest release
v3.2.2
Date

About

A high-performance self-hosted photo and video management solution that serves as an open-source alternative to Google Photos. Features automatic backup, facial recognition, AI-powered search, and multi-user support with both mobile and web apps.

What it does

Immich is a self-hosted server for storing, browsing and searching a personal photo and video library. You run four pieces: an API and job server, a Python inference service, Postgres carrying a vector index extension, and a queue backed by a Redis compatible store. Phone apps back up the camera roll, while a web client and a command line uploader talk to the same REST API. Background jobs generate thumbnails, pull metadata, transcode video, cluster faces and embed images, so you can later search by content, place, text inside the picture, or person.

Why it's ranked here

The engineering is unusually serious for a self-hosted project. Business logic sits in about fifty services kept separate from storage and process adapters, boot waits on a Postgres advisory lock and can come up in maintenance mode, and search quality is published as recall, memory and latency figures per model instead of adjectives. The cost is operational: four containers, a pinned database image, and a data directory you must back up yourself. Copyleft licensing under AGPL v3 also rules it out as a component inside a closed product. For a home library you actually care about, this is the strong default.

What's good

Ownership is explicit. Originals are never rewritten, and edited metadata goes to companion sidecar files and the database. The server takes its own database dumps on a schedule, keeping the last fourteen by default, and a restore writes a rollback point first, then health checks afterward. Search reaches faces, text found inside images, folder paths, camera model, star rating and freeform description, with multilingual models for people who do not type queries in English. Hardware acceleration is a build argument for both transcoding and inference, so one setup covers a small always-on box or a GPU host.

Tradeoffs

This is not a light install. The stock deployment runs a server, an inference container, a pinned Postgres image carrying a vector extension, and a queue, plus optional metrics and dashboards. Database dumps hold metadata only, and the project states plainly that it does not back up your files for you, so a real backup plan stays your job. Vision models are large: the documented English models range from roughly 1,000 to 6,600 MiB resident. Self-signed certificates, basic auth and mutual TLS on mobile are labelled experimental and not actively developed. There is no filtering of sensitive imagery.

How to use it well

Best fit is a household replacing a cloud photo service: one machine you control, a few accounts, partner sharing, phones backing up automatically. Budget memory for the inference container, pick the search model to match the languages your users type in, and reprocess assets after any model change. Pair it with a real backup tool and offsite copies, because the built-in dumps cover metadata only. It does not try to be a general file sync tool, a document archive, or an editing suite, and the licence makes it a poor building block inside a proprietary product.

Technical notes+

server/src/main.ts boots a worker supervisor: it reads a maintenance flag from system metadata, waits on a Postgres advisory lock, then forks the API worker as a child process while every other worker runs as a Node worker thread, and rebootstraps the whole set when a worker exits with the restart code. server/src/services/index.ts registers roughly fifty services, including ones for OCR, duplicates, workflows, plugins and database backup, matching the repositories-versus-services split described in docs/docs/developer/architecture.mdx. machine-learning/immich_ml/main.py is a FastAPI app with one prediction endpoint, an ONNX model cache guarded by a lock, a thread pool so inference does not block the event loop, an idle shutdown timer keyed to a model time-to-live, and multipart spooling to disk at 64 MiB. docker/docker-compose.prod.yml pins a Postgres image carrying VectorChord, which docs/docs/features/searching.md names as the index behind CLIP search, and exposes the server on 2283 and the inference service on 3003. packages/plugin-sdk/src/index.ts is a thin re-export of host functions, an SDK surface and types. The root package.json is a private pnpm monorepo whose workspace globs live in pnpm-workspace.yaml; restore procedure and limits come from docs/docs/administration/backup-and-restore.md and docs/docs/FAQ.mdx.

Observed

License
AGPL v3
Server
TypeScript on Node, NestJS with the Kysely query builder
Inference service
Python and FastAPI, models loaded in ONNX format
Data stores
Postgres with a vector index extension, plus a Redis compatible queue
Clients
Flutter mobile app, SvelteKit web app, npm command line uploader
Install surface
Docker Compose, four core containers plus optional metrics and dashboard containers
Interfaces
REST API with OpenAPI-generated clients, API keys, OAuth login, plugin SDK package
Acceleration
Build-time device selection for transcoding and for inference, including CUDA, ROCm, OpenVINO, RKNN and ArmNN
Repo layout
pnpm monorepo covering server, web, mobile, machine learning, docs and packages

Read from README.md, package.json, LICENSE, pnpm-workspace.yaml, docs/docs/developer/architecture.mdx, server/src/main.ts, server/src/services/index.ts, machine-learning/immich_ml/main.py, packages/plugin-sdk/src/index.ts, docker/docker-compose.prod.yml, docs/docs/FAQ.mdx, docs/docs/features/searching.md, docs/docs/administration/backup-and-restore.md.

What it can do

  • Automatically backup photos and videos

    Photos and videos from mobile device or computer → Backed up media files stored on self-hosted server

  • Recognize and identify faces in photos

    Photos containing people → Grouped photos by identified individuals

  • Search photos using AI-powered content recognition

    Search query describing photo content → Relevant photos matching the search criteria

  • Manage multiple user accounts

    User credentials and permissions settings → Separate photo libraries and access controls for each user

  • Organize and browse photo library

    Stored photos and videos → Structured photo gallery with timeline and album views

  • Stream and view photos across devices

    Photo library stored on server → Accessible photo viewing through web browser or mobile app

Tags

photosself-hostedbackupmediaprivacygoogle-photos-alternativemobile-app

Tech Stack

Node.js

Media

Immich

Featured in Intel

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.