Self-hosted service
immich-app/immich avatar
immich-app/immich

Immich: A self-hosted photo manager that pushes back against cloud lock-in

High performance self-hosted photo and video management solution.

114,258 stars6,923 forksTypeScriptAGPL-3.0

At a glance

What is it?
Immich is a high-performance, self-hosted photo and video management solution written in TypeScript and released under AGPL-3.0. It offers a feature set that rivals commercial cloud services, but its operational complexity and license terms demand careful evaluation.
Who is it for?
Adopt Immich if you want full control over your photo library, value features like facial recognition and CLIP search, and are prepared to manage a multi-service deployment. Do not adopt it if you lack the time or skill to maintain a Docker-based stack, need a simple single-binary solution, or cannot accept the AGPL-3.0 obligations.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Immich solves and who it targets

Immich addresses a specific pain: the loss of control over personal photo libraries that comes with Google Photos or iCloud. For individuals and families who want to keep their original files, search them intelligently, and avoid recurring subscription fees, Immich offers a self-hosted alternative. The README describes it as a "high performance self-hosted photo and video management solution," which is a broad claim but the feature table backs it up with concrete capabilities: auto backup, facial recognition, CLIP-based search, and multi-user support. The target user is someone comfortable running their own server, not a casual consumer. The project's warning about the 3-2-1 backup plan signals that the developers expect users to handle data durability themselves, which is a shift from the managed cloud model.

How the system is put together

The repository is TypeScript-based, but the README does not detail the internal architecture. What is visible is that Immich is not a single binary. The installation guides at docs.immich.app and the presence of features like facial recognition and CLIP search imply a stack with at least a database, a storage layer, and a machine learning component. The feature table shows a split between mobile and web: mobile handles background backup and offline support, while web offers administrative functions and tags. This suggests a client-server model where the server runs the heavy processing and the clients are thin interfaces. The README mentions "user-defined storage structure," which indicates that the server does not force a proprietary layout on your files, a key point for users who want to migrate away later. The exact data flow is not documented in the README, so you should check the docs for specifics on how uploads are processed and indexed.

Getting Immich running: commands and configuration

The README points to https://docs.immich.app/install/requirements for installation instructions, but it does not include a single command in the supplied text. This is a gap. However, the project's nature as a Docker-based deployment is common knowledge from the documentation, and the README's mention of a demo server suggests a quick way to evaluate the UI without installing anything. To try it, you can access https://demo.immich.app and log in with the credentials demo@immich.app and password demo. For a real deployment, you will likely need to clone the repository, set up a docker-compose file, and configure environment variables such as database credentials and storage paths. The documentation is the authoritative source for these steps. The README also lists OAuth support and API keys, which are configuration points for production use. Given the lack of explicit commands in the README, I cannot provide a precise setup sequence, so treat the docs as mandatory reading.

Feature depth: what you actually get

The feature table is the strongest evidence of Immich's scope. It covers upload and viewing, auto backup on mobile, duplication prevention, album management, and shared albums. More advanced features include facial recognition and clustering, CLIP-based search, and LivePhoto/MotionPhoto support. The table also notes that raw formats are supported, which appeals to photographers. There is a notable asymmetry: tags are web-only, and offline support is mobile-only. This means a web user cannot tag photos from a browser, and a mobile user cannot browse the full library without a connection. The inclusion of 360-degree image display on web but not mobile is another split. These asymmetries are not necessarily flaws, but they are constraints to plan around. The "user-defined storage structure" is a differentiator: you can keep your existing folder hierarchy, which is a relief for users who have organized libraries already.

Limitations and failure modes

Immich is not a trivial system to operate. The README's warning about the 3-2-1 backup plan is a direct admission that data loss is a real risk if you do not manage backups yourself. The multi-service architecture means more moving parts: a database, a server, and a machine learning component can each fail independently. The feature table shows that background backup is mobile-only, so a web-only user must manually upload, which is a limitation for desktop workflows. Also, the absence of a simple installation command in the README suggests that setup requires reading external docs, which is a barrier for less technical users. The AGPL-3.0 license is a legal constraint: if you modify the server and provide it over a network, you must offer the source code to users. This is a genuine trade-off for organizations that want to customize the code internally without sharing changes. The project is under active development, with a release candidate for v3.2.0 at the time of writing, so expect frequent updates and potential breaking changes.

Alternatives and how they differ

The obvious alternative is a commercial cloud service like Google Photos, which offers similar features but with no self-hosting. The difference is in control: Google Photos handles backups, indexing, and storage for you, but it scans your data and can change terms. Another open-source alternative is PhotoPrism, which also self-hosts and offers facial recognition and search, but it has a different architecture: PhotoPrism is a single Go binary with a web interface, whereas Immich appears to be a multi-service TypeScript stack. PhotoPrism may be simpler to deploy, but it lacks the native mobile app that Immich provides, which is a significant advantage for automatic phone backup. Also, PhotoPrism's license is AGPL-3.0 as well, so the license implications are similar. The choice hinges on whether you prefer a monolithic simplicity or a feature-rich, client-server design.

Maintenance and upgrade costs

The release history shows a steady cadence: v3.0.3 in July 2026, v3.1.0 in July 2026, and v3.2.0-rc.1 in August 2026. This is a fast-moving project, which means regular upgrades to get new features and bug fixes. Each upgrade likely involves pulling new Docker images and migrating the database, which is a maintenance overhead. The README does not mention a migration tool or upgrade script, so you must follow the docs. The project is not archived, and the last push is recent, indicating active maintenance. The AGPL-3.0 license does not impose a cost to use, but it does impose obligations if you modify and distribute the software. For a home user, these obligations are minimal, but for a company, they require legal review. The 3-2-1 backup warning is a reminder that your data is your responsibility, and you should factor backup storage into the total cost of ownership.

Editorial conclusion

Adopt Immich if you want full control over your photo library, value features like facial recognition and CLIP search, and are prepared to manage a multi-service deployment. Do not adopt it if you lack the time or skill to maintain a Docker-based stack, need a simple single-binary solution, or cannot accept the AGPL-3.0 obligations. Before committing, verify that your hardware meets the requirements for machine learning features, plan a 3-2-1 backup strategy as the README warns, and test the demo server to judge search and upload performance. Immich is a serious alternative to cloud services, but it is not a set-and-forget appliance.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes