v0.5.1Now notarized by Apple — launches right away →

Tens of thousands
of photos. One fast app.

Local · NAS · Apple Photos in one fast, native app.
Proven daily on a 67,000-photo library.

Download

macOS 14+ · Apple Silicon & Intel · Native · Open Source (MIT)

Lumen grid — large photo library

Why Lumen

Photos.app can't see your NAS.
Most viewers choke at 60,000 photos.

Built for large libraries

Tested daily against a 67,000-photo NAS library. Folders open in 1 ms on average, and launch shows your photos immediately — no loading screen.

🗂️

All sources, one place

Local folders, NAS, and Apple Photos (iCloud) side-by-side in a single window. The gap Photos.app and generic viewers leave — filled.

🛡️

Non-destructive by default

Crop · resize · rotate · merge · watermark — all saved as new files, originals untouched (overwrite is opt-in). Favorites, tags, and ratings are stored separately from the source files.

Features

Everything you need to view, find,
organize, and refine

Local · NAS · Apple Photos in one sidebar

All your scattered photos in one place. iCloud-only photos download on demand; GPS photos cluster on a map by zoom level.

  • Local folders · NAS · Apple Photos (iCloud) · iCloud Drive
  • Map pin clustering — zoom in/out to expand or collapse thousands of pins
  • Live folder watching (FSEvents) · incremental cache · on-demand download
Lumen map — clustering + Apple Photos integration

Immersive viewer · Space-key quick cull

Go full-screen and stay there. The fastest culling flow for photographers:

  • Space = favorite + advance — cull thousands of shots without lifting a hand
  • Keyboard culling: star ratings 1–5 · favorite (F) · reject (X) — works in grid and viewer. Hide rejected photos to see only the keepers.
  • Thumbnail strip · EXIF overlay · 2-up compare · slideshow · zoom & pan
Lumen viewer — Space-key quick cull
✂️

Lightweight non-destructive editing

Crop (free or locked ratio) · rotate / flip · straighten · resize / square canvas (letterbox fill). Large edit canvas with zoom and precision crop, output-size preview. Always a new file.

🧩

Merge & watermark

Combine multiple photos horizontally, vertically, or in a grid (drag to reorder, set rows). Text or logo watermarks (position · color · opacity) — in the editor, merge tool, and batch export.

🚀

Batch processing

Resize, apply canvas rules, and stamp watermarks across many photos at once and export to a folder. Originals stay untouched.

🏷️

Non-destructive organization

Albums · tags · star ratings · color labels · reject flag · smart collections (favorites, recent, today, duplicates). Originals never modified.

🗑️

Safe delete + undo

Even on a NAS volume with no Trash, deletes move to a hidden .LumenTrash kept for 30 days instead of vanishing. Every delete gets a 10-second Undo that restores the files, ratings, and album memberships.

🔍

Search & filter

Search by filename, tag, or camera model. Filter by star rating, label, location, camera (e.g. SONY), and hide-rejected toggle.

📤

Share & export

System share sheet, export original / resized / zip, bulk rename, set as desktop wallpaper.

Performance

Designed for large libraries

Every folder opens instantly, and your photos are on screen the moment the app is. The table below is all measured, not promised.

67K
photos in daily real-world use
1ms
average folder open (644 folders)
0
loading screens — launch straight into the grid
2-tier
memory + disk cache (survives relaunch)

Measured on the real library — 66,849 photos · 632 folders · external USB storage · Apple Silicon · v0.5.3. Not synthetic benchmarks: numbers come from an in-app instrumentation probe.

TestResult
App launch → photo list ready~0.47 s (no loading screen — the grid is just there)
Folder open — all 632 folders sweptavg 0.6 ms · p95 1.1 ms · max 1.3 ms
Select all (⌘A, 66,849 photos)~20 ms
Search — filter+sort 66.8k photosmain-thread blocking: 0 (processed in background)
Thumbnail size / window resizeNo stalls (GPU scaling)
App size10 MB installed · 3.5 MB download
Memory (66.8k library, idle)~394 MB · returns within seconds after scroll bursts (bounded by cache caps)
CPUIdle 0.0%

Methodology: in-app instrumentation probe (full folder sweep, main-thread cost timing) + process sampling, as of v0.5.3. The process is documented in the release notes.

Memoized lists · folder index · debounced navigation · background thumbnail warming · lazy EXIF indexing · progressive image loading

Reliability

Built so you never lose a photo

A tool you run on a huge library every day owes you one promise first: your photos and your organizing work are safe.

🛡️

Mistakes are reversible

Every delete gets a 10-second Undo. On a NAS or any volume with no Trash, files move to .LumenTrash for 30 days instead of vanishing. No feature ever modifies your original files.

🧱

It doesn't fall over

Zero memory leaks · cache limits prevent OOM. Zero-byte and corrupt files, symlink loops, unicode and very long filenames are all handled safely.

Tested, not promised

312 automated tests gate every change, and it runs daily on a real 67k-photo NAS library. If a metadata write fails, it tells you instead of silently dropping it.

Privacy

Your photos never leave your machine

Lumen makes exactly two kinds of network connections — a once-a-day update check against GitHub, and the NAS/iCloud content you open yourself. That's it.

🚫

No tracking

Zero analytics, telemetry, accounts, or ads. Zero photos uploaded. There is no server.

💾

Your data stays on your Mac

Ratings, tags, and albums live in a single local SQLite file. Your original photo files are never modified.

🛟

Crash reports stay local too

If it ever crashes, only the version and stack trace are saved to your Mac; whether to send it as a GitHub issue is your choice on the next launch. Nothing is sent automatically — no file paths or photo data are included.

🔍

Verifiable, not promised

It's open source (MIT) — every claim above is checkable in the code.

Download

Get started in seconds

Install via Homebrew · macOS 14 (Sonoma) or later · Free

brew tap rescenedev/tap brew trust --cask rescenedev/tap/lumen-photos brew install --cask lumen-photos
✓ Developer ID signed + notarized by Apple (since v0.5.1) — no workarounds, it launches right after download.
Also available: zip from the latest release · Build from source: git clone the repo, then run ./Scripts/make_app.sh — no Xcode needed, just Command Line Tools.