Features
What the app does today, and what's being considered next. Nothing below the first section is a promise: plans change, and the roadmap carries no dates on purpose.
Built
Libraries
- A library is any folder you choose as a Root, on an internal disk or an external drive. Keep as many as you like and switch between them from the sidebar.
- Each library's catalog lives in
_catalog/inside its Root: plain, append-only JSON Lines with paths relative to the Root. Corrections are added as new records, never edits, so the whole library moves with the drive and outlives the app. - Sandboxed: Latent only reaches the folders you grant it.
Scan and catalog
- Walks every subfolder and finds JPEG, PNG, HEIC, HEIF and RAW files (RAF, DNG, ARW, CR2, CR3, NEF).
- Each file is fingerprinted, so a rescan knows what's new, what moved and what changed, and only works on those.
- Three ways to run: Caption & Catalog, Catalog Only, or Caption Only for photos already cataloged. Pause, resume or cancel at any point.
- Camera, lens, ISO, focal length, film simulation and capture time are read from EXIF. Location is not read at all. Read EXIF fills in photos cataloged before this existed.
- Update Catalog notices files you renamed, moved or deleted outside Latent and records the change.
- Failed captions are set aside with the reason, and Retry Failed picks them up later.
On this Mac: Apple Vision
- Scene labels, an aesthetics score, and a flag for utility images (screenshots, receipts, documents), computed on-device during a scan.
- Optional text recognition, so a sign or a menu in a photo becomes searchable. Off by default.
- An image fingerprint for every photo, which is what Similar shots compares.
- Analyze on This Mac fills in photos cataloged before Vision was added.
- Vision's labels and text are handed to the caption and critique models as hints, marked as possibly wrong.
Models
- Pick a model per task (captions, critique and chat): Apple Intelligence on this Mac, a local model through Ollama or LM Studio, or Claude in the cloud with your own API key, kept in the Keychain.
- An editable fallback order per task, limited to on-device and local models. If your pick isn't available, Latent says which model it used instead and why. It never falls back to the cloud.
- Installed Ollama models are found automatically, and a short list of recommended vision models can be downloaded from Settings with progress shown.
- Built for local inference: generous timeouts, a cap on every reply so a model can't run on indefinitely, clear messages when a server isn't running or a model isn't installed, and retries that match how local models fail.
- Anything that would send data to the cloud asks first, every time.
Captions
- A caption and tags for every photo, one photo at a time with backoff, so a long run survives a slow model.
- Re-caption any photo with a model you choose, and keep every earlier caption with the model that wrote it. Restore one with a click.
The library
- A grid grouped by folder, sorted by name or date added, with search as you type across captions, tags, people, filenames, folders and Vision labels.
- An inspector with the caption and its history, editable tags, EXIF, what Vision saw, exact duplicates, and the latest critique with its posting priority.
- Similar shots: burst frames, near-duplicates and edits of the same photo, found by comparing Vision fingerprints on your Mac. Look in the photo's folder, the whole library, or every library you've cataloged, even ones on a disconnected drive. Each match shows how far apart the shots were taken.
- Space bar opens a Quick Look preview, arrow keys move through the grid, and
⌘Fjumps to search.
Critique
- Measured before it's judged: contrast, sharpness and colourfulness are computed from the pixels, and a soft or flat photo is flagged before any model sees it. Latent asks whether softness was intentional, and caps the photo's priority if it was.
- Per photo: genre and rendering, composition, light and tone, the decisive moment, strengths, one improvement, a comparative note and a posting priority (Top Candidate, Supporting or Archive).
- Treat a folder as a cohesive set for an overview, grid harmony, a posting sequence and a strategy summary, or as a mixed selection.
- Optional alt text and five hashtags per photo, and an optional direction, such as a photographer's style to critique against.
- Screenshots and documents get a lighter review and are archived without hashtags. If Apple Vision mistakes a photograph for one, mark it as a photograph in the Library or on its critique and it gets a full review.
- On-device and local models critique in two steps: they look at the photo first, then judge it from what they saw, with a shorter brief for small models. Claude gets the full critique in one step. The brief size can be set in Settings.
- Only new photos are critiqued by default. Latent tells you which photos a different model critiqued and lets you include them. A set is still judged as a whole using the earlier critiques, and when nothing is new it can update just the set.
- Re-critique a single photo from the Library or from its result card. If a model's reply can't be read, Latent says the critique failed and tries that photo again on the next run, instead of filing it as Archive.
- A readable
review.mdsaved beside the photos, and a durable record in the catalog so the Library shows each photo's priority and critiques from different models can be compared.
Chat
- Ask questions of every library you've cataloged, or just the ones you choose. New libraries are included automatically.
- Answers stream in, grounded in your catalog records, with the photos they drew on shown beneath and the ones they cite highlighted.
- Libraries on a disconnected drive can still be asked about, from Latent's local index.
Rename
- Proposals in the
folder_001style, ordered by capture time, shown before and after with a checkbox for each file. - Every rename is written to a journal before it happens, so an interrupted batch recovers cleanly, and the last batch can be undone.
Exports
Plain-file copies of a library's catalog for other apps, written to _catalog/ when you ask. Latent never reads them itself: its Library and Chat search the catalog directly. The Exports pane explains each file and tells you when the catalog has changed since you last generated them.
- Read or share:
catalog.md, a table of every photo with its caption, tags, what Apple Vision saw and its critique priority; andcatalog.json, the same as structured data with EXIF, Vision signals and the latest critique, for scripts and spreadsheets. - Use in another chat app:
chat_context.md, a compact list to paste or attach in a chat app such as Ollama's or LM Studio's; andchat_context.jsonl, the same one record per line for tools that load documents for retrieval. - Advanced, fine-tuning:
training_data.jsonl, caption examples in ChatML format to teach a local model to caption like your catalog. - Exports never contain location, because Latent doesn't read GPS from your photos.
Working in the background
- Scans, critiques and chat replies keep running while you move around the app. A status bar shows progress from any pane.
- A notification when a job finishes or needs an answer while you're looking elsewhere, and a confirmation before quitting or switching library would stop one.
The Mac around it
- Dark, light or follow the system, in the same bottle green and brass throughout, with text contrast that meets accessibility guidelines.
- Keyboard shortcuts for every pane (
⌘1–⌘6), Start Scan (⌘R) and Stop (⌘.), a proper Settings window (⌘,), and VoiceOver labels throughout.
On the roadmap
Smarter Chat
Find photos by meaning as well as by words, fit more of your archive into each answer for smaller on-device models, and open a cited photo straight in the Library.
A chat model that knows your archive
Fine-tune a local model on your own catalog, entirely on your Mac, and use it for Chat. Answers would still be grounded in the catalog records.
Mix models in a critique
Let one model look at the photo and another judge it and plan the set, and offer to re-run a thin critique of a single photo on a stronger model, with your confirmation.