★ Star on GitHub

Documentation

LUMORA guide

Task-first workflows for a local memory library — find receipts, rediscover trips, clean duplicates — without sending photos anywhere.

Workflows

Users think in tasks. Not features.

Find receipts

  1. Enable OCR
  2. Index library
  3. Search: receipt

Find vacation photos

  1. Search: beach sunset
  2. Or try family vacation / mountain hike

Remove duplicates

  1. Open Duplicates
  2. Review matches
  3. Keep best version

Rediscover old memories

  1. Open Memories
  2. Browse events
  3. Explore Timeline

Search cookbook

Example natural-language queries (CLIP installed):

  • dog running
  • birthday party
  • beach sunset
  • snow mountain
  • pizza
  • family picnic
  • wedding

Install & run

Prefer a ready-made build? Use the Install & usage page or Download for platform installers.

To build from source you need Bun, a stable Rust toolchain, and (on macOS) Xcode Command Line Tools.

bun install
bun run tauri dev      # desktop app + Vite
bun run tauri build    # release bundle
  • Ensure ~/.cargo/bin is on your PATH.
  • For video thumbnails, install ffmpeg / ffprobe so they are on PATH. Without them, videos still import; thumbs fall back to a placeholder.
  • Contributor notes live in CONTRIBUTING.md; architecture decisions in docs/adr/.

Import your library

  1. Open HomeImport photos, or drop a folder onto the window.
  2. Originals stay on disk. LUMORA stores metadata, thumbs, and optional AI data in app data.
  3. Add Watched folders so new files appear automatically (Settings → Library, or the Watched folders view).
  4. Import timing is logged locally (Activity + Developer → import analytics). Nothing is uploaded.

Browse & organise

  • Library — virtualised grid of everything.
  • Timeline — year / month browsing.
  • Albums — manual collections; drag photos in.
  • Tags, ratings, colour labels, favourites — from the selection bar or viewer.
  • Smart collections — Videos, RAW, Screenshots (path contains “screenshot”), Selfies, Panoramas, Documents, Receipts.
  • Open the info panel on any item for EXIF, tags, auto-tags, captions, faces, and OCR text.

On-device AI

All models are optional. Install them from Settings → AI. Downloads are user-initiated and checksum-verified.

Semantic search
CLIP ViT-B/32 — find by description.
OCR
PaddleOCR PP-OCRv5 (default) or PP-OCRv6 small — text in screenshots and documents. Older RapidOCR PP-OCRv4 / v3 remain available in the model library.
Faces / People
InsightFace (buffalo_l / buffalo_s). Only faces that are ≥80% in-frame and ≥80% front-facing are kept. Name, merge, ignore in People.
Auto-tags
MobileNetV4 ImageNet labels. Shown in the info panel and searchable. Enable Object detection / auto-tags.
Image captions
Florence-2 Base — short on-device descriptions. Shown in the info panel and searchable. Enable Image captions (~277 MB download).
Model library
Switch backends per capability, install the active option, and re-run processing when you change models. For Auto-tags and Semantic search you can also Import local model… — pick ONNX files from disk; LUMORA evaluates compatibility and only installs if the graph matches. (Browsing Hugging Face from the app is not available yet.)

You can clear embeddings, OCR, faces, auto-tags, or captions anytime without deleting original files.

Duplicates & blurry cleanup

Open Duplicates in the sidebar. Sections are collapsible so you can scan quickly.

  • Exact — identical SHA-256. Use Clean up all exact — keep 1 per group, or keep a specific file per group.
  • Near — perceptual aHash with Hamming ≤ 2. Review each group; there is no bulk delete for near matches (false positives can still happen with a coarse hash).
  • Blurry — Laplacian variance ≤ 80. Trash one or trash all listed after review. Soft-focus portraits can score low too.

Everything goes to Trash first — restore or undo with ⌘Z / Ctrl+Z.

Places & people

  • Places groups photos by GPS EXIF using offline reverse geocoding (bundled GeoNames) and shows them on an offline geometry map. No map tile network calls.
  • People lists face clusters after face models are installed. Name people to make them searchable.

Encrypted vault

Move private items into the Locked folder. Keys use Argon2id; content uses XChaCha20-Poly1305. Store your recovery code safely — it is the only unlock path if you forget the password.

Privacy defaults

  • No telemetry, analytics, or cloud photo APIs.
  • Network is used when you download models you chose, and optionally when checking for app updates (Settings → Updates).
  • Diagnostic logs stay on disk (Developer page).
  • Derived AI data is rebuildable and deletable; originals stay put.

FAQ

Is internet required?

Not for day-to-day use. You need the network to download the app (and optional AI models). After that, indexing and search work offline.

Can photos leave my device?

No. LUMORA indexes files in place. There is no cloud upload of your photo library.

Does AI run locally?

Yes. CLIP, OCR, faces, and auto-tags run on-device via ONNX when you install them.

Can AI be disabled?

Yes. Models are optional. You can skip install, or delete derived data later from Settings → AI — originals are untouched.

How much RAM is required?

A modern CPU is enough for a basic library. Plan ~8GB RAM for OCR comfort and ~16GB if you run face recognition heavily. See system requirements.

Keyboard shortcuts

Key Action
Click Open media viewer
Space Toggle / close viewer
← / → Previous / next in viewer
= / − / 0 Zoom in / out / reset in viewer (0 resets only while zoomed)
F Favourite selection or open item
0–5 Rate selection or open item
⌘A / Ctrl+A Select all visible
Delete Soft-delete (or restore in Trash)
⌘Z / Ctrl+Z Undo
⌘⇧Z / Ctrl+Y Redo
Esc Close viewer / clear selection

Next steps

Building from source or sending a pull request? See CONTRIBUTING.md and the README.