Technical
Settings reference.
Open Loupe → Settings… (⌘,). Three tabs, every control documented below — with defaults, effect, and where the setting persists on disk.
General
Application-level appearance. Persists in the standard Cocoa user defaults plist.
- Appearance
- Values: Match System / Light / DarkDefault: Match System
App-wide color scheme override. Match System follows the macOS appearance setting in System Settings → Appearance.
Persists at ~/Library/Preferences/studio.shyguy.loupe.plist. Safe to delete; the app rebuilds with defaults on next launch.
Privacy
Informational tab. No toggles — the privacy posture is hard-coded into Loupe and surfaced here so you can verify it before ingesting sensitive data.
- Local-only posture. Loupe never makes network requests. Every step (hashing, parsing, enrichment, narrator) runs on-device. No telemetry, no crash reporters, no anonymous aggregate counts. Verifiable independently with
tcpdump, Little Snitch, or by inspecting Loupe's entitlements (thecom.apple.security.network.cliententitlement is intentionally absent, so the OS itself blocks network calls). - Chain of custody. Every file is SHA-256 hashed at ingest. The hash is saved in the case manifest and included in exports so recipients can verify independently.
- Encryption at rest. Cases are AES-256-GCM encrypted on disk with per-case keys held in your macOS Keychain (
studio.shyguy.loupeservice,AfterFirstUnlockThisDeviceOnlyaccessible policy — keys do not sync to iCloud Keychain). - On-device narrator. The narrator runs entirely on your Mac via Apple's FoundationModels framework. Your case file does not leave your Mac — not to Apple, not to Loupe, not anywhere.
See hardware requirements for the verification commands you can run yourself.
Diagnostics
Session-scoped troubleshooting. Quitting Loupe clears it. Never written to disk, never transmitted, never included in case files or export bundles.
- Format-detection ambiguity
- Values: Per-file warning entryDefault: —
Surfaces files where the detector matched multiple format heuristics with similar confidence. Click to see the alternatives.
- Parser warnings
- Values: Per-file warning entryDefault: —
Lists unparsed lines that were preserved as .unknown severity, malformed entries that were preserved with a placeholder, and any other parser-level concerns.
- File hash mismatches
- Values: Per-file warning entryDefault: —
Fires when the same file path is ingested twice in one session and the SHA-256 differs between attempts (typical cause: the file was modified mid-session).
For support purposes, screenshot the tab. There is no “send diagnostic” button — there is no telemetry channel.
Where state lives on disk
Standard macOS Application Support layout. Everything is local; nothing is synced.
- ~/Library/Application Support/Loupe/cases/
- One {case-uuid}.loupecase per case (encrypted) plus {case-uuid}.manifest.json (unencrypted summary, used to render the sidebar without unlocking every case).
- ~/Library/Preferences/studio.shyguy.loupe.plist
- Cocoa user defaults — Appearance setting and per-window state (sidebar widths, etc.). Safe to delete.
- Keychain (login)
- Per-case AES-256 keys at service studio.shyguy.loupe, account case.{case-uuid}. Inspect via Keychain Access.
Environment variables
Loupe does not read environment variables at runtime to alter user-facing behavior. There are no hidden flags, no debug overrides, no telemetry opt-outs to set (because there is no telemetry).
One env var exists for the test target only:
- LOUPE_SKIP_LIVE_NARRATOR=1
- Values: Read by xcodebuild test onlyDefault: unset
Forces the test harness to skip the live narrator integration test (machines without Apple Intelligence, or CI). No effect on the application itself.
Not configurable in v1
Honest disclosure of knobs that aren't turnable yet. All on the v1.x roadmap.
- Anomaly detector tuning — z-score and burst-density thresholds are calibrated, not user-tunable
- Manual format override — UI dropdown to force a specific parser when detection misclassifies
- Custom rule library — load user-authored rules from
~/Library/Application Support/Loupe/rules/*.json - Custom RCA templates — load user-authored templates from
~/Library/Application Support/Loupe/templates/*.json - Per-source clock skew — present in code but not yet surfaced in the UI