A secure, cross-platform desktop media sync client for your private Immich server(s).
Resides in the system tray, watches folders, and allows you to search, browse, and manage your remote photo and video library.
About · Screenshots · Features · Install · Getting started · Build from source · Tech stack · Testing · Roadmap
immichBEAM sits in your system tray and keeps your photos and videos backed up to your self-hosted Immich server. Think Google Drive or Dropbox, but for your photo library.
- Watch folders and automatically upload new photos and videos
- Browse your entire Immich library — timeline, albums, people, places, and map
- Smart search with CLIP semantic search ("sunset at the beach")
- System tray with live status, pause/resume, and quick actions
- Cross-platform — macOS, Windows, and Linux
This is the third iteration of building an Immich desktop client. The initial use case was a simple Windows app easy enough for my wife or mom to use. Then I realized 30% of my MacBook drive was filled with old photos and videos, so I decided to make it cross-platform. And it has spiraled from there.
Built almost entirely with AI coding agents: initial design and architecture with Claude (Fable 5), core development with Claude (Opus 4.6), some work with Codex (GPT-5.4) and OpenCode (GLM 5.2). Graphics created with Gab.ai, Gemini, and GIMP.
Help wanted: If you're running Linux or ARM hardware, testing and bug reports are especially valuable. Open an issue with your platform, Immich server version, and what broke. The app has a built-in log viewer (Settings > Logs) with level filtering and export — attach debug logs to your issue for faster diagnosis.
- Recursive folder watching with debounced filesystem events
- SHA1 content hashing with an SQLite cache — only new/changed files are processed
- Server-side duplicate detection before upload
- Durable upload queue that survives restarts, with retries and exponential backoff
- Configurable upload concurrency and bandwidth throttling (global limit shared across all concurrent uploads)
- Streaming uploads with live per-file progress
- Live Photo pairing (still + video linked automatically)
- XMP sidecar support
- Timeline — infinite-scroll grid of your entire library
- Albums — browse, open, and filter album contents
- People — recognized faces; click to see their photos
- Places — browse by city
- Map — clustered markers with hover previews on a theme-aware map
- Search — filename search, quick filters (favorites, archive, not-in-album), tag filtering, and date ranges
- Smart search — CLIP semantic search when machine learning is enabled on the server
- Lightbox — full viewer with EXIF metadata, GPS coordinates, camera info, download, and local file path with Reveal in Finder
- Per-folder album assignment (manual, by device name, or by folder name)
- Create albums and reorganize previously-uploaded assets
- Tag-based filtering with multi-select combobox
- Credentials stored in the OS keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service) — never written to disk
- Trust-on-first-use certificate pinning for self-signed servers
- Least-privilege IPC capabilities
- Content Security Policy enforced
- System tray with connection-aware status icons and live queue depth
- Minimize-to-tray on close
- Launch on login
- Single-instance (second launch focuses the existing window)
- Light, dark, and system theme
- Free Up Space — safely trash local files already backed up (verified by checksum)
- Log viewer with level/category filtering and export
Download the latest release for your platform from GitHub Releases:
| Platform | Format |
|---|---|
| macOS | .dmg (universal) |
| Windows | .msi or .exe (NSIS) |
| Linux | .deb or .AppImage |
- Launch immichBEAM — it appears in your system tray
- Open the dashboard (click the tray icon or select Open Dashboard)
- Go to Server — enter your Immich server URL and authenticate with an API key or email/password
- Go to Folders — add folders to watch
- Your photos start syncing automatically — monitor progress in Overview or Queue
- Rust (stable) and your platform's Tauri dependencies
- Node 18+ and pnpm
- Linux:
libsecret-1-dev(Debian/Ubuntu) for keychain support
pnpm install
pnpm tauri devpnpm tauri build| Layer | Technology |
|---|---|
| Framework | Tauri 2 |
| Frontend | React 19, TypeScript, Tailwind CSS |
| Backend | Rust (tokio, reqwest, rusqlite) |
| Database | SQLite with WAL mode and connection pooling |
| File watching | notify with debouncing |
Tested with Immich v2.x. Includes forward-compatibility shims for upcoming v3 API changes (visibility enum, duration format, search fields).
| Platform | Status | Notes |
|---|---|---|
| macOS (Intel) | Moderate testing | Primary dev machine |
| macOS (Apple Silicon) | Builds via universal binary | Needs real-world testing |
| Windows 10/11 (x64) | Moderate testing | Working well |
| Windows (ARM) | CI builds | Untested — testers welcome |
| Ubuntu 24.04+ (x64) | CI builds | Light testing — needs more |
| Ubuntu (ARM) | CI builds | Untested — testers welcome |
These are planned features beyond the current release:
- Local media browser — browse and view files in your watched folders directly
- Simple mode — streamlined UI for non-technical users
- Permission scoping — detect Immich user/API key permissions and only expose available features
- Inline editing — rename albums, assign tags, rename people, edit location from the browse interface
- Enhanced disk cleanup — expanded local file management and utilities
- Admin installer bundles — pre-configured installers with scoped features for deployment
- Multi-server support — connect multiple Immich servers and assign folders per server
- Immich v3 API — full compatibility with auto-detection of server version
WTFPL — Do What The Fuck You Want To Public License.










