Skip to content

Dezoff-max/CleanMac

Repository files navigation

CleanMac icon

CleanMac

Safe, local-first cleanup for macOS with review-first scanning,
Safe Mode, and Trash-only removal.

CI Latest release macOS 14+ Swift 6.0 MIT License

CleanMac is a native SwiftUI utility that scans selected macOS locations, explains every cleanup candidate, and moves only confirmed items to Trash. Everything runs locally: the code contains no scan-result uploads, analytics, or cloud accounts.

Important

The current public build is ad-hoc signed and is not notarized by Apple. macOS Gatekeeper may block the downloaded app. You can build CleanMac from source for development; do not disable system security to run an unsigned file.

Interface

CleanMac dashboard

Scan area selection Multi-select application removal
CleanMac scan areas Selecting multiple applications in CleanMac

Features

  • Safe scanning. User and browser caches, logs, temporary files, Xcode Derived Data, Node/SwiftPM caches, Downloads, installers, and Trash.
  • Explainable review. Categories, sizes, risk levels, recommendation reasons, exact paths, and locations that could not be read.
  • Safe Mode. Enabled by default and prevents selection of items that require manual review.
  • Trash-only cleanup. Accepted paths are validated again before execution; permanent deletion is not used.
  • Session restore. Items moved during the current session can be restored when their original path is available.
  • Application removal. Finds third-party apps in /Applications and ~/Applications, supports multi-selection, and offers optional exact bundle-ID leftovers.
  • Menu bar and scheduled scans. Disk status, the latest scan summary, safe scan scheduling, and local notifications while CleanMac is running.
  • Permission visibility. Live Full Disk Access and Finder Automation status without automatic permission prompts.
  • English and Russian UI. Switch language and light/dark appearance directly inside the app.

Safety Model

  1. Scanning is read-only.
  2. Every candidate belongs to a known category and an allowlisted root path.
  3. Cleanup requires explicit selection and a separate confirmation.
  4. Paths are validated again immediately before execution.
  5. Accepted files are moved to Trash instead of being permanently deleted.
  6. During application removal, the .app bundle is moved first. Its leftovers remain untouched if that step fails.
  7. CleanMac does not escalate privileges or install a system helper.

Installation

Download the latest archive from GitHub Releases. Each ZIP is published with a .sha256 file:

shasum -a 256 CleanMac-*.zip

Compare the resulting hash with the first value in the attached .sha256 file. Then extract the archive and move CleanMac.app to /Applications.

Current prebuilt release limitations:

  • macOS 14 or later;
  • Apple Silicon (arm64);
  • ad-hoc signed and not notarized by Apple.

macOS Permissions

CleanMac requests access only after a user action:

  • Files and Folders — for selected user locations;
  • Full Disk Access — optional, for deeper checks of protected metadata;
  • Finder Automation — optional, only for revealing a selected item in Finder.

Scanning and cleanup do not require Finder Automation. Permission status is available on the Permissions screen and can be changed in macOS System Settings.

Build from Source

Requires macOS 14+ and Xcode 26+.

git clone https://github.com/Dezoff-max/CleanMac.git
cd CleanMac
./script/build_and_run.sh --verify

Run the core test suite:

swift test --package-path CleanMacCore

Create a local Release ZIP and SHA-256 file:

./script/package_release.sh

Developer ID signing and notarization are documented in docs/signing-notarization.md.

Project Structure

CleanMac/             SwiftUI macOS application
CleanMacCore/         Testable scanning and cleanup core
script/               Build, launch, and release packaging
docs/                 Documentation and screenshots
.github/workflows/    CI and GitHub Release automation

Contributing

  1. Create a focused branch from main.
  2. Preserve the safety flow: scan → review → confirm → Trash.
  3. Add tests for changes to scanning, path validation, or removal behavior.
  4. Before opening a pull request, run swift test --package-path CleanMacCore and ./script/build_and_run.sh --verify.

Bug reports and feature ideas are welcome in GitHub Issues.

License

CleanMac is available under the MIT License.

About

Safe local-first macOS cleaner with reviewed scans, Trash-only cleanup and multi-select app removal. Built with SwiftUI.

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors