Overview
Discover what makes Immich powerful
Immich is a **high‑performance, self‑hosted photo and video management platform** that balances rich feature sets with a lightweight footprint. From a developer’s perspective, the core value lies in its *modern, container‑friendly architecture* and comprehensive **RESTful API** that exposes nearly every user‑facing capability. The system is designed to run on any infrastructure that supports Docker, Kubernetes, or a simple VM, making it ideal for edge deployments, NAS boxes, or cloud‑native environments.
Asset ingestion
Metadata extraction
Search & filtering
Album management
Overview
Immich is a high‑performance, self‑hosted photo and video management platform that balances rich feature sets with a lightweight footprint. From a developer’s perspective, the core value lies in its modern, container‑friendly architecture and comprehensive RESTful API that exposes nearly every user‑facing capability. The system is designed to run on any infrastructure that supports Docker, Kubernetes, or a simple VM, making it ideal for edge deployments, NAS boxes, or cloud‑native environments.
Architecture & Technical Stack
The backend is a Node.js service written in TypeScript, orchestrated by the NestJS framework. It communicates with a PostgreSQL database for metadata and an S3‑compatible object store (e.g., MinIO, AWS S3) for raw media. The image/video processing pipeline is powered by FFmpeg and the sharp library, both wrapped in a micro‑service that performs transcoding, thumbnail generation, and format conversion on ingestion. A lightweight Redis instance handles message queues for background jobs and real‑time notifications.
The mobile clients (iOS/Android) are native React Native applications that consume the same API, enabling features such as auto‑backup, selective album sync, and raw format support. The web interface is a React SPA that leverages WebSocket streams for live updates and uses Mapbox GL for geolocation visualisation.
Core Capabilities & APIs
- Asset ingestion: Push photos/videos via the
/api/v1/album/uploadendpoint, with automatic duplicate detection using SHA‑256 hashing. - Metadata extraction: Exposes EXIF, GPS, and camera model data through
/api/v1/media/:id/metadata. - Search & filtering: Full‑text search on titles, tags, and location, plus range queries for dates.
- Album management: Create, update, delete, and share albums; support for nested shared links with expiry controls.
- Webhook hooks: Trigger external services on events such as
MEDIA_UPLOADEDorALBUM_SHARED. - OAuth & SSO: Integration with OpenID Connect providers for single‑sign‑on.
The API is fully documented in Swagger/OpenAPI format, and the SDKs for JavaScript/TypeScript are auto‑generated, facilitating rapid integration into custom dashboards or automation scripts.
Deployment & Infrastructure
Immich ships with a single docker-compose.yml that defines three services: server, database, and object store. For production, a Helm chart is available for Kubernetes, exposing horizontal scaling options via the replicas parameter. The server itself is stateless; all state resides in PostgreSQL and the object store, enabling seamless load‑balancing. Backup strategies are simple: snapshot the database, sync the object store to a secondary region, and keep immutable logs.
Integration & Extensibility
The platform is intentionally modular: custom plugins can hook into the NestJS module system, adding new API routes or background jobs. The webhook system allows third‑party services (e.g., Home Assistant, Slack) to react to media events. For developers building their own UI or mobile clients, the public API is versioned and backward‑compatible, ensuring long‑term stability.
Developer Experience & Community
Documentation is split into user and developer sections, with interactive API references. The community thrives on Discord and GitHub Discussions; contributors benefit from a clear contribution guide, automated CI checks, and an active roadmap. Licensing under AGPL‑v3 guarantees that any derivative work remains open source, fostering a healthy ecosystem.
Use Cases & Advantages
- Home media servers: Run on a NAS, automatically back up phone libraries while keeping privacy in control.
- Enterprise photo archives: Provide a self‑hosted, searchable gallery for internal documentation or marketing assets.
- IoT edge devices: Deploy on a Raspberry Pi to capture and stream security footage with minimal overhead.
- Developer tooling: Use the API for automated tagging, AI‑based image analysis pipelines, or custom analytics dashboards.
Compared to commercial SaaS solutions, Immich offers zero vendor lock‑in, full control over data locality, and a performance‑oriented stack that scales horizontally with minimal latency. Its open‑source nature, combined with a robust API surface and container‑friendly deployment model, makes it the go‑to choice for developers who need a secure, extensible photo management backend.
Open SourceReady to get started?
Join the community and start self-hosting Immich today
Related Apps in other
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
AFFiNE
All‑in‑one workspace for docs, whiteboards, and databases
Weekly Views
Repository Health
Information
Explore More Apps
Grimoire
Organize and enchant your bookmarks
Solidus
Open‑source eCommerce platform with full control and extensibility
SquirrelMail
Webmail client for PHP-powered mailboxes
Apache OpenMeetings
All-in-one web video conferencing and collaboration platform
bitmagnet
Self‑hosted BitTorrent indexer with DHT crawling
Spree Commerce
Open‑source eCommerce platform for custom storefronts