Co-occurrence, not recognition.
Koram trusts Immich's existing person assignments. It never re-runs a face model — it just counts how often two people appear in the same photo.
Koram turns the face data already in your Immich library into a live force-directed graph — computed locally, exportable as PNG, CSV, or back into Immich as an album.
Koram trusts Immich's existing person assignments. It never re-runs a face model — it just counts how often two people appear in the same photo.
D3-force on HTML canvas. Drag a node to pin it, scroll to zoom, double-click to release. The graph re-flows by edge weight in real time.
Download a 2× PNG, save the underlying co-occurrence as CSV, or push the graph back into Immich as an asset in a dedicated album.
127 nodes · 1,842 edges
Drop an API key into /app/config/koram.toml (or pass IMMICH_API_KEY as an env var). Permissions on the right.
Open the side drawer, search and select people. Optionally narrow by date range. Settings persist in your browser.
Koram sweeps each person's photos with concurrency 8, builds the matrix on disk, and the canvas re-flows live as you drag.
services: koram: image: koram:latest container_name: koram user: 1000:1000 ports: - "5001:5001" environment: - IMMICH_API_KEY=your-api-key - IMMICH_BASE_URL=http://your-immich-host:2283 volumes: - ./config:/app/config - ./cache:/app/cache restart: always