dev.nicx.mimick Mimick Back up and browse your photos #ffeaba #892139 CC0-1.0 GPL-3.0-or-later Nick Cardoso

Mimick is a native Linux desktop client for self-hosted Immich servers. It monitors your folders in the background and automatically syncs photos and videos to your server.

Mimick is a community-developed client and is not affiliated with or endorsed by the Immich project.

https://raw.githubusercontent.com/nicx17/mimick/main/docs/screenshots/photos_page_view_sidebar_on.png Library View - Photos page with sidebar https://raw.githubusercontent.com/nicx17/mimick/main/docs/screenshots/explore_page_view_showing_people_places_sidebar_on.png Explore page showing People, Places, and Things https://raw.githubusercontent.com/nicx17/mimick/main/docs/screenshots/selected_album_view_dark.png Selected album view in dark mode https://raw.githubusercontent.com/nicx17/mimick/main/docs/screenshots/lightbox_view_details_pane_on.png Lightbox viewer with details pane https://raw.githubusercontent.com/nicx17/mimick/main/docs/screenshots/search_view_with_thequickbrownfox_searched_ocr_mode.png OCR search for text inside images https://raw.githubusercontent.com/nicx17/mimick/main/docs/screenshots/library_view_showing_sync_album_dialog_upload_download_apply_cancel.png Album sync dialog with upload and download actions https://raw.githubusercontent.com/nicx17/mimick/main/docs/screenshots/settings_pane_showing_connnectivity_config_details.png Settings - Connectivity configuration https://raw.githubusercontent.com/nicx17/mimick/main/docs/screenshots/status_pane_sync_status_health_dashboard_actions.png Status page with sync health dashboard dev.nicx.mimick.desktop 360 keyboard pointing touch https://mimick.nicx.dev https://github.com/nicx17/mimick/issues https://github.com/nicx17/mimick https://github.com/sponsors/nicx17 https://github.com/nicx17 https://github.com/nicx17/mimick/wiki https://github.com/nicx17/mimick mimick Utility Network immich sync backup photos gallery
  • Lightbox drag-to-pan is now smooth when you are zoomed in.
  • API key permission help was updated to use the correct Immich permission names.
  • Face visibility filters in Explore let you show or hide unnamed and hidden people from the People row.
  • New Server Statistics dialog shows total assets, photos, videos, archived items, and people on your Immich server.
  • New RAW handling options in Settings — pick a fast embedded JPEG preview or a full sensor demosaic for the lightbox, with an optional decode cache.
  • RAW thumbnails now use the embedded JPEG preview for CR2, CR3, NEF, ARW, DNG, ORF, RAF, RW2, PEF and other formats, with correct orientation.
  • Swipe left or right in the lightbox to move between photos on touch and trackpad. Videos now show a poster with a play button when you navigate to them.
  • PSD, JPEG 2000 (.jp2), arithmetic-coded JPEG, complex WebP, and grayscale JPEG XL files now display in the lightbox.
  • XMP sidecar files next to your photos now upload alongside them. The .xmp companion is detected automatically. Toggle globally in Settings or per folder.
  • New press animations on header buttons, sidebar entries, grid tiles, settings rows, and dialogs.
  • The UI now works down to 360px wide — two-column grids and album layouts, fixed-height tiles, and a slimmer toolbar.
  • One "Clear Cache" button and a configurable disk size limit (default 2000 MB) now cover thumbnails, decoded RAWs, EXIF, and downloaded previews. Pruning only runs at startup.
  • Explore page loads faster on large libraries — People, Places, and Things fetch in parallel.
  • Lightbox slide transitions now wait for the new image to decode, and a loader appears for slow local RAW and TIFF decodes.

Each watch folder can now be set to one of three sync methods: Full (upload and download), Upload Only, or Download Only.Deletion mirroring is also available per folder, letting local file removals propagate to the remote album. Startup catch-up mode can now be configured independently on each folder.

This major update brings significant enhancements to the library viewing experience, including new lightbox image zoom capabilities, smooth slide animations, and dedicated back navigation. The Explore page has also been upgraded to show all of your geotagged locations, and asset timestamps now accurately reflect your local timezone.

Under the hood, Mimick has received massive performance improvements to handle larger libraries. Startup scans and thumbnail loading are now heavily parallelized, memory usage is strictly bounded with a new sliding window architecture, and quitting the application gracefully waits for active uploads to finish safely.

  • Added right-click context menu on grid assets with download, open-with, and delete actions gated by asset type and source.
  • Added sync status icons (cloud/computer/check) and centered video badge overlay on grid thumbnails.
  • Added auto-refresh to library surfaces after album creation, bulk delete, download completion, and album sync mutations.
  • Added queue inspector launchable from the library header bar.
  • Added settings save acknowledgement dialog on explicit save.
  • Fixed sync index being wiped on cache clear by migrating it to the persistent data directory.
  • Fixed Ctrl+click selection mode so it no longer skips the first asset.
  • Fixed local and unified views for linked albums to be scoped to the selected album's linked folder only.
  • Applied embedded EXIF orientation to thumbnails and lightbox images.
  • Fixed details pane to a static width with text constraints to prevent dynamic resizing.
  • Fixed grid view thumbnails to use a fixed width instead of expanding to fill available space.
  • Resized explore page places grid and album tab tiles to match explore page grid style.
  • Consolidated duplicate refresh buttons and added F5 keyboard shortcut for refresh.
  • Fixed startup view being forced to Settings when background sync is disabled; the correct default window now opens.
  • Fixed direct navigation between Album and Explore views, which previously required routing through Photos.
  • Fixed default folder name albums not auto-linking to the remote album and creating duplicate config entries on re-save.
  • Fixed folder-linking UI appearing on Explore and Album views when entered from an album context.
  • Fixed local asset count double-counting files reached via symlinks or duplicate paths in album sync.
  • Removed MESA_LOG_LEVEL=error from Flatpak manifests.
  • Added a built-in Library View to browse, search, and manage Immich assets directly in the app.
  • Introduced bidirectional Album Synchronization between local folders and remote albums.
  • Expanded search with Smart Search (CLIP), OCR, timeline, and EXIF metadata filters.
  • Optimized thumbnail rendering with ThumbHash for faster loading and smoother grid scrolling.
  • Revised background sync logic: the application now correctly exits when closed if background sync is disabled, and prompts for configuration on startup.
  • Moved the About section to the title bar for better accessibility and UI consistency.
  • Stream startup scan candidates into the upload queue to reduce memory churn.
  • Fetch albums on save and parse album responses into typed structs.
  • Use local time for quiet-hours and reduce unnecessary state cloning for performance.
  • Prevent auto-saving partial settings and avoid creating albums during inspection.
  • UI fixes: action button sizing, pause-label initialization, and install-card overflow.
  • Settings: Live auto-apply for most preferences (workers, quiet hours, folder rules, per-folder album selection, watch-folders). Connectivity fields (API key and server URLs) are now applied only when explicitly saved from the Connectivity section.
  • Single-batch sync summary notification: multiple concurrent upload workers now aggregate results and emit a single "processed" summary notification when a sync batch completes.
  • Flatpak packaging now targets the GNOME 50 runtime for current desktop compatibility.
  • GitHub Pages repository pipeline now dynamically generates a mimick.flatpakref file for one-click graphical installations.
  • Logging: Console output is colorized by level and file logs use a plain, machine-friendly formatter with automatic rotation.
  • Added a notification toggle to let users enable or disable app notifications.
  • Switched from secret-tool (libsecret CLI) to the pure-Rust oo7 crate for credential storage. Credentials are now stored in a portal-encrypted file inside the Flatpak sandbox, or in the system keyring on native installs. This fixes the user interaction failed error with Flatpak.
  • The .flatpakrepo now includes a RuntimeRepo directive for automatic GNOME Platform runtime resolution on systems without Flathub pre-configured.
  • Removed libsecret build dependencies and unnecessary D-Bus permissions from Flatpak manifests.
  • Removed hardcoded GSK_RENDERER=gl; GTK4 now auto-selects the best renderer.
  • Added MESA_LOG_LEVEL=error to Flatpak manifests to suppress harmless Mesa driver warnings.
  • Consolidated all documentation into the project wiki and removed local markdown files.
  • Fixed duplicate URL toggle validation handlers that could cause multiple error dialogs.
  • Added missing config fields to diagnostics export and summary.
  • Fixed Flatpak install failures on systems missing Flathub by default.
  • Migrated desktop notifications from the `notify-send` system command to native `gio::Notification`, fixing the issue where notifications would silently fail inside the Flatpak sandbox.
  • Notifications now correctly display the app's SVG icon natively via the XDG Notification Portal constraint.
  • Removed redundant async blocking wrappers (`tokio::task::spawn_blocking`) around notification dispatches, delegating instead directly to `glib::idle_add_once`.
  • Added `SingleMainWindow=true` to the `.desktop` launcher to better integrate with GNOME 50+ dock contexts preventing redundant "New Window" options.
  • Cleaned up redundant branch metadata keys in the Flatpak manifests to optimize build parsing.
  • Refined the "Startup Catch-up Mode" drop-down label length in the Settings UI so it no longer visually clips within its ComboRow box.
  • Fixed an internal GTK focus assertion error in the folder rules configuration dialog.
  • Fixed a bug where discarded failed uploads could leave a persistent "Pending: 1" ghost label across application restarts.
  • Promoted application repository to correctly advertise as a stable channel instead of beta.
  • Reconfigured the Flatpak repository builder workflow to deploy on new tag releases rather than on every push to the main branch.
  • Expanded supported media formats to match the latest Immich server compatibility list, including AVIF, BMP, HEIF, JPEG 2000, JPEG XL, PSD, SVG, 3GPP, AVI, FLV, M4V, Matroska (MKV), MP2T, MXF, and more.
  • The settings window now follows the desktop light and dark appearance preference at startup, and the status page uses a standard symbolic icon for more consistent rendering across icon themes.
  • Flatpak packaging now targets the GNOME 50 runtime for current desktop compatibility.
  • Fixed an Immich asset timestamp regression where newly uploaded files could land at the wrong timeline time or lose their intended timezone after server-side metadata processing.
  • Upload metadata handling now preserves filesystem-based creation times more reliably and reapplies the local timezone after upload so Immich keeps the correct asset date placement.
  • The settings window now uses Status and Settings pages, shows the first-run API-key guidance at the top of the configuration flow, and no longer forces dark mode.
  • Save & Restart has been replaced with live Save Changes behavior that updates the running API client, queue policy, upload worker count, and watched folders without relaunching Mimick.
  • Watch-folder changes now reconfigure the live filesystem monitor in place, so adding or removing folders takes effect immediately after saving.
  • Added a mobile-responsive UI refactor using adw::PreferencesWindow and adaptive gtk::FlowBox layouts for small screens.
  • Fixed critical offline sync stability bugs ("endless loop" and false progress reporting during network outages).
  • Introduced a health dashboard, per-folder queue status indicators, and actionable error messaging.
  • Added new user controls for upload concurrency, quiet hours, and safer startup catch-up modes to optimize disk I/O.
  • Improved desktop notifications with batch summaries and dedicated connectivity-lost alerts.
  • Enhanced the album picker with a searchable modal dialog and inline album creation.
  • Added queue inspection, retry controls, pause and resume actions, manual sync, diagnostics export, and per-folder upload rules.
  • Uploads can now defer automatically on metered connections or while the system is running on battery power.
  • Refined the settings window with separate Setup and Controls pages plus a persistent footer for the main actions.
  • Added a startup catch-up scan and a persistent local sync index so previously missed media can be queued on launch without reprocessing unchanged files.
  • Retargeted watch folders now reassociate unchanged files to the new album, and stale or deleted album mappings are refreshed automatically.
  • Improved troubleshooting with timestamped logs and a narrower Flatpak tray permission model.
  • Added signed .flatpakrepo and checksum assets to GitHub releases.
  • Signed the published Flatpak repository metadata and embedded the public key into generated repository files.
  • Added Run on Startup support for both Flatpak and native installs.
  • Switched Flatpak folder access to selected directories only through the file chooser portal.
  • Improved shutdown controls with working Save and Restart, explicit Close and Quit actions, and friendlier folder labels for portal-backed paths.

Complete rewrite in Rust + GTK4 + Libadwaita. Replaces the Python/PySide6 implementation with a lean, memory-safe daemon. Binary size drops from ~80MB to ~2MB. Concurrent upload workers, in-memory shared state, persistent file logging, and tray via StatusNotifierItem.