Sentinel
Comprehensive reference for every feature, setting, and behavior in Sentinel.
No matching questions.
Sentinel is a native macOS menu bar app for photographers and videographers. It automatically detects when a camera card or USB device is connected, imports your media, organizes it into structured folders, renames your files using EXIF metadata, and guides you through a fast fullscreen culling workflow to identify your keepers. It runs silently in the background. No Dock icon, no open windows. Until you need it.
Any photographer or videographer who shoots regularly and needs a repeatable, automated workflow. If you're tired of manually dragging files off cards, renaming folders by hand, or losing track of which shots you want to edit, Sentinel handles all of that.
Sentinel does not edit photos or videos. It is not a DAM (Digital Asset Manager), a cloud sync tool, or a library manager. It handles the import → organize → rename → cull workflow and hands off to your editor of choice.
No. Sentinel is a one-time purchase from the Mac App Store.
No. Sentinel is fully offline. No cloud, no account, no sync.
Sentinel lives in the macOS menu bar. There is no Dock icon. Click the menu bar icon to access all controls.
macOS 13.0 Ventura or later.
Sentinel uses Apple's DiskArbitration framework to monitor for new volumes. When you plug in an SD card, CFexpress card, or any storage device with a DCIM folder, Sentinel detects it automatically.
Sentinel uses Apple's ImageCaptureCore (ICCameraService) to detect cameras connected via USB as PTP/MTP devices. Such as mirrorless cameras connected directly via USB-C. When a PTP camera is detected, Sentinel opens a session, enumerates all files on the camera, checks for multi-date cards, then downloads files to a temporary staging directory before running the full import pipeline (EXIF routing, folder naming, file renaming). A floating progress panel shows status throughout: file discovery count during enumeration, determinate progress bar during download, and deletion progress during card erase. PTP import is slower than card reader import (PTP is a serial protocol), but the full pipeline works end-to-end.
Depending on your Import settings, Sentinel will either import automatically, ask you first, or do nothing until you trigger it manually from the menu bar.
A shoot name is a short label you give to an import session. For example, "Yellowstone" or "Wedding-Smith". It becomes the {SHOOTNAME} token used in folder and file naming. When import is triggered, Sentinel prompts you for a shoot name.
Sentinel pre-scans your card by filesystem creation dates. If files span multiple calendar days, a "Multiple dates detected" dialog appears with two options:
{DATE} in the root folder pattern). Individual file dates from EXIF are still used for file-level {DATE} tokens.If only one date is found, Sentinel uses the standard shoot name prompt with no date picker.
Yes. Every shoot name field in Sentinel is a combo box. Type a new name to create a new shoot, or click the dropdown arrow (or start typing) to search existing shoots by substring. If you select an existing shoot, files are merged into that folder using the proper existing-shoot import path. This works in single-date imports, multi-date One Shoot, and multi-date Separate Shoots. When adding to a shoot that has an existing culling session, the session is marked incomplete and culling resumes at the first newly added file.
Sentinel imports a comprehensive range of photo and video formats across all major camera manufacturers. See the Supported Cameras & Formats section below for the full list.
Sidecar files are companion files generated by cameras alongside your media. For example, .xmp color grading sidecars, .srt GPS/telemetry files from DJI drones, .hvrlog flight logs from Hover Air, and .gpx GPS tracks.
To import them, enable Import sidecar and telemetry files in Settings → Import. When on, Sentinel imports .xmp, .srt, .lrv, .thm, .hvrlog, .log, .csv, and .gpx files alongside your primary media. Default: off.
All modes will ask for a shoot name before importing.
The root folder where all imported media will be organized. Sentinel creates shoot subfolders inside this location. You can change the destination at any time. See "What happens when I change my import destination folder?" below for how Sentinel handles a new destination that already contains shoots.
When you point Sentinel at a destination that already contains shoot subfolders (for example, switching from a desktop test folder to an external archive drive), Sentinel shows an Existing Shoots Found dialog listing every pre-existing folder with media files. Each folder has a checkbox:
Click Apply to confirm your choices. Click Cancel to fall back to adopt-all behavior. This prevents Sentinel from flooding you with per-folder import prompts when you switch to a drive that already has dozens or hundreds of organized shoots. Sentinel parses the folder name for a date prefix (e.g. 2026-03-20-Mountains → date 2026-03-20, shoot name "Mountains"); if there's no date prefix, the folder's creation date is used.
When enabled, Sentinel skips files that already exist at the destination (matched by filename). This prevents re-importing the same files if you plug in a card twice.
What Sentinel does after a successful import:
Yes. You can drag folders directly into your import destination in Finder and Sentinel will detect them automatically, running the exact same import flow as a USB/SD card. Shoot name dialog, file renaming, folder organization. Sentinel recursively scans nested subfolders, so folders with internal structure (subfolders within subfolders) are fully imported. Multiple folders dragged at once are batched. You can also drop individual files into an existing shoot folder. Sentinel detects them, renames them using the shoot's naming pattern, and moves them into the correct camera subfolder automatically.
Controls what Sentinel does with the card after a successful import:
Erase only executes after a fully successful import. Cards are never erased on failed or partial imports. For separate-shoot imports (multi-date), the card erase prompt appears once after all shoots are imported, before the culling prompt.
Sentinel uses a token-based pattern system to build folder paths automatically. You define a pattern using tokens. Placeholders that resolve to real values at import time. For example, {IMPORTDATE}-{SHOOTNAME}/{CAMERA} might resolve to 2026-03-04-Yellowstone/FujifilmXE5.
| Token | Resolves to | Example |
|---|---|---|
{IMPORTDATE} | Date import was run (YYYY-MM-DD) | 2026-03-04 |
{SHOOTNAME} | Shoot name you entered | Yellowstone |
{YEAR} | Year from import date | 2026 |
{MONTH} | Month (zero-padded) | 03 |
{DAY} | Day (zero-padded) | 04 |
{CAMERA} | Camera model from EXIF (subfolder only) | FujifilmXE5 |
{MAKE} | Camera manufacturer (subfolder only) | Fujifilm |
{DATE} | Capture date from EXIF (subfolder only) | 2026-03-03 |
{RESOLUTION} | Megapixels or video resolution (subfolder only) | 40MP / 4K |
{FILMSIM} | Fujifilm film simulation (subfolder only) | Classic_Chrome |
Tokens marked subfolder only vary per file and must appear after a / in the pattern.
Fujifilm cameras (X-E5 and other modern Fuji bodies) write the active film simulation into the EXIF MakerNote for each shot. Sentinel reads this and exposes it as {FILMSIM} so you can route files into subfolders by color profile. Example: {IMPORTDATE}-{SHOOTNAME}/{CAMERA}/{FILMSIM} → 2026-04-14-Harbor/X-E5/Classic_Chrome. Files from non-Fuji cameras, or RAW files where the MakerNote isn't exposed, resolve to UnknownFilmSim. Recognized names include Provia, Velvia, Astia, Classic_Chrome, Classic_Neg, Pro_Neg_Std, Pro_Neg_Hi, Eterna, Eterna_Bleach_Bypass, Nostalgic_Neg, and Reala_Ace.
{IMPORTDATE}-{SHOOTNAME}/{CAMERA}
After culling, Sentinel can copy (or move) your keeper files to a designated "Ready To Edit" folder. A clean handoff point for Lightroom, Capture One, or any other editor. This folder has its own naming pattern, destination, and copy vs. move setting.
When you toggle this setting, Sentinel offers to retroactively update all existing shoots. The confirmation dialog shows exactly how many files would be affected and how much disk space would be freed or consumed. So you can make an informed decision before committing.
Sentinel renames your files using the same token system as folder naming. You define a pattern and separator, and Sentinel builds the new filename from EXIF data at import time.
| Token | Resolves to | Example |
|---|---|---|
{DATE} | Capture date from EXIF | 2026-03-03 |
{IMPORTDATE} | Date import was run | 2026-03-04 |
{SHOOTNAME} | Shoot name | Yellowstone |
{CAMERA} | Camera model | FujifilmXE5 |
{MAKE} | Camera manufacturer | Fujifilm |
{LENS} | Lens model from EXIF | 18-55mm |
{RESOLUTION} | Megapixels or video resolution | 40MP |
{FILETYPE} | File extension, uppercase | RAF |
{SEQ} | Sequence number, zero-padded | 0001 |
{ORIGINALNAME} | Original filename without extension | DSC_0047 |
{YEAR} | Year | 2026 |
{MONTH} | Month (zero-padded) | 03 |
{DAY} | Day (zero-padded) | 03 |
{DATE}_{SHOOTNAME}_{CAMERA}_{SEQ}
Example output: 2026-03-03_Yellowstone_FujifilmXE5_0001.RAF
Underscore _, hyphen -, period ., or none.
Yes. File renaming can be toggled off independently for imported files and for Ready To Edit files. When disabled, original filenames are preserved.
You can apply a different naming pattern to your Ready To Edit copies. For example, a cleaner name stripped of camera model info. This is independent of the import file naming setting. Default: off (use original filename).
Culling is the process of reviewing your shots and deciding which ones to keep, discard, or flag for later. Sentinel's culling UI is a fullscreen, distraction-free interface built for speed.
After import, Sentinel can automatically open the culling UI (depending on your post-import setting), or you can launch it manually from the menu bar by selecting a shoot.
Press Escape, use the standard macOS fullscreen exit gestures (swipe down with three fingers, or click the green button in the top-left corner on hover), or click the Done button in the bottom-right corner of the culling HUD. The Done button is always visible during culling. You do not need to tag every file before it appears.
The filmstrip is a horizontal strip of thumbnails at the bottom of the culling view. It shows adjacent files with tag status icons (green checkmark for Keep, red X for Discard, yellow ? for Maybe). Discarded thumbnails appear very dark. Click any thumbnail to jump directly to that file. The filmstrip slides up from the bottom after your first navigation and slides back down when the HUD fades to idle. Thumbnails preload in the background starting from your current position outward.
When you first open the culling window, Sentinel displays a keybinding reference on the left side of the screen showing all available controls. This instructions overlay disappears permanently (for that session) the moment you press your first navigation key, replaced by the normal HUD and filmstrip.
The HUD has two states. When the filmstrip is visible (you're actively navigating), only the shoot name, filename, counter, and Done button are shown. The tag status icons are hidden because the filmstrip already shows tag context. When the filmstrip slides away on idle, the tag status icons appear alongside the Done button, showing only the active tag in color (green/red/yellow) with the others greyed out.
| Action | Default Key |
|---|---|
| Keep | ↑ |
| Discard | ↓ |
| Maybe | M |
| Previous | ← |
| Next | → |
| Undo | Z |
| Rotate | R |
| Zoom In | + |
| Zoom Out | - |
| Zoom Reset | 0 |
External editor keybindings are configured per-editor in Settings → Culling → External Editors (default: first editor is Space).
Yes. The three tag icons (↑ keep, ? maybe, ↓ discard) in the culling HUD are clickable. Tap an icon to apply that tag to the current file. Tap the same icon a second time to remove the tag and revert the file to unreviewed.
Yes. Every keybinding is fully remappable in Settings → Culling.
Yes. Culling sessions are saved continuously to a sentinel_session.json file inside your shoot folder. If you close the culling window or quit Sentinel mid-session, your progress is preserved.
Sentinel checks for a saved session and branches based on whether that session was completed:
Start Fresh is a full reset. Completely back to zero. All tags are cleared, the session resets to the first file, and any files that were already copied or moved to your Ready To Edit folder during the previous pass are rolled back:
After rolling back the files, Sentinel also deletes any empty Ready To Edit subfolders that were created for the session. It will not delete the Ready To Edit root folder or any folder that still contains files.
One exception: if you ran a Purge before choosing Start Fresh, any files that were purged cannot be recovered. Start Fresh restores what it can. Purged files are simply gone.
Yes. Sentinel plays video files inline in the culling UI using AVPlayer. A progress bar shows playback position.
RAW files are displayed using downsampled preview images generated from the embedded JPEG previews in the RAW file. This keeps culling performance fast even with large RAW files.
If you remove a Keep tag from a file. By tapping the Keep icon again to revert it to unreviewed, or by tagging it as Discard or Maybe. And that file was already copied or moved to your Ready To Edit folder, Sentinel immediately rolls it back:
This happens silently and immediately. Removing a Keep tag is an explicit action that implies the file should no longer be in the Ready To Edit folder.
From the culling UI, you can open any file directly in an external editor with a single keypress. Sentinel supports unlimited external editors. Each with its own app and keybinding. Configure editors in Settings → Culling → External Editors. The first editor defaults to Space; additional editors require you to set a keybinding. Click + to add more editors, and the − button to remove them. Because the culling window runs in a native macOS fullscreen space, editors open in their own space automatically. Swipe back to return to culling.
Yes. Press + to zoom in (1.5x steps, up to 5x) and - to zoom out (back to fit). Press 0 to instantly reset zoom to fit and clear any pan offset. When zoomed in, click and drag to pan around the image. Zoom and pan reset automatically when you navigate to the next or previous file. All three zoom keybindings (+, -, 0) are remappable in Settings → Culling.
Yes. Press R to rotate the current image 90° clockwise. Rotation resets when you navigate to another file. The keybinding is remappable in Settings → Culling. Note: EXIF orientation is applied automatically. The R key is for additional manual rotation on top of that.
When enabled, videos restart from the beginning when they reach the end. When disabled, the video pauses on the last frame. Press your Next key to advance to the next file. Default: on.
After finishing a culling pass, the summary screen offers a "Review Maybes" button. This enters a focused mode that only shows files tagged as Maybe. The counter updates to show your position within the maybes (e.g. "2 / 5" with a "Reviewing Maybes" label). Retagging a maybe (to Keep or Discard) automatically advances to the next one. When all maybes are resolved, the summary reappears.
When you press Done, Sentinel shows a summary of your session: total files reviewed, keep count (with Ready To Edit destination path), maybe count, discard count, and unreviewed count (if any files were not tagged). From the summary you can also trigger Review Maybes mode or run a Purge. The Purge button label reflects your current purge target setting (e.g. "Purge Discards", "Purge Unreviewed", "Purge Discards and Unreviewed"). If auto-purge is enabled, the Purge button is replaced with a "Purging discards..." indicator.
Purge permanently removes files you've tagged as Discard (and optionally Unreviewed) from your shoot folders, reclaiming storage space. You control exactly what gets purged and when.
By default, purged files are sent to the macOS Trash rather than deleted immediately, giving you a safety net. You can change this in Settings → Purge.
From the menu bar → Purge, from the post-culling summary screen, or from Settings → Purge → Purge button. Each entry point works slightly differently:
The Purge list only shows shoots where culling has been completed. Where you pressed Done and reached the summary screen. Incomplete sessions (exited mid-cull via Escape) do not appear in the Purge list. This is intentional: it prevents accidentally purging discards from a shoot you haven't finished reviewing.
When enabled, Sentinel shows a confirmation sheet with file count and storage size before executing any purge. Default: on.
When enabled, files are moved to macOS Trash instead of being permanently deleted. Default: on.
When enabled, Sentinel automatically purges discarded files when a culling session ends. Default: off.
The Storage section in Settings → Purge shows a stacked bar chart of disk space used across all your recent imports, broken down by tag status: Keep (green), Ready To Edit (blue), Maybe (yellow), Discard (red), and Unreviewed (gray). Percentages are shown on the bar. The visualization refreshes automatically when the settings window gains focus. So after finishing a culling session, just click back to the settings window to see updated numbers.
When you open Purge from the menu bar, the shoot picker now includes a "Purge All…" button. This lets you purge all shoots at once. You choose what to purge (discards, unreviewed, or both) via a radio picker, see the total file count and size across all shoots, and confirm before executing.
When enabled, Sentinel starts automatically when you log into macOS and begins monitoring for connected devices immediately.
Settings → General → App version is shown in the General tab.
The Forge logo and "FORGE-MADE." stamp appear at the bottom of the General settings tab. This is the hallmark of The Forge. The software studio behind Sentinel and Muninn. Every app shipped by The Forge carries this stamp.
Sentinel uses a custom castle+lens icon in the menu bar. It's a template image that adapts to light and dark menu bars automatically. During an active import, the icon switches to an animated download indicator. Click it at any time to open the Sentinel popover.
NSPopover performance degrades when rendering hundreds of rows, especially on external drives where each row pulls a file count and tag summary. The popover keeps the 20 most-recent imports for fast access and punts the full archive to the All Shoots… window, which is a standard window (not a popover) and can handle large lists smoothly.
If a culling session was started but not finished (you exited without pressing Done), Sentinel shows a "Continue: [shoot name]" button in the popover. Tapping it immediately opens the culling window for that shoot, restoring exactly where you left off. No prompts, no picker. The Continue button only appears for incomplete sessions. Once you press Done and complete a session, Continue no longer appears for that shoot.
Right-click (or Ctrl+click) on any shoot in the recent imports list in the Sentinel popover. Select "Rename…" from the context menu. Enter the new name and press Rename. Sentinel renames the import folder, all filenames containing the old shoot name, the Ready To Edit folder and its files, the culling session, and the recent import record. All in one operation.
Everything that references the shoot name:
2026-03-19-OldName → 2026-03-19-NewName)sentinel_session.json file (all paths and the shoot name field)Sentinel detects this automatically. The next time you open the Sentinel popover, it scans for missing import folders and uses the sentinel_session.json fingerprint inside each folder to locate the renamed version. Once found, Sentinel silently cascades the rename to all filenames, the Ready To Edit folder and files, the session, and the import record.
Sentinel detects this too. On popover open, it checks if the expected RTE files from the session still exist. If they're missing, it scans the RTE root for the renamed folder (by searching for the known RTE filenames). Once found, it cascades the rename back to the import folder, import files, session, and record.
Yes. Rename from the popover context menu at any time. The session is updated to reflect the new name and paths. When you reopen the culling window, it resumes with the correct files.
No. All Keep, Discard, and Maybe tags are preserved. The session's file entries, current index, and completion state are unchanged. Only the paths and shoot name are updated.
Likely yes. Sentinel supports RAW formats from Canon, Nikon, Sony, Fujifilm, Olympus/OM System, Panasonic, Leica, Pentax, Sigma, Hasselblad, Phase One, Minolta, Kodak, Epson, and Mamiya. Plus JPEG, TIFF, HEIC, PNG, WebP, and all common video formats. If your camera writes a DCIM folder to a card, Sentinel will find the files.
Sentinel uses a multi-layer identification system. First, it reads standard EXIF make/model tags from photos and videos. If those are missing, it checks the software tag. If that fails too, it scans all metadata values for embedded original filenames (some cameras like Hover Air embed their original filename in non-standard metadata fields) and runs pattern matching against known camera naming conventions. Each file is checked individually, so even when multiple cameras share a folder, each file gets routed to the correct camera subfolder based on its own metadata.
Sentinel shows an "Unknown camera detected" dialog with a thumbnail preview of a sample file, the number of unidentified files, and a text field to enter the camera name. Click the thumbnail to preview the file (with prev/next navigation if there are multiple files) to help identify which camera it came from. If you enter a name and click Continue, Sentinel saves a fingerprint mapping (based on resolution, file type, and folder pattern) so the same camera is automatically identified on future imports. Click Skip to use a default "UnknownCamera" label.
Sentinel handles this correctly. Each file is checked individually for camera metadata, so files with identifiable EXIF data are sorted into the correct camera folder regardless of what other files share the same source folder. Only files with no identifiable metadata are grouped as unknown. If a folder contains files from multiple identified cameras plus some unidentifiable files, the unidentifiable files are treated as unknown rather than inheriting a label from a neighboring file.
Some cameras connect via USB as PTP/MTP devices rather than mounting as a disk. Sentinel detects these cameras and imports via PTP automatically. If your camera isn't detected: (1) make sure it's unlocked and set to USB transfer/tethering mode, (2) check that macOS isn't intercepting the connection with Image Capture or Photos. If import seems slow, that's normal. PTP is a serial protocol and transfers one file at a time. A card reader will always be faster for large imports.
Yes. .insv and .insp files are imported and play back in the culling UI. Because AVFoundation cannot natively decode the proprietary INSV container, Sentinel works around this by creating a temporary .mp4 copy for playback, then deleting it automatically. You will see and hear your Insta360 footage normally during culling.
Yes. DJI MP4 and MOV footage is fully supported. .srt telemetry files can also be imported when the sidecar toggle is enabled.
Sentinel uses on-device machine learning to do a first-pass cull on every photo before you open the culling window. Each file is pre-tagged keep/discard/maybe with a short reason (e.g. "Out of focus," "Burst duplicate — leader: IMG_0041", "Eyes closed"). You confirm, override, or dive into a dedicated AI Review Mode to work through findings by category.
No. 100% on-device. AI Culling uses Apple's Vision framework (face landmarks + attention-based saliency) and Core Image (Laplacian variance for sharpness). Zero network traffic. Verifiable via Little Snitch.
Settings → Culling → AI Recommendations section (top of the Culling tab). Toggle Enable AI analysis on. You can also choose:
Automatically in the background right after import, while the culling window is closed. By the time you open culling, pre-fill is usually complete. If you open a shoot before analysis finishes, the HUD shows an "Analyzing X of Y" progress indicator and tags populate per-photo as results arrive.
VNDetectFaceLandmarksRequest for face detection + faceCaptureQuality signal. Closed-eye and blurred-face detection downgrade people shots.A dedicated review UI for working through AI findings by category. Enter it by pressing G during culling or by clicking Review AI Findings on the summary screen. The view shows grouped sections:
During category review, the filmstrip filters to only the files in the current category and arrow keys snap you to the next/previous photo within that category. Use the ◀ ▶ buttons at the top of the HUD to jump between categories. Tagging works the same as regular culling. Your manual tag always overrides AI.
AI pre-fills show with a colored border matching the tag and a subtle "AI" badge in the thumbnail. The moment you manually tag a file, the badge flips to your override and the visual treatment becomes bolder.
Your tag always wins. AI pre-fills are only suggestions. If you keep a photo AI marked as discard, it flows to Ready To Edit normally; if you discard a photo AI marked as keeper, it's treated as a normal discard eligible for purge.
No. Results are persisted inside sentinel_session.json with a schema version. Once analyzed, a shoot stays analyzed. Sentinel only re-runs analysis when the algorithm version changes. Typically after we ship a tuning update and want existing shoots re-scored against the improved model.
No. AI analysis is photo-only in the current release. Videos remain unreviewed until you tag them manually.
Yes. Analysis reads the embedded JPEG preview via ImageIO. The same preview used for culling display. So RAW performance is equivalent to JPEG.
Target is under 90 seconds for a 1000-file shoot on M-series Macs. Analysis runs on a background dispatch queue with low-priority QoS and uses DispatchQueue.concurrentPerform to parallelize across cores. Main-thread work is guarded by the same modal and culling-active flags used elsewhere in the app, so imports, renames, and typing into shoot-name prompts stay responsive while analysis runs.
Not in the current release. Everything is stateless. Each analysis pass uses only the photos in the current shoot and the sensitivity setting. Decision-learning from your historical keep/discard patterns is a future stretch goal, and if it ships it will stay fully on-device.
No. Face detection only (is there a face, is it sharp, are eyes open). No identity recognition, no per-person tagging, no gallery of known faces. Ever.