RawBrowse is a macOS SwiftUI photo browser with local CLIP indexing, semantic search, and SAM 3 subject review. It browses JPEG, PNG, TIFF, and the RAW formats recognized by RawParserKit, including Sony ARW and DNG. Local AI features provide recursive semantic search, visual similarity, and subject sharpness review.
RawBrowse/Main contains the app entry points, scene dependency injection,
and the browser composition root. RawBrowse/Features groups browser,
zoom, RAW9, AI, downloads, and settings code with their views.
RawBrowse/Infrastructure holds shared image loading, access leases,
concurrency helpers, and logging. Each feature owns its state and presentation;
shared infrastructure supports folder access and image loading.
- macOS 27 or later
- Apple Silicon (M-series) only
- Xcode 27 and Swift 6 to build from source
- AI features require the corresponding downloaded Core AI model bundle; folder browsing does not require AI models.
- Add local folders through the macOS folder picker.
- Browse nested folders in a sidebar.
- Generate in-memory thumbnails for supported RAW files, including Sony ARW and DNG, as well as JPEG, TIFF, and PNG files.
- Open a zoom overlay with keyboard navigation, pan, and magnification controls.
- Copy selected original files with Edit > Copy or ⌘C, then paste them into a Finder folder with ⌘V. Grid view copies all selected files; zoom view copies the displayed file.
- Display available EXIF details such as camera, lens, exposure, ISO, dimensions, and focus point.
- Prefer matching
.jpgsidecars for RAW full preview images when present. - Download DataComp CLIP before enabling indexing or search.
- Download Meta SAM 3 for Deep Review.
- Select an indexed image and use Find Similar to rank its nearest visual neighbors.
- Recursively and incrementally index a selected catalog into its hidden
.clipbenchdirectory. - Search locally with natural-language descriptions and show thumbnail/path results.
- Adjust the semantic result limit in steps of ten (default 50, range 10–500).
- Enrich SAM 3 Deep Review with CLIP subject labels, EXIF autofocus points, and a whole-frame sharpness score.
- Choose Automatic, Fast, or Full scope when running SAM 3 Deep Review over a selection.
Open RawBrowse > Settings > AI Models to check model availability and open Download AI Models. CLIP and SAM 3 download from rsyncOSX/AI-models, using manifest.json on the main branch. If the repository or manifest is unavailable, the app reports that models have not been published.
Downloaded models are stored under Application Support/RawBrowse/AI-models/clip-datacomp and sam3. Each file is checked against its manifest byte count and SHA-256 before installation. SAM 3 requires acceptance of the bundled SAM licence. Downloads support progress, cancellation, retry, removal, and Show in Finder. See model publishing instructions and the conversion and publication workbook.
The AI workspace offers CLIP semantic search and Find Similar, plus SAM 3 Subject Detail review. The semantic result limit is available in AI Models settings.
CLIP Indexes checks and manages catalog indexes; Memory and Cache configure image memory and disk caching. Images selects 8-bit or 16-bit RAW 9 previews.
- Open RawBrowse > Settings > AI Models.
- Open Download AI Models, download DataComp CLIP, and wait for it to report Installed. Managed models are used automatically.
- Select a catalog in the image browser. Its top-level folder is the recursive index root, including when browsing a subfolder.
- Open Settings > CLIP Indexes and choose Create Index, Update Index, Rebuild Index, or Index Catalog, depending on the current status. Indexing never starts automatically.
- Open Workspace > AI Workspace (⌘2), enter a description, and choose Search Images.
- Inspect results in the image browser. Select an indexed image and choose Find Similar in the AI workspace to search by visual similarity.
CLIP indexing currently includes JPEG, PNG, HEIC/HEIF, TIFF, and Sony ARW files. This list is narrower than the RAW formats available in the image browser.
RawBrowse stores one model-specific index at .clipbench/clip-<model-hash>.clipindex inside the selected root. Indexing does not modify source photographs. Model inference, embeddings, and search stay on the Mac.
In zoom view, switch from JPG to RAW 9 when the installed Core Image decoder supports the photo. Adjust white balance, exposure, noise reduction, sharpness, detail contrast, overall contrast, saturation, vibrance, shadows, and tone, or apply a crop. You can copy and paste adjustments between supported photos.
Exposure spans −5 to +5 stops. Noise reduction and detail contrast use the decoder's available range around each photo's default. Sharpness runs from 0 to 1 and starts at the photo's decoder default. Overall contrast and saturation run from 0 to 2 (neutral at 1); vibrance runs from −1 to +1 (neutral at 0).
Exports preserve supported capture metadata, including EXIF, camera/lens information, and GPS where the output format supports it. Dimensions and orientation are updated for the rendered image; proprietary MakerNotes are omitted.
Adjustments are saved automatically beside the original as <original filename>.rawcull-raw9.json; the original RAW file stays unchanged. These app-specific sidecars are separate from XMP files used by other editors. Settings > Images controls preview bit depth without changing saved adjustments.
The Export menu offers the writable ImageIO formats available on the Mac, plus HEIF (10-bit) and OpenEXR. Exports run in a queue and continue after navigating to another photo or closing zoom.
| Context | Shortcut | Action |
|---|---|---|
| Workspace | ⌘1 / ⌘2 | Open Image Browser / AI Workspace |
| Grid | Arrow keys / N / P | Change selection |
| Grid | Return | Open selected image in zoom |
| Grid / Zoom | ⌘C | Copy selected originals / displayed original for pasting in Finder |
| Zoom | Arrow keys | Show next / previous image |
| Zoom | P / p | Toggle image-only preview in JPG or RAW; zoom and pan stay active |
| Zoom | E | Toggle histogram and EXIF |
| Zoom | A | Toggle autofocus point |
| Zoom | + / − | Zoom in / out |
| Zoom | Esc | Close zoom |
Effective date: October 1, 2026.
RawBrowse processes your photographs on your Mac. The app does not collect or transmit your photographs, image metadata, search queries, prompts, embeddings, or AI assessments to the developer. It does not include advertising, tracking, or analytics services, and does not require an account.
The app accesses folders and files you select through macOS permissions. It reads photographs and their metadata to provide previews, search, and local AI analysis. CLIP and SAM 3 model inference runs locally; photographs and prompts are not uploaded for AI processing.
App settings, remembered folder access, image caches, and downloaded models are stored locally. RAW 9 edits are stored in JSON sidecars beside the original photographs, and exports are saved to locations you choose. Semantic indexes are stored in the hidden .clipbench directory inside the folder you index and may contain image paths and embeddings. These files remain until you remove them or use the applicable cleanup controls.
You can clear image caches in Settings > Cache, remove managed models through Download AI Models, and delete .clipbench directories in Finder. Removing the app does not automatically remove indexes, RAW 9 sidecars, or exports from your photo folders. You control any copying, backup, or synchronization of those folders through other software.
Optional AI models are downloaded from GitHub, subject to its Privacy Statement. Model downloads do not upload photographs or prompts.
If you open an external model card, licence, or other website link, your browser connects to that website, whose privacy policy applies.
For privacy questions, contact the developer through the RawBrowse issue tracker. Issues are public; do not include private photographs or other sensitive information. Any information you choose to submit there is handled by GitHub under its Privacy Statement.
This policy will be updated if the app's privacy practices change, with the effective date revised above.
Requirements are pinned to exact versions or revisions in the Xcode project and recorded in RawBrowse.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved. Revision-pinned dependencies are shown with their complete commit.
| Package (resolved identity) | Resolved pin | Responsibility | Main APIs/products used by RawBrowse |
|---|---|---|---|
PhotoAIKit (photoaikit) |
revision 7f9adfcd69661c6bae4a640c16a4056dfc7393df |
Core AI model discovery and validation, CLIP inference, embedding artifacts, multi-object SAM 3 masks, and AI workflow contracts | CoreAICLIPProvider, CoreAISAM3Provider, PhotoAIContracts, PhotoAIWorkflows |
RawParserKit (rawparserkit) |
1.3.1 |
RAW metadata, embedded previews, thumbnails, focus-point metadata, and supported-format handling, including Sony ARW and DNG | RawImageLoader, BrowserExifInfo, RawFocusPoint |
RawCullCore (rawcullcore) |
1.1.2 |
Shared image-analysis utilities | HistogramCalculator.normalizedLuminanceHistogram |
The Xcode target also links PhotoAIKit's CoreAIEfficientSAMBackend, CoreAISAM3Backend, PhotoAIStorage, and VisionFeaturePrintBackend products. Deep Review uses the SAM 3 backend's composited semantic mask, which includes every object matching the selected prompt.
Resolved transitive dependencies are recorded here as build inputs even though RawBrowse does not import their products directly:
| Resolved identity | Resolved pin | Role in the package graph |
|---|---|---|
coreai-models |
revision 1953c4f90ba0214c1abc7bebcb9be5107e329a46 |
Apple Core AI model and conversion support reached through PhotoAIKit |
eventsource |
1.5.1 |
Server-sent-event transport used by transitive model tooling |
swift-asn1 |
1.7.3 |
ASN.1 support reached through the cryptography stack |
swift-collections |
1.7.2 |
Collection data structures used by transitive packages |
swift-crypto |
4.5.2 |
Cryptographic primitives used by transitive packages |
swift-huggingface |
0.13.0 |
Hugging Face model download and metadata support used by model tooling |
swift-jinja |
2.5.1 |
Prompt-template rendering used by model tooling |
swift-transformers |
1.3.4 |
Tokenizer and transformer support used by the AI package graph |
xgrammar |
0.2.2 |
Grammar-constrained generation support used by Core AI language models |
yyjson |
0.12.0 |
C JSON engine used by transitive model tooling |
Open the project in Xcode:
open RawBrowse.xcodeprojBuild from the command line:
xcodebuild -project RawBrowse.xcodeproj -scheme RawBrowse -destination 'platform=macOS,arch=arm64' -onlyUsePackageVersionsFromResolvedFile buildCreate a Release archive and a signed app for local testing:
make archive
open build/RawBrowse.appThe archive is written to build/RawBrowse.xcarchive. Its development-signed app is copied to build/RawBrowse.app; this target does not export an App Store installer or notarize the app.
Create a local debug archive:
make debugRun the test suite:
make test-fullRawBrowse is intended for GitHub distribution. Use Developer ID signing and notarization for downloadable releases. make build provides the existing archive, signature verification, notarization, and DMG workflow; configure your signing identities and notary credentials before running it.
AI model publication is separate from app releases. No model binaries are checked in. See the conversion and publication workbook for preparing complete runtime bundles and a GitHub download manifest.
RawBrowse/— SwiftUI app source and bundled verified licence texts inResources/.RawBrowseTests/— Browser, AI feature, download catalog, and licence acceptance tests.RawBrowse.xcodeproj/— Xcode project, schemes, and Swift package resolution files.RawBrowse-Info.plist— App metadata.RawBrowse.entitlements— App sandbox, user-selected file access, and outgoing model-download network access.RawBrowseicon.icon/— Icon Composer app icon bundle.Assets.xcassets/— Shared asset catalog.ModelAssets/— Pack manifest template, notices, historical provenance, and release setup instructions.Makefile— Build, test, archive, and export automation.exportOptionsDeveloperID.plist— Developer ID archive export settings.exportOptionsAppStore.plistandexportOptions.plist— App Store Connect archive export settings.exportOptionsDebug.plist— Local debug archive export settings.