ov-immich/skills/immich-layer/SKILL.md
Immich photo management server on port 2283 with PostgreSQL and Redis. Use when working with Immich, photo management, or media library services.
npx skillsauth add overthinkos/overthink-plugins immichInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Property | Value |
|----------|-------|
| Dependencies | supervisord, nodejs24, postgresql, redis, ffmpeg |
| Ports | 2283 |
| Volumes | library -> ~/.immich/library, cache -> ~/.immich/cache, import -> ~/.immich/import, external -> ~/.immich/external |
| Service | immich-db-init (oneshot, priority 15), immich-server (priority 30) |
| Route | immich.localhost:2283 |
| Install files | tasks: |
| Variable | Value |
|----------|-------|
| IMMICH_VERSION | v2.7.5 |
| IMMICH_HOST / IMMICH_PORT | 0.0.0.0 / 2283 |
| IMMICH_MEDIA_LOCATION | ~/.immich/library |
| IMMICH_MACHINE_LEARNING_ENABLED | false |
| DB_HOSTNAME / DB_DATABASE_NAME | 127.0.0.1 / immich |
| DB_USERNAME / DB_PASSWORD | immich / immich |
| REDIS_HOSTNAME / REDIS_PORT | 127.0.0.1 / 6379 |
| NODE_ENV | production |
vips, vips-devel, perl-Image-ExifTool (RPM)libheif, LibRaw, gcc-c++, make, unzip (RPM)Note: FFmpeg is provided via the ffmpeg dependency layer (negativo17 nonfree build) rather than installed directly.
The root-phase tasks download Immich source, builds the server, web UI, and core plugin:
pnpm install --frozen-lockfile && pnpm --filter immich build && pnpm --filter immich deploy --prod /opt/immich/serverpnpm --filter @immich/sdk --filter immich-web buildextism-js (v1.6.0) and binaryen (v124), then pnpm run build in plugins/ to compile TypeScript → WASM (plugin.wasm). Build tools are cleaned up after compilation./docker-entrypoint-initdb.d/01-immich-extensions.sql creates vector, vchord CASCADE, and earthdistance CASCADE extensions (runs during first initdb only)/usr/local/bin/immich-db-migrate.sh runs on every container start via the immich-db-init supervisord service. Waits for PostgreSQL, then idempotently ensures vector, earthdistance, and vchord (if available) extensions exist. Handles both fresh installs and upgrades of existing databases./usr/local/bin/immich-server-start.sh waits for PostgreSQL to be ready before starting the Node.js process. Eliminates the crash-restart loop that previously occurred when supervisord started immich-server before PostgreSQL finished recovery.All pnpm commands use npm_config_cache=/tmp/npm-root-cache to avoid creating root-owned files in the container user's ~/.cache directory.
| Name | Env Vars |
|------|----------|
| db-password | DB_PASSWORD, POSTGRES_PASSWORD |
# image.yml
immich:
layers:
- immich
/ov-immich:immich/ov-immich:immich-ml/ov-foundation:supervisord -- process manager dependency/ov-coder:nodejs24 -- Node.js runtime dependency/ov-foundation:postgresql -- database dependency/ov-foundation:redis -- cache dependency/ov-selkies:ffmpeg -- FFmpeg multimedia (nonfree codecs) — required dependency/ov-foundation:vectorchord -- VectorChord extension (migration script creates it if available)/ov-immich:immich-ml -- optional ML backendUse when the user asks about:
immich.localhost route/ov-build:layer — layer authoring reference (layer.yml schema, task verbs, service declarations)/ov-build:eval — declarative testing (eval: block, ov eval image, ov eval live)development
Claude Code multi-agent support in Overthink — sub-agents, dynamic workflows, and agent teams, and how each drives the existing `ov eval` disposable beds to test and verify. MUST be invoked before authoring or invoking an ov sub-agent / dynamic workflow / agent team, wiring agent-lifecycle hooks, or asking "which primitive should drive the R10 beds?".
tools
Mounts a virtiofs share tagged `workspace` at /workspace inside a VM guest via a systemd .mount unit. Use when a kind:vm entity shares a host directory into the guest and you need it auto-mounted (and re-mounted at every boot).
development
MUST be invoked before any work involving: the `kind: android` schema kind, a `target: android` deploy, the `apk:` layer package format (installing Android apps declaratively), AndroidDeployTarget, an in-pod emulator OR a remote/physical adb-endpoint device, or nested `pod → android` deployment. The first-class Android device + app surface that sits above `ov eval adb`/`appium`.
tools
Use when committing, branching, pushing, merging, tagging, creating PRs, or approving/merging PRs with gh — the feat/-branch, R10-gated, never-force-push landing workflow across the main repo + the plugins submodule + image/<distro> submodules. Covers sync-to-upstream, branch/worktree pruning, the fork+PR path for contributors without write access, and cross-repo @github landing order.