[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73846":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":28,"readmeContent":29,"aiSummary":30,"trendingCount":15,"starSnapshotCount":15,"syncStatus":31,"lastSyncTime":32,"discoverSource":33},73846,"immich-power-tools","immich-power-tools\u002Fimmich-power-tools","Power tools for organizing your immich library ","https:\u002F\u002Fimmich-power-tools.featureos.app\u002F",null,"TypeScript",2536,52,11,93,0,12,19,56,36,92.27,"GNU Affero General Public License v3.0",false,"main",[25,26,27],"immich","photo-sharing","tools","2026-06-12 04:01:12","# ![Logo](.\u002Fpublic\u002Ffavicon-32x32.png) Immich Power Tools\n\nA 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.\n\n[Watch Demo Video here](https:\u002F\u002Fwww.loom.com\u002Fembed\u002F13aa90d8ab2e4acab0993bdc8703a750?sid=71498690-b745-473f-b239-a7bdbe6efc21)\n\n[![Immich Power Tools](.\u002Fscreenshots\u002Fscreenshot-1.png)](https:\u002F\u002Fwww.loom.com\u002Fembed\u002F13aa90d8ab2e4acab0993bdc8703a750?sid=71498690-b745-473f-b239-a7bdbe6efc21)\n\n### 🎒Features\n- **Manage people data in bulk 👫**: Options to update people data in bulk, and with advance filters\n- **People Merge Suggestion 🎭**: Option to bulk merge people with suggested faces based on similarity.\n- **Update Missing Locations 📍**: Find assets in your library those are without location and update them with the location of the asset.\n- **Potential Albums 🖼️**: Find albums that are potential to be created based on the assets and people in your library.\n- **Analytics 📈**: Get analytics on your library like assets over time, exif data, etc.\n- **Smart Search 🔎**: Search your library with natural language, supports queries like \"show me all my photos from 2024 of \u003Cperson name>\"\n- **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.\n\n### Support me 🙏\n\nIf you find this tool useful, please consider supporting me by buying me a coffee.\n\n[![Buy me a coffee](https:\u002F\u002Fwww.buymeacoffee.com\u002Fassets\u002Fimg\u002Fcustom_images\u002Forange_img.png)](https:\u002F\u002Fwww.buymeacoffee.com\u002Fvarunraj)\n\n## 💭 Back story\n\nRecently 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.\n\n## 🚀 Getting Started\n\n### 🐬 Using Docker\n\n#### Power-tools is designed to be used alongside Immich, and there are two ways you can run it.\n#### Method 1 - Docker Compose ( Recommended )\n\nAdd 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.\n\nSee the sample [docker-compose-all-immich.yml](.\u002Fdocker-compose-all-immich.yml) file for reference.\n\n```yaml\nservices:\n  # Other services...\n  power-tools:\n    container_name: immich_power_tools\n    image: ghcr.io\u002Fimmich-power-tools\u002Fimmich-power-tools:latest\n    volumes:\n      - immich-power-tools-data:\u002Fapp\u002Fdata\n    ports:\n      - \"8001:3000\"\n    env_file:\n      - .env\n\nvolumes:\n  immich-power-tools-data:\n```\n\nAdd the Immich API Key and immich url's to the env file (which you already have for the immich).\nYou also need to add `DB_PORT` (Default 5432) and `DB_HOST`, which has to be set to the name of the immich database\ncontainer (Default `immich_postgres`).\n\n```bash\nIMMICH_API_KEY= # your_immich_api_key\nIMMICH_URL = \"http:\u002F\u002Flocal-ip-of-immich:port\" # Your immich instace ip address and port\nEXTERNAL_IMMICH_URL = \"https:\u002F\u002Fexternal-address\" # External address of immich\n\nDB_PORT = \"5432\"\nDB_HOST = \"immich_postgres\"\n\n# Optional - AI Configuration for Smart Search (Find)\nAI_API_KEY=your_api_key_here # API key for your OpenAI-compatible provider\nAI_BASE_URL=\"https:\u002F\u002Fapi.openai.com\u002Fv1\" # e.g. https:\u002F\u002Fapi.openai.com\u002Fv1 (OpenAI), https:\u002F\u002Fapi.groq.com\u002Fopenai\u002Fv1 (Groq), http:\u002F\u002Fhost.docker.internal:11434\u002Fv1 (Ollama)\nAI_MODEL=\"gpt-4o-mini\" # e.g. gpt-4o-mini, llama-3.1-8b-instant, llama3.1\n```\nRefer here for obtaining Immich API Key: https:\u002F\u002Fimmich.app\u002Fdocs\u002Ffeatures\u002Fcommand-line-interface#obtain-the-api-key\n\n> [!NOTE] When creating the API key, make sure you select all the permissions for the API key.  \n\n#### Method 2 - Portainer\n\nIf you're using portainer, run the docker using `docker run` and add the power tools to the same network as immich.\n\n```bash\n# Run the power tools from docker \ndocker run -d --name immich_power_tools -p 8001:3000 -v immich-power-tools-data:\u002Fapp\u002Fdata --env-file .env ghcr.io\u002Fimmich-power-tools\u002Fimmich-power-tools:latest\n\n# Add Power tools to the same network as immich\ndocker network connect immich_default immich_power_tools\n```\n\n\n### 🚀 For local development\n\n> [!NOTE]  \n> Please use `bun` to run the project. If you don't have `bun` installed, checkout [bun.sh](https:\u002F\u002Fbun.sh\u002F) for installation.\n\n\nCopy paste the `.env.example` to `.env` and fill in the values.\n\n```bash\n  IMMICH_URL=\"\" # Immich URL\n  IMMICH_API_KEY=\"\" # Immich API Key\n  DB_USERNAME=\"\" # Postgress Database Username\n  DB_PASSWORD = \"\" # Postgres Database Password\n  DB_HOST = \"\" # Postgres Host (IP address or hostname of the database)\n  DB_PORT = \"\" # Postgres Port number (Default: 5432)\n  DB_DATABASE_NAME=\"\" # Name of the database \n  \n  # Optional - AI Configuration for Smart Search (Find)\n  AI_API_KEY=\"\" # API key for your OpenAI-compatible provider\n  AI_BASE_URL=\"https:\u002F\u002Fapi.openai.com\u002Fv1\" # Base URL for OpenAI-compatible API\n  AI_MODEL=\"gpt-4o-mini\" # Model used for parsing search queries in \"Find\"\n```\n> [!NOTE]  \n> Make sure you have postgres port exposed on you machine.\n\nRefer here for obtaining Immich API Key: https:\u002F\u002Fimmich.app\u002Fdocs\u002Ffeatures\u002Fcommand-line-interface#obtain-the-api-key\n\nRun the development server:\n\n```bash\nbun run dev\n```\n\n## Features\n\n**Immich Related**\n\n- [x] Manage People\n  - [x] Smart Merge\n- [x] Manage Albums\n  - [x] Bulk Delete\n  - [x] Bulk Share\n  - [ ] Bulk Edit\n  - [ ] Filters\n  - [x] Potential Albums\n  - [x] People in Album\n- [x] Missing Location\n- [x] Statistics\n  - [x] EXIF Data\n  - [x] Assets Overtime Chart\n\n**Tech Related**\n\n- [x] Dark Mode\n- [x] Dockerize\n- [x] Authentication\n- [x] Push to github packages\n\n## Tech Stack\n\n- [Next.js](https:\u002F\u002Fnextjs.org\u002F) for infrastructure\n- [Tailwind CSS](https:\u002F\u002Ftailwindcss.com\u002F) for styling\n- [Shadcn](https:\u002F\u002Fshadcn.com\u002F) for UI Components\n- [Axios](https:\u002F\u002Faxios-http.com\u002F) for API calls\n\n## External Services\nThese 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.\n\n- [Google Maps](https:\u002F\u002Fmaps.google.com\u002F) for heatmap\nGoogle 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.\n\n  > Code where heatmap data is plotted: [src\u002Fpages\u002Fassets\u002Fgeo-heatmap.tsx:32](.\u002Fsrc\u002Fpages\u002Fassets\u002Fgeo-heatmap.tsx#L32-L35)\n\n- OpenAI-compatible AI provider for smart query parsing in Find\nAny 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](https:\u002F\u002Fimmich.app\u002Fdocs\u002Fapi\u002Fsearch-smart).\n\n  > Code where AI parsing is used: [src\u002Fhelpers\u002Fai.helper.ts](.\u002Fsrc\u002Fhelpers\u002Fai.helper.ts)\n\n  **Examples:**\n  - **OpenAI:** `AI_BASE_URL=https:\u002F\u002Fapi.openai.com\u002Fv1`, `AI_MODEL=gpt-4o-mini`\n  - **Groq:** `AI_BASE_URL=https:\u002F\u002Fapi.groq.com\u002Fopenai\u002Fv1`, `AI_MODEL=llama-3.1-8b-instant`\n  - **Ollama (local):** `AI_BASE_URL=http:\u002F\u002Flocalhost:11434\u002Fv1` (or `http:\u002F\u002Fhost.docker.internal:11434\u002Fv1` if running Power Tools in Docker), `AI_MODEL=llama3.1`\n\n## Contributing\n\nFeel free to contribute to this project, I'm open to any suggestions and improvements. Please read the [CONTRIBUTING.md](.\u002FCONTRIBUTING.md) for more details.\n","Immich Power Tools 是一个非官方的 Immich 客户端，旨在提供更强大的工具来组织和管理您的 Immich 账户。它支持批量管理和更新人物数据、合并相似人脸、更新缺失的位置信息、创建潜在相册以及对库进行分析等功能，从而加速工作流程。此外，该工具还提供了智能搜索和批量日期偏移等高级特性。适用于需要高效整理大量照片和视频的用户，尤其是那些从其他平台迁移至 Immich 的用户。项目采用 TypeScript 编写，并通过 Docker 方式部署，方便与现有的 Immich 服务集成。",2,"2026-06-11 03:47:39","high_star"]