Focale
A manual camera and a photo library that answers questions
Two products that save each other: photos taken in Focale arrive already understood, and your old library catches up in the background — Vision on everything, Foundation Models on candidates only, nothing ever leaving the device.
37
Swift files, 4,554 lines
2
indexing tiers (Vision + FM)
< 50 ms
shutter-path target
100%
on-device — no cloud path
4
TestFlight builds shipped
0
photos duplicated or modified
Overview
Focale is two products in one. First, a manual camera worth using on its own: ISO, shutter speed, focus, white balance, exposure compensation, and zoom — every control verified against the hardware before it is shown, so there is never a dead button. ProRAW, lens selection, self-timer, recipes (named presets exportable as .focalerecipe files), and three reassignable gesture layouts. The shutter is sacred: no inference, no disk, no allocation in the trigger path.
Second, a searchable photo library. At capture time Focale records context at zero inference cost — active recipe, declared project, manual settings, scene signal, coarse location — and writes it into the photo's EXIF metadata without re-encoding, so the information survives even if the app is uninstalled. Indexing is two-tier: Vision runs on everything (OCR, visual fingerprints, classification), while Foundation Models touches only photos that earn it — because 40,000 photos at 1–3 s each is 11–33 hours of compute.
Search is natural language — "the garage receipt from last fall" becomes a structured filter executed instantly against the local database. The model parses the query, never the photos. Living albums are defined by a query and fill themselves; "similar photos" uses fingerprint distance with zero LLM. Generated content is always badged, OCR beats the model for any number, and indexing progress is honest. Nothing leaves the device — no photo duplicated, moved, or modified.
Key Features
True manual controls
ISO, shutter, focus, white balance, EV, zoom — each verified against the hardware before display. ProRAW, lens choice, flash, timer, rule-of-thirds grid.
Recipes & layouts
Complete named presets recallable in one gesture and shareable as .focalerecipe files, plus three interface profiles with fully reassignable gestures.
Capture context in EXIF
Recipe, project, settings, scene signal, and coarse location recorded at zero inference cost — written into the photo's own metadata, not just a database.
Two-tier indexing
Tier 1 Vision on everything: OCR, visual fingerprints, classification. Tier 2 Foundation Models only on candidates — the calculation that keeps 40,000 photos tractable.
Natural-language search
"The garage receipt from last fall" → a structured filter run instantly on the local index. The model parses the query, never the photos.
Living albums
Albums defined by a query that fill themselves, creatable from any search — plus similar-photos by fingerprint distance, zero LLM.
How It Works
Keep the shutter sacred
No inference, no disk write, no allocation in the trigger path — screen blink and immediate haptic, with a sub-50 ms response target.
Record context for free
At capture, the active recipe, project, manual settings, scene brightness, and coarse location are stored — in the local base and in the photo's EXIF.
Index newest-first, always
Recent photos index in the foreground on launch; the deep back-catalog catches up at night, on charge, via BGProcessingTask with incremental resume.
Spend the model wisely
Vision runs on every photo; Foundation Models only on photos taken in Focale, favorites, or explicit requests — with a full deterministic fallback below A17 Pro.
Answer instantly
Natural queries compile to structured filters over the SwiftData index and rank locally — search feels instant because no model ever touches the photo at query time.
Tech Stack
Platform
Camera & photos
Intelligence
Highlights
- Every camera control is hardware-verified before display — no dead buttons, ever
- Capture context lives in the photo's EXIF: uninstall the app, keep the information
- OCR is the silent winner: receipts, whiteboards, serial numbers — and it beats the model for any digit
- Faces are counted locally, never identified; coarse location only, never raw coordinates
- Swift 6 isolation crashes in PhotoKit closures diagnosed and fixed — with the pattern documented in the repo
- Useful before the index is complete: progressive results, honest progress, newest-first