immich-power-tools

immich-power-tools

Official

Docker app from rorar's Repository

Overview

Unofficial Immich client for advanced library management. Features include bulk people management, smart face merge, location enrichment, album discovery, library analytics, natural language search, and bulk date adjustment. Connects to your Immich server via API and directly to the PostgreSQL database for advanced operations. Must be on the same Docker network as immich-server and immich-vectorchord-db.

Logo Immich Power Tools

A unofficial immich client to provide better tools to organize and manage your immich account. Building it to speed up your workflows in Immich to organize your people and albums.

[!IMPORTANT] Immich v3.0 compatibility: Power Tools v0.22.0 and above require Immich 3.0 or newer.

Watch Demo Video here

Immich Power Tools

🎒Features

  • Manage people data in bulk 👫: Options to update people data in bulk, and with advance filters
  • People Merge Suggestion 🎭: Option to bulk merge people with suggested faces based on similarity.
  • Update Missing Locations 📍: Find assets in your library those are without location and update them with the location of the asset.
  • Potential Albums 🖼️: Find albums that are potential to be created based on the assets and people in your library.
  • Analytics 📈: Get analytics on your library like assets over time, exif data, etc.
  • Smart Search 🔎: Search your library with natural language, supports queries like "show me all my photos from 2024 of "
  • Bulk Date Offset 📅: Offset the date of selected assets by a given amount of time. Majorly used to fix the date of assets that are out of sync with the actual date.

Support me 🙏

If you find this tool useful, please consider supporting me by buying me a coffee.

Buy me a coffee

💭 Back story

Recently I've migrated my entire Google photos library to Immich, I was able to successfully migrate all my assets along with its albums to immich. But there were few things like people match that was lacking. I loved Immich UI on the whole but for organizing content I felt its quite restricted and I had to do a lot of things in bulk instead of opening each asset and doing it. Hence I built this tool (continuing to itereate) to make my life and any other Immich user's life easier.

🚀 Getting Started

🐬 Using Docker

Power-tools is designed to be used alongside Immich, and there are two ways you can run it.

Method 1 - Docker Compose ( Recommended )

Add the following into your docker compose as a new service along side other immich services. Make sure you've power-tools in same network as immich.

See the sample docker-compose-all-immich.yml file for reference.

services:
  # Other services...
  power-tools:
    container_name: immich_power_tools
    image: ghcr.io/immich-power-tools/immich-power-tools:latest
    volumes:
      - immich-power-tools-data:/app/data
    ports:
      - "8001:3000"
    env_file:
      - .env

volumes:
  immich-power-tools-data:

Add the Immich API Key and immich url's to the env file (which you already have for the immich). You also need to add DB_PORT (Default 5432) and DB_HOST, which has to be set to the name of the immich database container (Default immich_postgres).

IMMICH_API_KEY= # your_immich_api_key
IMMICH_URL = "http://local-ip-of-immich:port" # Your immich instace ip address and port
EXTERNAL_IMMICH_URL = "https://external-address" # External address of immich

DB_PORT = "5432"
DB_HOST = "immich_postgres"

# Optional - AI Configuration for Smart Search (Find)
AI_API_KEY=your_api_key_here # API key for your OpenAI-compatible provider
AI_BASE_URL="https://api.openai.com/v1" # e.g. https://api.openai.com/v1 (OpenAI), https://api.groq.com/openai/v1 (Groq), http://host.docker.internal:11434/v1 (Ollama)
AI_MODEL="gpt-4o-mini" # e.g. gpt-4o-mini, llama-3.1-8b-instant, llama3.1

Refer here for obtaining Immich API Key: https://immich.app/docs/features/command-line-interface#obtain-the-api-key

[!NOTE] When creating the API key, make sure you select all the permissions for the API key.

Method 2 - Portainer

If you're using portainer, run the docker using docker run and add the power tools to the same network as immich.

# Run the power tools from docker 
docker run -d --name immich_power_tools -p 8001:3000 -v immich-power-tools-data:/app/data --env-file .env ghcr.io/immich-power-tools/immich-power-tools:latest

# Add Power tools to the same network as immich
docker network connect immich_default immich_power_tools

🚀 For local development

[!NOTE]
Please use bun to run the project. If you don't have bun installed, checkout bun.sh for installation.

Copy paste the .env.example to .env and fill in the values.

  IMMICH_URL="" # Immich URL
  IMMICH_API_KEY="" # Immich API Key
  DB_USERNAME="" # Postgress Database Username
  DB_PASSWORD = "" # Postgres Database Password
  DB_HOST = "" # Postgres Host (IP address or hostname of the database)
  DB_PORT = "" # Postgres Port number (Default: 5432)
  DB_DATABASE_NAME="" # Name of the database 
  
  # Optional - AI Configuration for Smart Search (Find)
  AI_API_KEY="" # API key for your OpenAI-compatible provider
  AI_BASE_URL="https://api.openai.com/v1" # Base URL for OpenAI-compatible API
  AI_MODEL="gpt-4o-mini" # Model used for parsing search queries in "Find"

[!NOTE]
Make sure you have postgres port exposed on you machine.

Refer here for obtaining Immich API Key: https://immich.app/docs/features/command-line-interface#obtain-the-api-key

Run the development server:

bun run dev

Features

Immich Related

  • Manage People
    • Smart Merge
  • Manage Albums
    • Bulk Delete
    • Bulk Share
    • Bulk Edit
    • Filters
    • Potential Albums
    • People in Album
  • Missing Location
  • Statistics
    • EXIF Data
    • Assets Overtime Chart

Tech Related

  • Dark Mode
  • Dockerize
  • Authentication
  • Push to github packages

Tech Stack

External Services

These services are completely optional and you can use the tool without them. Just that they are used for some of the features. But we dont send any personal data to these services.

  • Google Maps for heatmap Google Maps Javascript API Key is used to render the maps layer for heatmap. When rendering the heatmap, we only send the location data to Google Maps and not any other data.

    Code where heatmap data is plotted: src/pages/assets/geo-heatmap.tsx:32

  • OpenAI-compatible AI provider for smart query parsing in Find Any OpenAI-compatible API can be used for parsing your search query in the "Find" page. You can use standard providers like OpenAI and Groq, or run local models using Ollama or LM Studio. We do not send any personal library data to the AI provider; only your search text is sent for parsing. The actual asset querying uses Immich's Smart Search API.

    Code where AI parsing is used: src/helpers/ai.helper.ts

    Examples:

    • OpenAI: AI_BASE_URL=https://api.openai.com/v1, AI_MODEL=gpt-4o-mini
    • Groq: AI_BASE_URL=https://api.groq.com/openai/v1, AI_MODEL=llama-3.1-8b-instant
    • Ollama (local): AI_BASE_URL=http://localhost:11434/v1 (or http://host.docker.internal:11434/v1 if running Power Tools in Docker), AI_MODEL=llama3.1

Contributing

Feel free to contribute to this project, I'm open to any suggestions and improvements. Please read the CONTRIBUTING.md for more details.

Install immich-power-tools on Unraid in a few clicks.

Find immich-power-tools in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for immich-power-tools Review the template variables and paths Click Install

Requirements

Requires immich-server and immich-vectorchord-db on the same Docker network (immich_internal). Create an API key in Immich with ALL permissions: Account Icon → Account Settings → API Keys → New API Key → Select All → Create. Full setup guide: https://rorar.github.io/immich-unraid-manual/

Related apps

Details

Repository
ghcr.io/immich-power-tools/immich-power-tools:latest
Last Updated2026-07-17
First Seen2026-05-27

Runtime arguments

Web UI
http://[IP]:[PORT:3000]
Network
immich_internal
Shell
sh
Privileged
false
Extra Params
--user 99:100

Template configuration

Port: Web UIPorttcp

Power Tools web interface port.

Target
3000
Default
3000
Value
3000
Path: DataPathrw

Persistent data directory for Power Tools.

Target
/app/data
Default
/mnt/user/appdata/immich-power-tools/
Value
/mnt/user/appdata/immich-power-tools/
--- Immich Connection ---Variable

Connection to your Immich server.

IMMICH_URLVariable

Internal Immich server URL. Uses container name on immich_internal network.

Default
http://immich-server:2283
Value
http://immich-server:2283
IMMICH_API_KEYVariable

Immich API key with ALL permissions. Create in Immich: Account Icon → Account Settings → API Keys.

--- Database ---Variable

PostgreSQL connection. Must match your immich-vectorchord-db configuration.

DB_HOSTVariable

Database container name (must match your DB container on immich_internal).

Default
immich-vectorchord-db
Value
immich-vectorchord-db
DB_PORTVariable

Database port.

Default
5432
Value
5432
DB_USERNAMEVariable

Database username (must match DB container).

Default
postgres
Value
postgres
DB_PASSWORDVariable

Database password (must match DB container).

Default
postgres
Value
postgres
DB_DATABASE_NAMEVariable

Database name (must match DB container).

Default
immich
Value
immich
--- System ---Variable

General settings.

Variable: TZVariable

Timezone. See: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List

Target
TZ
Default
Europe/Berlin
Value
Europe/Berlin
--- Advanced (AI Search) ---Variable

Optional: Enable natural language search via AI provider (OpenAI, Ollama, etc.). No personal data is sent - only search query text.

EXTERNAL_IMMICH_URLVariable

External Immich URL for links in the Power Tools UI (e.g. https://photos.example.com). Leave empty to use IMMICH_URL.

AI_API_KEYVariable

AI provider API key for natural language search (e.g. OpenAI key).

AI_BASE_URLVariable

AI provider base URL. OpenAI: https://api.openai.com/v1, Ollama: http://host.docker.internal:11434/v1

AI_MODELVariable

AI model name. Examples: gpt-4o-mini, llama-3.1-8b-instant