How Gallery and Immich relate
Noodle Gallery is a friendly fork of Immich, the open-source self-hosted photo management platform built by Alex Tran and a growing community of contributors. Gallery rebases onto every upstream Immich release, so every bug fix, performance improvement, and new feature from the Immich team lands in Gallery automatically.
The relationship is intentionally simple: Immich is the foundation. Gallery sits on top of it and adds a small number of features for use cases that wouldn't fit upstream's scope. Same database, same containers, same migration path back. If you change your mind, swapping back to upstream is a three-line change.
This page exists because people coming from Immich legitimately ask "what's different?", and the answer is worth being clear about — not because we think upstream is worse.
Where Immich runs out of room — and how Gallery fills the gaps
Gallery's exclusive features each started the same way: someone hit a wall in Immich and went looking for a door. The categories below group those walls by theme — each shortcoming followed by the Gallery features that fix it.
People and identity
The shortcoming. Immich's face recognition is account-scoped. The same real person lives as a separate entry in your library, in your partner's library, and in every shared album you both touch. Search for them and you find a third of their photos. Name them in one account and nothing carries to the rest. The People page reflects which container someone shows up in, not who actually shows up in your life.
How Gallery solves it.
- Global People — identity-aware people, filters, and search results dedupe across your personal library and every timeline-enabled Space you can access. One row on the People page, one suggestion in filters, one hit in search — never crossing a permission boundary you weren't already on the right side of. Naming, merging, and birthdays stay scoped to where they were entered, while the identity layer underneath connects what is provably the same person.
Sharing and collaboration
The shortcoming. Immich's two sharing primitives — Partner Sharing and Albums — both run out of room with more than two people. Partner Sharing is all-or-nothing. Albums belong to whoever made them. There's no combined family timeline, no activity log, no “what's new since I last looked”, and no way to bulk-share tens of thousands of photos without selecting them by hand.
How Gallery solves it.
- Shared Spaces — multi-owner collaborative timelines with Owner / Editor / Viewer roles, cross-contributor face recognition, per-member timeline integration, last-visit tracking, and a per-space activity log.
- Spaces Filtering — the full filter suite (date, people, location, camera, tags) scoped to a single Space, not just the main library.
- User Groups — named, colour-coded groups for one-click sharing. Invite a whole circle to a Space at once.
- Bulk Add to Spaces — add hundreds of thousands of photos to a Space with one click, processed in the background.
Search and discovery
The shortcoming. Each page in Immich has its own search bar — there's no global keyboard-first entry point. Smart search results come back in default relevance order with no way to sort by date or tune the similarity threshold, so combined text + filter searches return noise. Filters operate in isolation: select a country and you still see cameras and tags from elsewhere. The map view has no filter panel of its own.
How Gallery solves it.
- Inline Search Filters — type people, tags, dates, locations, ratings, media type, favorites, cameras, and album filters directly in the search bar, with live suggestions before Enter.
- Global Search — Cmd/Ctrl+K is now the main search surface, routing Top result searches back into Photos and Spaces while still searching people, places, tags, commands, and pages.
- Search Palette — a keyboard-first command palette opens with Cmd/Ctrl+K from anywhere and searches photos, people, places, tags, and every settings page in parallel. Prefix shortcuts (@, #, /, >) scope to one kind of result; on album and space pages it adds context-aware verbs with inline confirmation for destructive ones.
- Search Sorting & Relevance — sort smart search results by date or relevance, with date-grouped infinite scroll and a tunable similarity threshold so combined text + filter searches stop returning noise.
- Interdependent Filtering — every filter narrows every other filter. Select a country and only see cameras, people, and tags that exist in those photos.
- Smart Search & Contextual Filters — natural-language search inside Spaces, with filter suggestions that adapt to your current selection.
- Map Filtering — the full filter panel from Photos, now on the Map view. Markers update in real time.
AI and automation
The shortcoming. Immich's AI surface is focused on faces and basic CLIP search. Pets aren't detected, even though most people's libraries are full of them. Memories show only “On This Day” — no recent trip recaps, no birthday compilations. There's no automated way to suppress clutter (screenshots, memes, receipts) from your timeline. Duplicate detection works on photos but doesn't catch videos that have been re-encoded, resized, or format-converted.
How Gallery solves it.
- Auto-Classification — define what clutter looks like (screenshots, memes, receipts) and Gallery tags and archives them automatically using CLIP.
- Memories Archive — browse every retained generated memory from the Memories page, with local search, saved filtering, and admin controls for how long generated memories are kept.
- Smarter Memories — recent trips and birthdays are generated by server-side rules, with curated trip recaps and birthday sets for both multi-year and newer libraries.
- Pet Detection — YOLO11 recognises dogs, cats, birds, and other animals automatically. Browse by individual pet.
- Video Duplicate Detection — find duplicate videos even after re-encoding, resizing, or format conversion.
Media management and migration
The shortcoming. Trimming a video in Immich means exporting to an external tool and re-importing. Moving from Google Photos requires CLI tools and manual scripts. Storage is local disk and external libraries — no native S3-compatible backend. Linking an existing 30,000-photo library into a shared collection isn't possible without manual selection.
How Gallery solves it.
- Video Trimming — trim videos losslessly with stream copy. Zero quality loss, near-instant processing.
- Connected Libraries — link external photo libraries to Shared Spaces so thousands of photos appear instantly.
- Google Photos Import — a guided wizard to import Google Takeout archives directly from the browser.
- S3-Compatible Storage — use AWS S3, MinIO, Cloudflare R2, Backblaze B2, or any S3-compatible backend.
Mobile
The shortcoming. Filtering the timeline in the Immich mobile app means switching to a separate Search tab and losing your scroll position. Advanced surfaces — the map view, scoped search, Shared Spaces — sit deeper in the app or aren't there at all.
How Gallery solves it.
- Photos Filtering on Mobile — a three-snap bottom sheet on the Photos tab filters the timeline by people, places, tags, dates, rating, and media type — without leaving the grid.
- Noodle Gallery for iPhone — a native iOS app on the App Store with background camera backup, on-device CLIP search, the map view, and a Shared Spaces preview, all talking directly to your Gallery server.
- Noodle Gallery for Android — the same native app, now live on Google Play with background camera backup, on-device CLIP search, the map, and Shared Spaces on Android.
The shortcomings, side-by-side
A condensed view of the same gaps and their fixes — useful if you want the whole picture in one table.
| Where Immich runs out of room | How Gallery solves it |
|---|---|
| Filtering on mobile means leaving the Photos tab and losing your scroll position | In-place filter sheet on the Photos tab — people, places, tags, dates, rating, media type |
| Partner sharing is all-or-nothing; albums belong to whoever made them; face recognition stops at your account | Shared Spaces — multi-owner timelines with Owner/Editor/Viewer roles, cross-contributor face recognition, last-visit tracking, and a per-space activity log |
| The same person can appear as separate entries across personal and shared libraries | Global People — identity-aware people rows, filters, and search results across accessible timeline Spaces |
| Pets aren't detected | Pet Detection — YOLO11 finds dogs, cats, birds, and other animals; browse by individual pet |
| Memories show only “On This Day” | Smarter Memories — recent trip recaps and birthday memories with curated, server-defined titles |
| Generated memories disappear after their daily carousel window, with no archive or retention control | Memories Archive — browse retained generated memories and configure how long unsaved memory records are kept |
| Each page has its own search bar; no keyboard-first global entry point | Search Palette — Cmd/Ctrl+K from anywhere across photos, people, places, tags, and every settings page, with prefix shortcuts and context-aware verbs |
| Advanced filters require leaving the keyboard flow for the filter panel | Inline Search Filters — type structured filters into the search bar with live suggestions and shareable URL state |
| Smart search returns default relevance order — no date sort, no similarity tuning | Sort by date, date-grouped infinite scroll, tunable similarity threshold |
| Filters work in isolation — selecting a country still shows cameras and tags from elsewhere | Interdependent filtering — every filter narrows every other filter in real time |
| The map view has no filter panel of its own | Full filter panel on the map itself, with markers updating in real time |
| Storage is local disk or external libraries — no native S3-compatible backend | AWS S3, MinIO, Cloudflare R2, Backblaze B2, Wasabi, or any S3-compatible store |
| Importing from Google Photos requires CLI tools and manual scripts | An in-browser guided wizard for Google Takeout archives |
| Trimming a video means exporting and re-encoding | Lossless stream-copy trimming, near-instant |
Worth flagging: every fix above is additive. Gallery doesn't replace anything Immich does — every shortcoming gets a new feature stacked on top of upstream. Core photo features, the full REST API, the official Immich iOS and Android apps, third-party integrations, Frame, home automation — all of it carries over to a Gallery server unchanged.
Should you stick with upstream Immich?
There are real, substantive reasons to run upstream Immich instead of the fork. These aren't token bullet points — these are genuine cases where upstream is the right call.
Community size and track record
Immich has been in active development since 2022, has tens of thousands of GitHub stars, hundreds of contributors, and a large active Discord. Gallery has a small team and a much shorter track record. If you value the comfort of a large community where any question has been answered already, upstream is the right place to be.
Broader platform testing
Upstream Immich has been deployed on every conceivable hardware combination — Raspberry Pis, Synology NAS units, Unraid, TrueNAS, Docker on Windows via WSL2, bare-metal Kubernetes, you name it. Gallery has tested fewer combinations. If you're running an unusual setup, upstream's broader test surface helps.
You don't need any of the additions
The honest reason most people should stick with upstream: if you don't need Shared Spaces, Pet Detection, S3 storage, the Google Takeout wizard, or advanced filtering, then upstream Immich already does everything you want. Gallery exists to add features for specific use cases — and if those use cases aren't yours, upstream is leaner, simpler, and has more eyes on it.
Migrating from Immich is a three-line change
If you're already running Immich and you want to try Gallery, the migration is
trivial. Swap two image names in your docker-compose.yml and bump
IMMICH_VERSION in your .env. The current version is
v4.
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} image: ghcr.io/open-noodle/gallery-server:${IMMICH_VERSION:-release} image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} image: ghcr.io/open-noodle/gallery-ml:${IMMICH_VERSION:-release} IMMICH_VERSION=release IMMICH_VERSION=v4 Then pull the new images and restart:
docker compose pull && docker compose up -d No data migration. No database conversion. No file copying. Your library lives in exactly the same place — Gallery reads and writes the same files Immich was using, against the same Postgres database, on the same volume.
docker exec -t your-db-container pg_dumpall -U postgres > backup.sql Full step-by-step guide on the install page. See the migration walkthrough →
Gallery ships a cleanup SQL that drops every Gallery-specific table, column, and migration record — shared spaces, pet detection, classifications, duplicate data — leaving a plain upstream Immich database. Your photos and videos are never touched. Flip the two image names back and you're on upstream.
Read the switch-back guideGallery's job is to make a small set of additional features available without making you choose between them and the Immich roadmap.
Frequently asked questions
Is my data safe if I move from Immich to Noodle Gallery?
Yes. Gallery uses the same database schema, the same upload directory layout, and the same file formats as upstream Immich. The migration is two image-name changes in your docker-compose.yml. Your library is never copied, transformed, or rewritten — Gallery just reads and writes the same files Immich was using.
Can I switch back to upstream Immich later?
Yes. Gallery ships a one-command cleanup script that drops every Gallery-specific table, column, and migration record from the database — your photos and videos are never touched. Run the script, swap the two image names back to ghcr.io/immich-app/immich-server and ghcr.io/immich-app/immich-machine-learning, run docker compose pull, and you're back on upstream. Gallery is designed so the door always swings both ways.
Will Gallery diverge from Immich over time?
No, that's the opposite of the goal. Gallery rebases onto every upstream Immich release, so every bug fix, performance improvement, and new feature from the Immich team lands in Gallery automatically. Gallery's exclusive features are additive — they sit on top of upstream, not in place of it.
How quickly does Gallery rebase after a new Immich release?
Usually within a few days. The rebase process is automated where possible and manual where needed; the goal is to stay close enough that running Gallery feels like running a slightly enhanced Immich, not a separate project.
Does Gallery have a mobile app?
Yes. Noodle Gallery is live on both the App Store (iPhone) and Google Play (Android) with background camera backup, on-device CLIP search, the map view, and Shared Spaces. The upstream Immich apps also continue to work with Gallery servers via the shared API if you'd rather use those.
Will third-party Immich apps still work with Noodle Gallery?
Yes, fully. Gallery exposes the same REST API as upstream Immich — same endpoints, same paths, same payloads. Any app that works with Immich works with Gallery without modification: third-party mobile clients, the official Immich iOS and Android apps, Immich Frame, home automation integrations, CLI tools, scripts — all of it. Just point the app at your Gallery server URL instead of your old Immich URL.
Why fork at all instead of upstreaming features?
Several Gallery-exclusive features (Shared Spaces, Pet Detection, contextual filters) were either declined upstream, considered out of scope, or required architectural changes that wouldn't have fit Immich's roadmap. Forking lets us experiment without slowing down the upstream team — and rebasing means we never lose touch with their progress.
A note on the upstream Immich team
Noodle Gallery exists because Immich exists. We owe everything to the upstream team — the architecture, the database design, the mobile apps, the CLIP integration, the relentless pace of releases. If you find Gallery useful, please also star, sponsor, or contribute to immich-app/immich. Without their work, none of this would be possible.