A keyboard-driven image categorization tool built with Elm that integrates with Immich. Efficiently categorize and manage large photo collections with vim-style navigation.
- Keyboard-driven interface - Vim-style navigation and shortcuts
- Real-time viewing - Authenticated image/video loading from Immich
- Smart album management - Categorize assets with automatic count tracking
- Intelligent keybindings - Conflict-free album shortcuts with fuzzy matching
- Advanced search - Fuzzy search and filtering capabilities
- Batch operations - Bulk favorites, archiving, and album management
- Asset preloading - Intelligent caching for smooth navigation
See Immich Cat in action - this 1-minute demo shows the core workflow of efficiently categorizing photos with single-keypress album assignment:
demo.mp4
What you'll see in the demo:
- Loading albums from Immich and navigating through photos with vim-style keys
- Album keybindings displayed on screen (like
afor "Animals",ffor "Family") - Single-keypress photo categorization - just press a letter to add the current photo to that album
- Search mode for finding albums not shown on screen
- The speed difference: traditional web interfaces require multiple clicks per photo, here it's one keypress per album
docker run -p 8000:8000 \
-e IMMICH_URL=https://your-immich-server.com \
-e IMMICH_API_KEY=your_api_key \
ghcr.io/ohare93/immich-cat:latestOpen http://localhost:8000 in your browser.
Get your API key from Immich web interface → Account Settings → API Keys.
Immich Cat requires these minimum permissions (Immich v1.138.0+):
| Permission | Enables |
|---|---|
album.read |
View albums, check asset membership |
album.create |
Create new albums |
albumAsset.create |
Add assets to albums |
albumAsset.delete |
Remove assets from albums |
asset.read |
Browse and search assets |
asset.update |
Favorite and archive assets |
Note: Older Immich versions may require the
allpermission instead.
See DEPLOYMENT.md for:
- Docker Compose setup
- Nix/NixOS installation
- Development setup
- CORS configuration for Traefik (required for reverse proxy setups)
- Troubleshooting guide
The app connects to your existing Immich server and loads all your albums and assets. You don't need to recreate anything - it works with your current photo organization.
The key advantage: In Immich's web interface, adding a photo to an album requires multiple clicks (select photo → add to album → search/select album → confirm). Here, it's just one keypress per album thanks to automatically generated keybindings.
💡 See it in action: Watch the demo above to see exactly how this works!
- After starting the app, it will load your Immich albums and assets
- Use vim-style navigation to browse through your photos
- See your top albums with their auto-generated keybindings displayed on screen (like
afor "Animals",vfor "Vacation 2024") - Navigate to any photo and press the album's key to instantly add it (e.g., press
ato add current photo to "Animals") - Press
?anytime to see all available shortcuts
📺 New to the workflow? Check out the demo video for a visual walkthrough!
The app automatically generates single-key shortcuts for your most-used albums and displays them on screen at all times:
amight be "Animals"vmight be "Vacation 2024"fmight be "Family"- And so on...
Simply navigate to any photo and press the letter - that's it! No menus, no clicking, no searching. The keybindings are always visible.
- Normal Mode (default): Navigate and manage assets with keyboard shortcuts (top album keybindings always visible)
- Insert Mode: Search for albums not shown on screen, or create new albums
- Scroll View Mode: For viewing large images that need scrolling
←/→(Arrow Keys) - Previous/next assetBackspace- Previous assetSpace/Enter- Next assetHome/End- Jump to first/last asset (Grid view only)Esc- Return to normal mode/main menu
F- Toggle favorite statusD- Toggle archive/deleteY- Copy image to clipboardK- Open current asset in Immich web interfaceL- Load/toggle video (for long videos)
a-z(displayed on screen) - Instantly add current photo to specific albumI- Search for albums not visible on screen, or create new albumsR- Reload albums from server
G- Switch to grid viewS- Toggle scroll view (for viewing large images)T- Toggle time view (Absolute/Relative)?- Show help with all current keybindings
h/j/k/l- Scroll left/down/up/right (vim-style)PageUp/PageDown- Scroll full page up/downCtrl+u/d- Scroll half page up/downCtrl+f/b- Scroll full page up/down
PageUp/PageDown- Page through album/search resultsCtrl+u/d- Half page up/down through resultsCtrl+f/b- Full page forward/back through results
Note:
Ctrl+u/d/f/bkeys work differently depending on mode: for scrolling images in Scroll View Mode, or for navigating through album/search results in other contexts.
Example: With "Animals" =
avisible on screen, just pressawhile viewing any photo to add it to Animals album. UseIonly if you need an album that's not displayed.
MIT License - see LICENSE file for details.