macOS 14+ · 네이티브 · 비파괴

사진 수만 장,
한 곳에서 가볍게.

로컬 · NAS · Apple Photos를 하나의 빠른 네이티브 앱에서.
67,000장 라이브러리로 검증된 macOS 사진 뷰어 & 매니저.

다운로드

Apple Silicon · Intel · 오픈소스(MIT)

Lumen 그리드 — 대용량 사진 라이브러리

왜 Lumen인가

사진앱은 NAS를 못 보고,
대부분의 뷰어는 6만 장에서 버벅댑니다.

대용량에 진심

67,000장 NAS 라이브러리로 매일 실사용 테스트. 폴더 열기 평균 1ms, 시작하면 로딩 화면 없이 바로 사진이 보입니다.

🗂️

모든 소스를 한 곳에

로컬 폴더, NAS, 그리고 Apple Photos(iCloud)까지 한 창에서. 사진앱이 못 보는 NAS와, 뷰어가 못 보는 iCloud를 동시에.

🛡️

비파괴가 기본

크롭·리사이즈·회전·합치기·워터마크까지 전부 새 파일로 저장해 원본을 보존합니다(덮어쓰기는 확인 후 선택). 즐겨찾기·태그·별점은 원본과 분리 저장.

기능

보고, 찾고, 정리하고, 다듬는 데 필요한 전부

로컬 · NAS · Apple Photos를 한 곳에

흩어진 사진을 하나의 사이드바에서. iCloud 전용 사진은 필요할 때만 내려받고, GPS 사진은 지도에 클러스터로 묶어 보여줍니다.

  • 로컬 폴더 · NAS · Apple Photos(iCloud) · iCloud Drive
  • 지도 핀 클러스터링 — 수만 장도 줌별로 묶고 펼침
  • 실시간 폴더 감시(FSEvents) · 증분 캐시 · 온디맨드 다운로드
Lumen 지도 — 클러스터링 + Apple Photos 연동

몰입형 뷰어 · Space로 퀵 리뷰

풀스크린으로 몰입. 그리고 사진가를 위한 가장 빠른 컬링 동작:

  • Space = 즐겨찾기 + 바로 다음 사진 — 손 안 떼고 수천 장을 순식간에 리뷰
  • 키보드 컬링: 별점 1–5 · 즐겨찾기(F) · 거부(X) — 그리드·뷰어 어디서나. 거부 숨김 필터로 골라낸 컷만
  • 좌우 썸네일 미리보기 · EXIF 오버레이 · 2장 비교 · 슬라이드쇼 · 줌/팬
Lumen 뷰어 — Space로 빠른 컬링
✂️

가벼운 비파괴 편집

크롭(비율 고정·자유) · 회전/뒤집기 · 수평 맞추기 · 리사이즈/정사각 캔버스(여백 채움). 큰 편집창에서 줌·정밀 크롭, 결과 크기 미리보기까지. 전부 새 파일로.

🧩

합치기 & 워터마크

여러 장을 가로/세로/그리드로 한 장에(드래그로 순서·행 지정). 텍스트·로고 워터마크(위치·색·투명도) — 편집·합치기·배치 어디서나.

🚀

배치 처리

여러 장을 한 번에 같은 크기·캔버스·워터마크로 리사이즈해 폴더로 내보내기. 원본은 그대로.

🏷️

비파괴 정리

앨범 · 태그 · 별점 · 색상 라벨 · 거부 플래그 · 스마트 모음(즐겨찾기·최근·오늘·중복). 원본은 절대 변경하지 않습니다.

🗑️

안전한 삭제 + 되돌리기

휴지통이 없는 NAS 볼륨에서도 영구 삭제 대신 숨김 .LumenTrash로 옮겨 30일 보관. 모든 삭제 직후 10초 되돌리기로 파일·별점·앨범까지 원위치.

🔍

검색 & 필터

파일명 · 태그 · 카메라 모델 검색. 별점 · 라벨 · 위치 · 카메라(예: SONY) · 거부 숨김으로 필터.

📤

공유 · 내보내기

시스템 공유, 원본/리사이즈/zip 내보내기, 일괄 이름변경, 배경화면 설정.

성능

대용량 라이브러리를 위해 설계

어떤 폴더든 즉시 열리고, 앱을 켜면 바로 사진이 보입니다. 전부 아래 표의 실측값으로 말합니다.

67K
장 라이브러리로 매일 실사용
1ms
폴더 열기 (644개 폴더 평균)
0
시작 로딩 화면 — 켜면 바로 그리드
2-tier
메모리+디스크 캐시 (재실행 유지)

실측 환경 — 사진 67,676장 · 폴더 638개 · Synology NAS(SMB) · Apple Silicon. 합성 벤치마크가 아니라 실제 라이브러리에서 자동화 시나리오로 측정한 값입니다.

테스트결과
앱 시작 → 썸네일까지 채워진 그리드창 등장 후 1~2프레임 (로딩 화면 없음)
라이브러리 캐시 디코드 (67,676장)~100 ms
폴더 열기 — 폴더·앨범 644개 전부 순회평균 1 ms · p95 3 ms · 최대 9 ms
실행 직후 첫 폴더 클릭~4 ms
사진 클릭 → 정보 패널 갱신~3 ms
전체 선택 (⌘A, 67,676장)~0.2 초
검색 — 67k장 필터+정렬메인 스레드 차단 0 (백그라운드 처리)
앨범에 대량 추가 (2만 장 앨범 + 1만 장)~0.2 초
앨범에서 대량 제거 (2만 장 중 1만)17 ms
즐겨찾기/별점 대량 적용 (2만 장)~0.4 초 (단일 트랜잭션)
썸네일 크기 조절 · 창 리사이즈멈춤 없음 (GPU 스케일)
앱 크기설치 10 MB · 다운로드 3.5 MB
메모리 (67k 라이브러리 탐색)~240 MB · 풀사이즈 뷰어 탐색 후 ~380 MB (캐시 상한으로 바운드)
CPU유휴 0.0% · 58k 폴더 연속 스크롤 16–27%
힙 분석 (leaks/heap)앱 코드 메모리 누수 0

측정 방법: 메인 스레드 히치 모니터(120Hz) + 프레임 단위 화면 캡처 + 프로파일러 샘플링, v0.4.0 기준. 과정은 릴리즈 노트에 그대로 적혀 있습니다.

메모이즈된 목록 · 폴더 인덱스 · 디바운스 내비게이션 · 백그라운드 썸네일 워밍 · 지연 EXIF 인덱싱 · 점진적 이미지 로딩

안정성

사진을 잃지 않도록 설계

대형 라이브러리를 매일 다루는 도구의 첫 번째 약속은 "내 사진과 정리 결과가 안전하다"입니다.

🛡️

실수해도 되돌릴 수 있게

모든 삭제에 10초 되돌리기. NAS처럼 휴지통이 없는 볼륨도 영구 삭제 대신 .LumenTrash30일 보관. 원본 파일은 어떤 기능도 변경하지 않습니다.

🧱

무너지지 않게

메모리 누수 0 · 캐시 상한으로 OOM 방지. 0바이트·손상 파일, 심링크 루프, 유니코드·초장문 파일명까지 안전하게 처리합니다.

말이 아니라 테스트로

111개 자동화 테스트로 매 변경을 검증하고, 실제 6.7만 장 NAS 라이브러리에서 매일 씁니다. 메타데이터 저장이 실패하면 조용히 넘어가지 않고 바로 알려줍니다.

프라이버시

사진은 기기를 떠나지 않습니다

Lumen의 네트워크 연결은 딱 두 가지 — 하루 한 번 GitHub 업데이트 확인, 그리고 여러분이 직접 연 NAS·iCloud 콘텐츠. 그게 전부입니다.

🚫

추적 없음

분석 도구 · 텔레메트리 · 계정 · 광고 0. 업로드되는 사진도 0. 서버 자체가 없습니다.

💾

내 데이터는 내 Mac에

별점 · 태그 · 앨범은 로컬 SQLite 파일 하나에 저장됩니다. 원본 사진 파일은 절대 수정하지 않습니다.

🛟

크래시 리포트도 로컬

혹시 크래시가 나도 버전·스택 정보만 내 Mac에 저장되고, GitHub로 보낼지는 다음 실행 때 직접 선택합니다. 자동 전송 없음 · 파일 경로나 사진 정보는 담기지 않습니다.

🔍

말이 아니라 코드로

오픈소스(MIT)라 위 주장 전부를 코드에서 직접 확인할 수 있습니다.

다운로드

지금 바로 시작

Homebrew로 설치 · macOS 14(Sonoma) 이상 · 무료

brew tap rescenedev/tap brew trust --cask rescenedev/tap/lumen-photos brew install --cask lumen-photos
현재는 노타라이즈되지 않은 빌드라 첫 실행 시 Gatekeeper가 막을 수 있습니다. 아래 명령으로 격리 속성을 제거하거나(권장), 시스템 설정 → 개인정보 보호 및 보안 맨 아래의 "확인 없이 열기"로 허용해 주세요:
xattr -dr com.apple.quarantine "/Applications/Lumen.app"
소스로 빌드: git clone./Scripts/make_app.sh — Xcode 불필요, Command Line Tools만.