Free, open-source macOS app manager and system cleaner.
Uninstall apps completely. Find orphaned files. Clean system junk.
No subscriptions. No telemetry. No data collection.
Install - Features - Screenshots - Contributing
brew tap momenbasel/tap
brew install --cask puremacDownload the latest .dmg from Releases, open it, and drag PureMac to /Applications.
Signed and notarized with Apple Developer ID - installs without Gatekeeper warnings.
brew install xcodegen
git clone https://github.com/momenbasel/PureMac.git
cd PureMac
xcodegen generate
xcodebuild -project PureMac.xcodeproj -scheme PureMac -configuration Release -derivedDataPath build build
open build/Build/Products/Release/PureMac.app- Discovers all installed apps from
/Applicationsand~/Applications - Heuristic file discovery engine with 10-level matching (bundle ID, company name, entitlements, team identifier, Spotlight metadata, container discovery)
- 3 sensitivity levels: Strict (safe), Enhanced (balanced), Deep (thorough)
- Shows all related files: caches, preferences, containers, logs, support files, launch agents
- System app protection - 27 Apple apps are excluded from the uninstall list
- Master-detail view: app table on left, discovered files on right
- Detects leftover files in
~/Libraryfrom apps that have been uninstalled - Compares Library contents against all installed app identifiers
- One-click cleanup of orphaned files
- Smart Scan - one-click scan across all categories
- System Junk - system caches, logs, and temporary files
- User Cache - dynamically discovers all app caches (no hardcoded app list)
- Mail Attachments - downloaded mail attachments
- Trash Bins - empty all Trash
- Large & Old Files - files over 100 MB or older than 1 year
- Purgeable Space - APFS purgeable disk space detection
- Xcode Junk - DerivedData, Archives, simulator caches
- Brew Cache - Homebrew download cache (detects custom HOMEBREW_CACHE)
- Scheduled Cleaning - automatic scans on configurable intervals
- Built with SwiftUI using native macOS components
NavigationSplitView,Toggle,ProgressView,Form,GroupBox,Table- Respects system light/dark mode automatically
- No custom gradients, glows, or web-app styling
- First-launch onboarding with Full Disk Access setup
- Confirmation dialogs before all destructive operations
- Symlink attack prevention - resolves and validates paths before deletion
- System app protection - Apple apps cannot be uninstalled
- Large & Old Files are never auto-selected
- Structured logging via
os.log(visible in Console.app)
| Onboarding | App Uninstaller |
|---|---|
![]() |
![]() |
| System Junk | Xcode Junk |
|---|---|
![]() |
![]() |
| User Cache |
|---|
![]() |
PureMac/
Logic/Scanning/ - Heuristic scan engine, locations database, conditions
Logic/Utilities/ - Structured logging
Models/ - Data models, typed errors
Services/ - Scan engine, cleaning engine, scheduler
ViewModels/ - Centralized app state
Views/ - Native SwiftUI views
Apps/ - App uninstaller views
Cleaning/ - Smart scan and category views
Orphans/ - Orphan finder
Settings/ - Native Form-based settings
Components/ - Shared components
Key components:
- AppPathFinder - 10-level heuristic matching engine for discovering app-related files
- Locations - 120+ macOS filesystem search paths
- Conditions - 25 per-app matching rules for edge cases (Xcode, Chrome, VS Code, etc.)
- AppInfoFetcher - Spotlight metadata + Info.plist fallback for app discovery
- Logger - Apple
os.logunified logging
Contributions are welcome. See CONTRIBUTING.md for guidelines.
Areas where help is especially welcome:
- Size/date filter presets in category views
- XCTest coverage for AppState and scan engine
- Localization (zh-Hans, zh-Hant, and other languages)
- App icon design
v2.0 was shaped by community feedback and contributions:
- @nguyenhuy158 - Search and filter feature request (#18) and implementation (#29)
- @edufalcao - Cleaning safety guards and confirmation dialogs (#30)
- @zeck00 - UI overhaul (#31), app uninstaller with system app protection (#32), and onboarding experience (#33)
- @0x-man - Symlink security vulnerability report (#25)
- @ansidev - Checkbox interaction bug report (#34)
- @fengcheng01 - App uninstaller feature request (#28)
- @scholzfuni - Modularization proposal (#23)
MIT License. See LICENSE for details.





