π Translations: TΓΌrkΓ§e | Deutsch | FranΓ§ais
A native macOS application for system monitoring, disk analysis, and cleanup. Built with SwiftUI for macOS 14+.
Screen.Recording.2026-01-27.at.12.22.38.AM.mov
- Dashboard: Real-time system metrics (CPU, memory, disk, battery, Bluetooth devices)
- Cleaner: Scan and remove caches, logs, and temporary files
- Analyzer: Visual disk space analysis with interactive navigation
- Optimizer: System optimization tasks (DNS flush, Spotlight reset, font cache rebuild, etc.)
- Apps: View installed applications and uninstall with related file cleanup
- History: Track all cleaning operations
- Scheduled tasks: Automate cleanup routines
DodoTidy is a free and open-source alternative to paid macOS system cleaners like CleanMyMac X, MacKeeper, and DaisyDisk. It offers comparable features without the subscription fees or one-time purchase costs.
| Feature | DodoTidy | CleanMyMac X | MacKeeper | DaisyDisk |
|---|---|---|---|---|
| Price | Free (Open Source) | $39.95/year or $89.95 one-time | $71.40/year ($5.95/mo) | $9.99 one-time |
| System Monitoring | β CPU, RAM, Disk, Battery, Bluetooth | β CPU, RAM, Disk | β Memory monitoring | β |
| Cache/Junk Cleaning | β | β | β | β |
| Disk Space Analyzer | β Visual sunburst chart | β Space Lens | β | β Visual rings |
| App Uninstaller | β With related files | β With related files | β Smart Uninstaller | β |
| System Optimization | β DNS, Spotlight, fonts, Dock | β Maintenance scripts | β Startup items, RAM | β |
| Scheduled Cleaning | β | β | β | β |
| Trash-based Deletion | β Always recoverable | β | β | β |
| Dry Run Mode | β | β | β | β |
| Protected Paths | β Customizable | β | β | N/A |
| macOS Version | 14.0+ (Sonoma) | 10.13+ | 10.13+ | 10.13+ |
| Open Source | β MIT License | β | β | β |
DodoTidy is designed with multiple safety mechanisms to protect your data:
All file deletions use macOS's trashItem() API, which moves files to Trash instead of permanently deleting them. You can always recover accidentally deleted files from Trash.
The following paths are protected by default and will never be cleaned:
~/Documents- Your documents~/Desktop- Desktop files~/Pictures,~/Movies,~/Music- Media libraries~/.ssh,~/.gnupg- Security keys~/.aws,~/.kube- Cloud credentials~/Library/Keychains- System keychains~/Library/Application Support/MobileSync- iOS device backups
You can customize protected paths in Settings.
Safe auto-clean paths (used by scheduled tasks):
- Browser caches (Safari, Chrome, Firefox)
- Application caches (Spotify, Slack, Discord, VS Code, Zoom, Teams)
- Xcode DerivedData
Manual-only paths (require explicit user action, never auto-cleaned):
- Downloads - May contain important unprocessed files
- Trash - Emptying is IRREVERSIBLE
- System logs - May be needed for troubleshooting
- Developer caches (npm, Yarn, Homebrew, pip, CocoaPods, Gradle, Maven) - May require lengthy re-downloads
Enable "Dry run mode" in Settings to preview exactly what files would be deleted without actually deleting anything. This shows:
- File paths
- File sizes
- Modification dates
- Total count and size
Set a minimum file age (in days) to only clean files older than a specified threshold. This prevents accidentally deleting recently created or modified files.
Example: Set to 7 days to only clean files that haven't been modified in the past week.
When "Confirm scheduled tasks" is enabled (default), scheduled cleaning tasks will:
- Send a notification when ready to run
- Wait for user confirmation before executing
- Never auto-clean without user review
DodoTidy operates entirely within user space:
- No sudo or root privileges required
- Cannot modify system files
- Cannot affect other users' data
- All operations limited to
~/paths
The optimizer only runs well-known, safe system commands:
dscacheutil -flushcache- Flush DNS cacheqlmanage -r cache- Reset Quick Look thumbnailslsregister- Rebuild Launch Services database
No destructive or risky system commands are included.
brew tap dodoapps/tap
brew install --cask dodotidy
xattr -cr /Applications/DodoTidy.app- Download the latest DMG from Releases
- Open the DMG and drag DodoTidy to Applications
- Right-click and select "Open" on first launch (required for unsigned apps)
Or run: xattr -cr /Applications/DodoTidy.app
- macOS 14.0 or later
- Xcode 15.0 or later (for building from source)
# Install dependencies
make install-dependencies
# Generate Xcode project
make generate-project
# Build the app
make build
# Run the app
make run- Run
make generate-projectto create the Xcode project - Open
DodoTidy.xcodeprojin Xcode - Build and run (Cmd+R)
DodoTidy/
βββ App/
β βββ DodoTidyApp.swift # Main app entry point
β βββ AppDelegate.swift # Menu bar management
β βββ StatusItemManager.swift # Status bar icon
βββ Views/
β βββ MainWindow/ # Main window views
β β βββ MainWindowView.swift
β β βββ SidebarView.swift
β β βββ DashboardView.swift
β β βββ CleanerView.swift
β β βββ AnalyzerView.swift
β β βββ OptimizerView.swift
β β βββ AppsView.swift
β β βββ HistoryView.swift
β β βββ ScheduledTasksView.swift
β βββ MenuBar/
β βββ MenuBarView.swift # Menu bar popover
βββ Services/
β βββ DodoTidyService.swift # Core service providers
βββ Models/
β βββ SystemMetrics.swift # System metrics models
β βββ ScanResult.swift # Scan result models
βββ Utilities/
β βββ ProcessRunner.swift # Process execution helper
β βββ DesignSystem.swift # Colors, fonts, styles
β βββ Extensions.swift # Formatting helpers
βββ Resources/
βββ Assets.xcassets # App icons
The app uses a provider-based architecture:
- DodoTidyService: Main coordinator that manages all providers
- StatusProvider: System metrics collection using native macOS APIs
- AnalyzerProvider: Disk space analysis using FileManager
- CleanerProvider: Cache and temporary file cleanup with safety guardrails
- OptimizerProvider: System optimization tasks
- UninstallProvider: App uninstallation with related file detection
All providers use Swift's @Observable macro for reactive state management.
Access Settings from the app menu or sidebar to configure:
- General: Launch at login, menu bar icon, refresh interval
- Cleaning: Confirm before cleaning, dry run mode, file age filter
- Protected paths: Paths that should never be cleaned
- Notifications: Low disk space alerts, scheduled task notifications
- Primary color: #13715B (Green)
- Background: #0F1419 (Dark)
- Text primary: #F9FAFB
- Border radius: 4px
- Button height: 34px
MIT License
Part of the Dodo app family (DodoPulse, DodoTidy, DodoClip, DodoNest)
