# Rollfilm > Rollfilm is a free, open-source desktop app for macOS, Windows and Linux that imports, > organizes, searches and edits a photo library kept on your own computer. It reads RAW files, > finds photos from a plain-language description using a local AI model, builds smart albums, > maps geotagged photos, includes a non-destructive editor, and can mirror the library to a > self-hosted Immich server. There is no account, no subscription and no cloud service. Homepage: https://rollfilm.org/ Source code: https://github.com/pasqualkreher/Rollfilm Downloads: https://github.com/pasqualkreher/Rollfilm/releases/latest Author: Pasqual Kreher (https://github.com/pasqualkreher) Licence: MIT Price: free Current version: 0.1.2 Status: early but usable. Import, library, search and Immich sync are solid; the photo editor is experimental and is best described as a fun extra rather than a finished feature. ## What it does - **Import**: copy photos in from an SD card, a camera or a folder through a three-step wizard (choose, review and select, in your library). Nothing enters the library until you confirm. Near-duplicates are detected with perceptual hashes before any file is copied. EXIF is read with ExifTool and GPS coordinates are reverse-geocoded to a country and place. - **Organize**: albums, star ratings, colour labels, tags with bulk tagging, a Selects list for keepers, and a trash with configurable retention. RAW and JPEG siblings are shown as one tile. - **Find**: natural-language search ("sunset at the beach", "dog in the snow") powered by a local CLIP model with embeddings in SQLite via sqlite-vec, plus image-to-image similarity search, filters for album, rating, colour, tag, camera, lens, a focal-length range and date (the options narrow each other), and a timeline scrubber. - **Smart albums**: automatic collections above your own albums, computed from the library and never stored as real albums. Sections can be switched on individually: Moments (groups of visually similar photos), Places (within a radius you set), Countries, Countries by year, Big days, Years, Months and Edited. - **Map**: a Leaflet map of every geotagged photo, clustered when zoomed out, individual pins on the street when zoomed in. - **Edit** (experimental): non-destructive develop with transform, twelve film simulations, tone and curves, colour mixer and four colour grading wheels, details (sharpness, clarity, dehaze, noise reduction, chromatic aberration), effects (grain, vignette, diffusion, matte frame), and radial, linear, brush, luminance and colour masks. Rendering happens in the app's own backend, so the preview matches the export exactly. Save over the photo or save a copy. An optional "Auto" button suggests settings learned from edits you saved before, using a local CLIP nearest-neighbour recommender with no training step and no cloud. - **External sources**: index a folder in place, for example on a NAS, read-only, without copying anything into the managed library. - **Appearance**: three light/dark skin pairs (Graphite, Slate, Ink) with a Light, Dark or Auto switch that follows the system. - **Guided tour**: an eleven-step "Show me around" walkthrough of the settings. - **Export**: download the original, export a single photo, or export a whole Selects list as a ZIP. ## Immich integration Rollfilm can mirror a locally managed library to an existing Immich server (https://immich.app). The Immich host and API key are entered in the app under Settings and stored in its database, not in config files or environment variables. - Sync modes: **ask on import** (checkbox during import plus manual "Add to Immich" buttons), **selective sync** (only the photos and albums you flag), **full sync** (every imported JPEG and every album mirrored automatically). - A background reconciliation loop runs at startup and every 60 seconds: it uploads missing assets, backfills asset IDs by checksum so Immich deduplicates correctly, mirrors albums, and passes deletions on through a durable pending-deletion queue. Failures back off exponentially. - Only JPEGs are uploaded. RAW files always stay in the local library. - Automatic sync can be paused, which is useful on mobile data or another metered connection. - The local library always remains the source of truth; Immich mirrors the visible library. ## Where the data lives Photos live in a library folder you choose on first start. The database, thumbnails and import staging live in a hidden `.photomanager` subfolder inside it, so the library is self-contained and moves with the folder. Pointing the app at a different folder switches to that library. Cloud-synced folders (iCloud, Nextcloud) and exFAT/NTFS drives are handled. No telemetry, no analytics, no account. The only network access is a one-off search-model download on first start and your own Immich server if you configure one. ## Platforms and install | Platform | File | Note | | --- | --- | --- | | macOS (Apple Silicon) | `Rollfilm--arm64.dmg` | Not signed yet, so macOS calls it damaged and the dialog's only button is Move to Trash: choose Cancel. Move it to /Applications and run `xattr -dr com.apple.quarantine "/Applications/Rollfilm.app"`; that is the only way through, and it has to be repeated after every update because the marker comes with each new download. Privacy & Security shows no Open Anyway button for an unsigned app, and right-click then Open was removed in macOS Sequoia. | | Windows 10 or later | `Rollfilm Setup .exe` | SmartScreen may warn about an unknown publisher: More info, then Run anyway. | | Linux | `Rollfilm-.AppImage` | Make it executable and run it. | No server, no Docker, no self-hosting setup. It is installed like any other desktop program. ## How it compares - Versus **Lightroom**: same path from memory card to an organized, edited library, but Rollfilm is a small personal project. Library, search and organizing are solid; the develop module is experimental and not a Lightroom replacement. - Versus **Apple Photos / Google Photos**: no cloud, no account, runs on macOS, Windows and Linux, and your files stay in a plain folder you control. - Versus **Immich / PhotoPrism**: those are self-hosted servers. Rollfilm is a desktop app with nothing to host, and it complements Immich rather than replacing it: it can push a local library to an Immich server you already run. ## Technology Backend: Python 3.11+, FastAPI, SQLAlchemy 2.0, Alembic, SQLite with sqlite-vec. ML and imaging: OpenCLIP (ViT-B-32), Pillow, rawpy, OpenCV, ImageHash, ExifTool. Frontend: React 18, TypeScript, Vite, TanStack Query, Leaflet. Desktop shell: Electron with electron-builder; the backend is bundled with PyInstaller. ## Known limitations - The photo editor is experimental. - Single local user, no accounts and no sharing. - The app is not code-signed on macOS or Windows yet. - No test suite yet. ## Links - [Homepage and screenshots](https://rollfilm.org/) - [Download the latest release](https://github.com/pasqualkreher/Rollfilm/releases/latest) - [Source code and README](https://github.com/pasqualkreher/Rollfilm) - [Report an issue](https://github.com/pasqualkreher/Rollfilm/issues) - [Immich](https://immich.app) - [Imprint](https://rollfilm.org/impressum.html) - [Privacy policy](https://rollfilm.org/datenschutz.html)