Relief is a fast, native disk-space analyzer and cleanup manager for macOS 26. It combines deep filesystem scans, four connected ways to explore storage, immutable saved scans, duplicate analysis, recoverable cleanup, and tightly bounded automation in one focused Mac app.
Relief is not an irreversible one-click cleaner or a cloud optimizer. It shows where storage went, keeps each scan available for later comparison, and makes every file-changing action explicit and recoverable through macOS Trash.
Scan a folder, drive, or the startup volume, then move through the result at any depth. The treemap sizes every block by allocated space, labels useful blocks directly, and supplies native hover help with the item name, path, type, size, file count, and share of the current folder.
- Open folders with one click and move back through the same breadcrumb path.
- Search the current folder and combine text, file-type, activity, and minimum-size filters.
- Compare logical size with filesystem-allocated size.
- Avoid double-counting hard-linked allocation through stable filesystem resource identifiers.
- Open a native information inspector without replacing or shifting the navigation sidebar.
| File types | File activity |
|---|---|
![]() |
![]() |
Treemap, List, Types, and Activity are four views of the same saved hierarchy. Every view keeps the current folder, filters, breadcrumbs, and navigation state, and each category or time range opens into a navigable native table.
- Treemap reveals relative space use immediately.
- List provides a sortable native table for name, size, descendant count, kind, and modification date.
- Types groups every descendant by native content classification.
- Activity separates recent churn from files untouched for months or years.
Ordinary scans read filesystem metadata, not file contents. Relief uses a bounded directory queue with up to eight concurrent workers, filesystem-prefetched metadata, cooperative pause and resume, and progress publication capped at 10 Hz so the interface never competes with traversal.
The scan view reports the current path, files found, logical and allocated size, active elapsed time, determinate percentage when macOS supplies a credible baseline, and an estimated time remaining after enough evidence exists. Duplicate hashing is deliberately deferred.
Measured on an 8-core Apple M2 MacBook Air:
| Target | Entries | Result |
|---|---|---|
/Applications metadata traversal |
438,613 | 5.98 s |
| Startup-volume metadata traversal | 6,782,850 | 184.8 s |
| SQLite snapshot construction | 6,782,850 | 18.47 s |
The startup-volume result is 56% faster than the earlier 418.9-second baseline on the same Mac. These figures are regression evidence rather than universal promises; storage, cache state, directory shape, access, and competing I/O all affect a run.
Insights turns a scan into useful starting points: largest files, older large files, storage by file kind, and opt-in byte-identical duplicate groups.
Duplicate analysis narrows candidates by size, compares their first and last 64 KiB, then streams complete SHA-256 only for files that still match. Relief never calls two files duplicates until their complete content hashes agree, and file contents never leave the Mac.
Cleanup is a review workflow, not a deletion shortcut. Immediately before moving a selected file to Trash, Relief revalidates its live path, type, size, modification time, approved root, protected-path policy, and the run's item and byte limits.
- Nothing is permanently deleted and Relief never empties Trash.
- Changed, missing, protected, or out-of-root files are skipped.
- Every success, partial result, and failure remains visible in History.
- The immutable saved scan remains untouched.
Cleanup rules combine explicit folders with age, size, extension, kind, name, path, regular expression, visibility, package, exclusion, power, item-count, and byte-count filters. Rules can run manually, hourly, daily, weekly, monthly, or on a custom interval.
Review only is the default. Scheduled work uses a signed, short-lived SMAppService LaunchAgent that resolves the saved folder authorization, evaluates bounded rules, records the result, and exits. Relief installs no daemon, privileged helper, kernel extension, or system extension.
| Information inspector | Permissions |
|---|---|
![]() |
![]() |
Relief uses native SwiftUI navigation, toolbars, segmented controls, tables, inspectors, Settings, alerts, menus, file panels, materials, SF Symbols, keyboard focus, accessibility descriptions, and MenuBarExtra.
Use Command-N for a new scan, Command-Shift-P to pause or resume, Command-. to cancel, Command-, for Settings, and Command-1 through Command-4 for Dashboard, Explore, Insights, and Cleanup.
Selected folders use local security-scoped bookmarks. Full Disk Access is optional for ordinary selected-folder scans and required for complete coverage of protected Mail, Messages, Safari, and application data on the startup volume. Only macOS can grant it; Relief checks effective access and opens the exact System Settings pane without pretending approval exists.
Completed scans stream into normalized SQLite databases and are published atomically only after their metadata, hierarchy, overview, and navigation indexes are complete. Opening a scan loads only the current folder and bounded result pages; millions of entries do not have to be rebuilt as an in-memory object graph.
File names, paths, metadata, hashes, snapshots, cleanup rules, and history stay on the Mac. Relief has no account, analytics, advertising, tracking, telemetry, or cloud scan path. Network access is limited to the signed Sparkle update feed.
Relief targets macOS 26 only. There are no legacy persistence readers, compatibility interfaces, or migration paths.
| Component | Responsibility |
|---|---|
Relief |
SwiftUI/AppKit app, workspaces, native navigation and inspectors, scan orchestration, Settings, menu bar, and Sparkle updates |
ReliefCore |
Sendable models, bounded scanner, SQLite snapshots, analysis, duplicate hashing, cleanup, scheduling, bookmarks, and power policy |
ReliefAgent |
Short-lived Service Management agent that evaluates due rules, performs bounded work, records results, and exits |
| SQLite snapshot | Immutable saved hierarchy and indexed source for navigation, search, facets, insights, and cleanup review |
Application state is isolated to @MainActor; scanning, persistence, and saved-scan queries run through actors away from the interface; and long-running work has one owned, cancellable task. Read Architecture for the complete concurrency, persistence, authorization, and cleanup design.
Relief requires macOS 26 or later.
- Download the notarized DMG from the latest release.
- Open the DMG and drag Relief to Applications.
- Open Relief and choose a folder, volume, or the startup disk.
- For complete startup-volume coverage, use Settings → Permissions → System Settings and enable Relief in Full Disk Access.
- Review scan access issues and cleanup candidates before changing files.
Public releases also include an EdDSA-signed Sparkle ZIP, external release notes, SHA256SUMS, and a machine-readable provenance manifest.
Requirements:
- macOS 26 or later
- Xcode 26.5 or later
- Swift 6.2 or later with complete strict-concurrency checking
- XcodeGen
swift test
Scripts/verify-ci.shScripts/verify-ci.sh runs the full Swift suite, regenerates and validates the Xcode project, builds Debug and Release, and checks privacy, entitlements, bundle metadata, scripts, signing assumptions, and packaged structure. GitHub runs the same gate on native Apple-silicon and Intel macOS 26 runners.
The release pipeline builds a universal Hardened Runtime archive, verifies nested code and production entitlements, requires Developer ID signing, notarizes and staples the app and DMG, signs the Sparkle archive with EdDSA, verifies the embedded update key, checks Gatekeeper, and publishes checksums plus machine-readable provenance.
See Releasing for rehearsal, publication, and verification gates.
Relief 0.2.1 is the current release. Native scanning, pause and resume, immutable saved scans, four-view exploration, search and facets, duplicate verification, review-first cleanup, scheduled rules, permissions, menu-bar control, signing, notarization, and Sparkle updates are implemented.








