Skip to content

DodoApps/dodotidy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

41 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

DodoTidy - macOS System Cleaner, Analysis and Monitor

DodoTidy Logo

License: MIT macOS Swift

🌍 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

Features

  • 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

Comparison with Paid Alternatives

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 ❌ ❌ ❌

Safety Guardrails

DodoTidy is designed with multiple safety mechanisms to protect your data:

1. Trash-based deletion (Recoverable)

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.

2. Protected paths

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.

3. Safe vs manual-only categories

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

4. Dry run mode

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

5. File age filter

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.

6. Scheduled task confirmation

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

7. User-space only operations

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

8. Safe optimizer commands

The optimizer only runs well-known, safe system commands:

  • dscacheutil -flushcache - Flush DNS cache
  • qlmanage -r cache - Reset Quick Look thumbnails
  • lsregister - Rebuild Launch Services database

No destructive or risky system commands are included.

Installation

Homebrew (Recommended)

brew tap dodoapps/tap
brew install --cask dodotidy
xattr -cr /Applications/DodoTidy.app

Manual Installation

  1. Download the latest DMG from Releases
  2. Open the DMG and drag DodoTidy to Applications
  3. Right-click and select "Open" on first launch (required for unsigned apps)

Or run: xattr -cr /Applications/DodoTidy.app

Requirements

  • macOS 14.0 or later
  • Xcode 15.0 or later (for building from source)

Building from Source

Using XcodeGen (Recommended)

# Install dependencies
make install-dependencies

# Generate Xcode project
make generate-project

# Build the app
make build

# Run the app
make run

Using Xcode directly

  1. Run make generate-project to create the Xcode project
  2. Open DodoTidy.xcodeproj in Xcode
  3. Build and run (Cmd+R)

Project structure

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

Architecture

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.

Settings

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

Design system

  • Primary color: #13715B (Green)
  • Background: #0F1419 (Dark)
  • Text primary: #F9FAFB
  • Border radius: 4px
  • Button height: 34px

License

MIT License


Part of the Dodo app family (DodoPulse, DodoTidy, DodoClip, DodoNest)

About

A native macOS system cleaner and optimization app built with SwiftUI

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors