Skip to content

Repository files navigation

Relief

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.

CI Release macOS 26

Relief dashboard

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.

See where your disk went

Relief treemap

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.

Explore from every angle

File types File activity
Relief file-type view Relief activity view

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.

Scan millions of files quickly

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.

Find space worth reviewing

Relief storage insights

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.

Clean up without surprises

Relief cleanup review

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.

Automate narrowly

Relief cleanup rule editor

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.

Native Mac controls

Information inspector Permissions
Relief information inspector Relief permission settings

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.

Saved scans and privacy

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.

Architecture

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.

Install

Relief requires macOS 26 or later.

  1. Download the notarized DMG from the latest release.
  2. Open the DMG and drag Relief to Applications.
  3. Open Relief and choose a folder, volume, or the startup disk.
  4. For complete startup-volume coverage, use Settings → Permissions → System Settings and enable Relief in Full Disk Access.
  5. 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.

Build and verify

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.sh

Scripts/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.

Release trust

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.

Documentation

Status

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.

About

A fast, native disk-space analyzer and cleanup manager for macOS 26 and later.

Resources

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages