로컬 · NAS · Apple Photos를 하나의 빠른 네이티브 앱에서.
67,000장 라이브러리로 검증된 macOS 사진 뷰어 & 매니저.
Apple Silicon · Intel · 오픈소스(MIT)
왜 Lumen인가
67,000장 NAS 라이브러리로 매일 실사용 테스트. 폴더 열기 평균 1ms, 시작하면 로딩 화면 없이 바로 사진이 보입니다.
로컬 폴더, NAS, 그리고 Apple Photos(iCloud)까지 한 창에서. 사진앱이 못 보는 NAS와, 뷰어가 못 보는 iCloud를 동시에.
크롭·리사이즈·회전·합치기·워터마크까지 전부 새 파일로 저장해 원본을 보존합니다(덮어쓰기는 확인 후 선택). 즐겨찾기·태그·별점은 원본과 분리 저장.
기능
흩어진 사진을 하나의 사이드바에서. iCloud 전용 사진은 필요할 때만 내려받고, GPS 사진은 지도에 클러스터로 묶어 보여줍니다.
풀스크린으로 몰입. 그리고 사진가를 위한 가장 빠른 컬링 동작:
크롭(비율 고정·자유) · 회전/뒤집기 · 수평 맞추기 · 리사이즈/정사각 캔버스(여백 채움). 큰 편집창에서 줌·정밀 크롭, 결과 크기 미리보기까지. 전부 새 파일로.
여러 장을 가로/세로/그리드로 한 장에(드래그로 순서·행 지정). 텍스트·로고 워터마크(위치·색·투명도) — 편집·합치기·배치 어디서나.
여러 장을 한 번에 같은 크기·캔버스·워터마크로 리사이즈해 폴더로 내보내기. 원본은 그대로.
앨범 · 태그 · 별점 · 색상 라벨 · 거부 플래그 · 스마트 모음(즐겨찾기·최근·오늘·중복). 원본은 절대 변경하지 않습니다.
휴지통이 없는 NAS 볼륨에서도 영구 삭제 대신 숨김 .LumenTrash로 옮겨 30일 보관. 모든 삭제 직후 10초 되돌리기로 파일·별점·앨범까지 원위치.
파일명 · 태그 · 카메라 모델 검색. 별점 · 라벨 · 위치 · 카메라(예: SONY) · 거부 숨김으로 필터.
시스템 공유, 원본/리사이즈/zip 내보내기, 일괄 이름변경, 배경화면 설정.
성능
어떤 폴더든 즉시 열리고, 앱을 켜면 바로 사진이 보입니다. 전부 아래 표의 실측값으로 말합니다.
실측 환경 — 사진 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처럼 휴지통이 없는 볼륨도 영구 삭제 대신 .LumenTrash로 30일 보관. 원본 파일은 어떤 기능도 변경하지 않습니다.
메모리 누수 0 · 캐시 상한으로 OOM 방지. 0바이트·손상 파일, 심링크 루프, 유니코드·초장문 파일명까지 안전하게 처리합니다.
111개 자동화 테스트로 매 변경을 검증하고, 실제 6.7만 장 NAS 라이브러리에서 매일 씁니다. 메타데이터 저장이 실패하면 조용히 넘어가지 않고 바로 알려줍니다.
프라이버시
Lumen의 네트워크 연결은 딱 두 가지 — 하루 한 번 GitHub 업데이트 확인, 그리고 여러분이 직접 연 NAS·iCloud 콘텐츠. 그게 전부입니다.
분석 도구 · 텔레메트리 · 계정 · 광고 0. 업로드되는 사진도 0. 서버 자체가 없습니다.
별점 · 태그 · 앨범은 로컬 SQLite 파일 하나에 저장됩니다. 원본 사진 파일은 절대 수정하지 않습니다.
혹시 크래시가 나도 버전·스택 정보만 내 Mac에 저장되고, GitHub로 보낼지는 다음 실행 때 직접 선택합니다. 자동 전송 없음 · 파일 경로나 사진 정보는 담기지 않습니다.
다운로드
Homebrew로 설치 · macOS 14(Sonoma) 이상 · 무료
brew tap rescenedev/tap
brew trust --cask rescenedev/tap/lumen-photos
brew install --cask lumen-photos
xattr -dr com.apple.quarantine "/Applications/Lumen.app"
git clone 후 ./Scripts/make_app.sh — Xcode 불필요, Command Line Tools만.