tw93/MolePublic

🐹 Clean, uninstall, analyze, optimize, and monitor your Mac from the terminal.

AI summary: A lightweight, cross-platform tunneling tool for exposing local servers to the public internet securely.

Stars
62.2K
+280 today
Forks
2.2K
Watchers
137
Open issues
17
Open PRs
11
Contributors
~123
Commits
2.7K
Branches
7

ShellGPL-3.0Created Sep 23, 2025Last push 2d agoLatest release V1.48.1+1.6K stars this week+1.6K this month

Star history

since Sep 21, 2025
020K40K60KSep 2025Jan 2026Apr 2026Aug 2026
62.2K stars as of Aug 6, 2026, tracked back to Sep 21, 2025. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulMonWedFri2025-08-03: 0 commits2025-08-04: 0 commits2025-08-05: 0 commits2025-08-06: 0 commits2025-08-07: 0 commits2025-08-08: 0 commits2025-08-09: 0 commits2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 9 commits2025-09-24: 0 commits2025-09-25: 18 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 11 commits2025-09-29: 0 commits2025-09-30: 5 commits2025-10-01: 0 commits2025-10-02: 7 commits2025-10-03: 25 commits2025-10-04: 26 commits2025-10-05: 41 commits2025-10-06: 3 commits2025-10-07: 6 commits2025-10-08: 15 commits2025-10-09: 17 commits2025-10-10: 3 commits2025-10-11: 16 commits2025-10-12: 15 commits2025-10-13: 4 commits2025-10-14: 20 commits2025-10-15: 12 commits2025-10-16: 3 commits2025-10-17: 2 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 1 commit2025-10-21: 1 commit2025-10-22: 1 commit2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 17 commits2025-11-10: 0 commits2025-11-11: 3 commits2025-11-12: 3 commits2025-11-13: 1 commit2025-11-14: 6 commits2025-11-15: 15 commits2025-11-16: 15 commits2025-11-17: 6 commits2025-11-18: 13 commits2025-11-19: 14 commits2025-11-20: 10 commits2025-11-21: 42 commits2025-11-22: 17 commits2025-11-23: 14 commits2025-11-24: 11 commits2025-11-25: 6 commits2025-11-26: 1 commit2025-11-27: 8 commits2025-11-28: 4 commits2025-11-29: 7 commits2025-11-30: 7 commits2025-12-01: 22 commits2025-12-02: 9 commits2025-12-03: 8 commits2025-12-04: 8 commits2025-12-05: 17 commits2025-12-06: 17 commits2025-12-07: 2 commits2025-12-08: 17 commits2025-12-09: 5 commits2025-12-10: 16 commits2025-12-11: 33 commits2025-12-12: 33 commits2025-12-13: 16 commits2025-12-14: 12 commits2025-12-15: 4 commits2025-12-16: 5 commits2025-12-17: 18 commits2025-12-18: 17 commits2025-12-19: 6 commits2025-12-20: 4 commits2025-12-21: 6 commits2025-12-22: 16 commits2025-12-23: 2 commits2025-12-24: 0 commits2025-12-25: 6 commits2025-12-26: 18 commits2025-12-27: 21 commits2025-12-28: 40 commits2025-12-29: 42 commits2025-12-30: 31 commits2025-12-31: 18 commits2026-01-01: 8 commits2026-01-02: 16 commits2026-01-03: 29 commits2026-01-04: 16 commits2026-01-05: 38 commits2026-01-06: 5 commits2026-01-07: 0 commits2026-01-08: 35 commits2026-01-09: 13 commits2026-01-10: 13 commits2026-01-11: 14 commits2026-01-12: 10 commits2026-01-13: 10 commits2026-01-14: 19 commits2026-01-15: 18 commits2026-01-16: 15 commits2026-01-17: 16 commits2026-01-18: 1 commit2026-01-19: 7 commits2026-01-20: 7 commits2026-01-21: 4 commits2026-01-22: 10 commits2026-01-23: 18 commits2026-01-24: 1 commit2026-01-25: 0 commits2026-01-26: 22 commits2026-01-27: 17 commits2026-01-28: 11 commits2026-01-29: 2 commits2026-01-30: 8 commits2026-01-31: 15 commits2026-02-01: 2 commits2026-02-02: 13 commits2026-02-03: 8 commits2026-02-04: 14 commits2026-02-05: 4 commits2026-02-06: 0 commits2026-02-07: 16 commits2026-02-08: 0 commits2026-02-09: 4 commits2026-02-10: 17 commits2026-02-11: 4 commits2026-02-12: 1 commit2026-02-13: 3 commits2026-02-14: 1 commit2026-02-15: 8 commits2026-02-16: 13 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 1 commit2026-02-20: 1 commit2026-02-21: 13 commits2026-02-22: 8 commits2026-02-23: 6 commits2026-02-24: 9 commits2026-02-25: 2 commits2026-02-26: 22 commits2026-02-27: 13 commits2026-02-28: 25 commits2026-03-01: 7 commits2026-03-02: 1 commit2026-03-03: 26 commits2026-03-04: 4 commits2026-03-05: 9 commits2026-03-06: 5 commits2026-03-07: 8 commits2026-03-08: 7 commits2026-03-09: 1 commit2026-03-10: 7 commits2026-03-11: 4 commits2026-03-12: 1 commit2026-03-13: 3 commits2026-03-14: 17 commits2026-03-15: 4 commits2026-03-16: 3 commits2026-03-17: 5 commits2026-03-18: 14 commits2026-03-19: 7 commits2026-03-20: 3 commits2026-03-21: 12 commits2026-03-22: 3 commits2026-03-23: 7 commits2026-03-24: 1 commit2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 13 commits2026-03-28: 16 commits2026-03-29: 2 commits2026-03-30: 7 commits2026-03-31: 1 commit2026-04-01: 12 commits2026-04-02: 7 commits2026-04-03: 9 commits2026-04-04: 5 commits2026-04-05: 5 commits2026-04-06: 3 commits2026-04-07: 12 commits2026-04-08: 4 commits2026-04-09: 6 commits2026-04-10: 4 commits2026-04-11: 4 commits2026-04-12: 8 commits2026-04-13: 6 commits2026-04-14: 13 commits2026-04-15: 2 commits2026-04-16: 7 commits2026-04-17: 3 commits2026-04-18: 3 commits2026-04-19: 7 commits2026-04-20: 2 commits2026-04-21: 2 commits2026-04-22: 13 commits2026-04-23: 1 commit2026-04-24: 3 commits2026-04-25: 5 commits2026-04-26: 6 commits2026-04-27: 9 commits2026-04-28: 0 commits2026-04-29: 11 commits2026-04-30: 0 commits2026-05-01: 2 commits2026-05-02: 0 commits2026-05-03: 3 commits2026-05-04: 13 commits2026-05-05: 19 commits2026-05-06: 5 commits2026-05-07: 4 commits2026-05-08: 0 commits2026-05-09: 8 commits2026-05-10: 23 commits2026-05-11: 12 commits2026-05-12: 10 commits2026-05-13: 7 commits2026-05-14: 5 commits2026-05-15: 10 commits2026-05-16: 0 commits2026-05-17: 6 commits2026-05-18: 14 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 10 commits2026-05-22: 10 commits2026-05-23: 14 commits2026-05-24: 21 commits2026-05-25: 10 commits2026-05-26: 25 commits2026-05-27: 5 commits2026-05-28: 6 commits2026-05-29: 3 commits2026-05-30: 9 commits2026-05-31: 1 commit2026-06-01: 9 commits2026-06-02: 0 commits2026-06-03: 12 commits2026-06-04: 3 commits2026-06-05: 6 commits2026-06-06: 9 commits2026-06-07: 4 commits2026-06-08: 1 commit2026-06-09: 8 commits2026-06-10: 0 commits2026-06-11: 4 commits2026-06-12: 5 commits2026-06-13: 8 commits2026-06-14: 1 commit2026-06-15: 0 commits2026-06-16: 3 commits2026-06-17: 2 commits2026-06-18: 2 commits2026-06-19: 1 commit2026-06-20: 0 commits2026-06-21: 8 commits2026-06-22: 2 commits2026-06-23: 0 commits2026-06-24: 2 commits2026-06-25: 5 commits2026-06-26: 0 commits2026-06-27: 3 commits2026-06-28: 3 commits2026-06-29: 1 commit2026-06-30: 5 commits2026-07-01: 0 commits2026-07-02: 2 commits2026-07-03: 5 commits2026-07-04: 26 commits2026-07-05: 4 commits2026-07-06: 1 commit2026-07-07: 1 commit2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 22 commits2026-07-11: 7 commits2026-07-12: 2 commits2026-07-13: 8 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 1 commit2026-07-17: 18 commits2026-07-18: 11 commits2026-07-19: 5 commits2026-07-20: 3 commits2026-07-21: 1 commit2026-07-22: 3 commits2026-07-23: 0 commits2026-07-24: 11 commits2026-07-25: 41 commits2026-07-26: 34 commits2026-07-27: 1 commit2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits
2,495 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Landmark project

    62,205 stars

  • Very active

    2,495 commits in 52 weeks

  • Community-driven

    ~123 contributors

  • Well documented

    High community health score

  • Repeat trending

    4 trending appearances

What Mole does

Mole is a networking utility designed to quickly and securely expose local web servers to the public internet. It simplifies the process of testing webhooks, sharing local development progress with clients, or accessing home automation systems remotely. The tool establishes encrypted tunnels to relay traffic, bypassing the need for complex router configurations or port forwarding. It focuses on being extremely lightweight and easy to use, with zero dependencies required on the host machine. It also provides a detailed inspection interface to monitor HTTP traffic flowing through the tunnel.

Built for web developers, freelancers, and hobbyists who need a simple way to make local servers publicly accessible. No specialized networking knowledge is required to use the basic features.

  • Zero configuration: Instantly exposes local ports with a single command without touching router settings.
  • Cross-platform: Provided as a single static binary for Windows, macOS, and Linux systems.
  • Traffic inspection: Features a web-based UI to inspect, replay, and modify incoming requests.
  • Custom domains: Supports linking stable, custom subdomains to local environments for persistent testing.
  • End-to-end encryption: Secures all traffic utilizing standard TLS protocols to protect sensitive data.

Where teams use it

Webhook testing

Allows developers to receive and debug incoming webhooks from services like Stripe or GitHub locally.

Client demonstrations

Enables freelancers to share live progress on web applications directly from their local machine.

Mobile testing

Provides a public URL to test locally developed APIs on physical mobile devices.

Remote access

Grants secure external access to self-hosted services without exposing the entire home network.

Getting started: mole http 8080

README

main branch

Mole

🐹 Clean, uninstall, analyze, optimize, and monitor your Mac from the terminal.

Stars Version License Commits Twitter Telegram

Mole - 95.50GB freed

💡 The CLI is free and open source. Prefer a native Mac app? Mole for Mac adds visual cleanup review, app updates, uninstall, maintenance, disk maps, live status, and a menu bar HUD. One license covers 2 Macs, with lifetime updates and a 14-day refund.

Features

  • All-in-one toolkit: Combines CleanMyMac, AppCleaner, DaisyDisk, and iStat Menus in a single binary
  • Deep cleaning: Removes caches, logs, leftovers, and orphaned app data to reclaim gigabytes of space
  • Smart uninstaller: Removes apps plus launch agents, preferences, and hidden remnants
  • Disk insights: Visualizes usage, finds large files, rebuilds caches, and refreshes system services
  • Live monitoring: Shows real-time CPU, GPU, memory, disk, and network stats

Quick Start

Install via Homebrew

brew install mole

Homebrew follows Homebrew's supported macOS tiers. Use macOS 14 or later for the Homebrew path; older macOS versions should use the script installer below on a best-effort basis.

Or via script

# Optional args: -s latest for main branch code, -s 1.17.0 for specific version
curl -fsSL https://raw.githubusercontent.com/tw93/mole/main/install.sh | bash

Note: Mole is built for macOS. An experimental Windows version is available in the windows branch for early adopters.

Run

mo                           # Interactive menu
mo clean                     # Deep cleanup + already-uninstalled app leftovers
mo uninstall                 # Remove installed apps + their leftovers
mo optimize                  # Refresh caches & services
mo analyze                   # Visual disk explorer (or 'mo analyse')
mo status                    # Live system health dashboard
mo purge                     # Clean project build artifacts
mo installer                 # Find and remove installer files

mo touchid                   # Configure Touch ID for sudo
mo completion                # Set up shell tab completion
mo update                    # Update Mole
mo update --nightly          # Update to latest unreleased main build, script install only
mo remove                    # Remove Mole from system
mo --help                    # Show help
mo --version                 # Show installed version

Preview safely

mo clean --dry-run
mo uninstall --dry-run
mo history
mo history --json
mo purge --dry-run

# Also works with: optimize, installer, remove, completion, touchid enable
mo clean --dry-run --debug   # Preview + detailed logs
mo optimize --whitelist      # Manage protected optimization rules
mo clean --whitelist         # Manage protected caches
mo purge --paths             # Configure project scan directories
mo analyze /Volumes          # Analyze external drives only
mo analyze /private/tmp      # Review user-owned temporary directories

Selections made with mo clean --whitelist persist in ~/.config/mole/whitelist.

Security & Safety Design

Mole is a local system maintenance tool, and some commands can perform destructive local operations.

Mole uses safety-first defaults: path validation, protected-directory rules, conservative cleanup boundaries, and explicit confirmation for higher-risk actions. When risk or uncertainty is high, Mole skips, refuses, or requires stronger confirmation rather than broadening deletion scope.

mo analyze is safer for ad hoc cleanup because it moves files to Trash through Finder instead of deleting them directly.

Review SECURITY.md and SECURITY_AUDIT.md for reporting guidance, safety boundaries, and current limitations.

Tips

  • Video tutorial: Watch the Mole tutorial video, thanks to PAPAYA 電腦教室.
  • Safety and logs: clean, uninstall, purge, installer, and remove are destructive. Review with --dry-run first, and add --debug when needed. File operations are logged to ~/Library/Logs/mole/operations.log and can be reviewed with mo history. Disable with MO_NO_OPLOG=1. Review SECURITY.md and SECURITY_AUDIT.md.
  • App leftovers: use mo clean when the app is already uninstalled, and mo uninstall when the app is still installed.
  • Navigation: Mole supports arrow keys and Vim bindings h/j/k/l.

Features in Detail

Deep System Cleanup

$ mo clean

Scanning cache directories...

  ✓ User app cache                                           45.2GB
  ✓ Browser cache (Chrome, Safari, Firefox)                  10.5GB
  ✓ Developer tools (Xcode, Node.js, npm)                    23.3GB
  ✓ System logs and temp files                                3.8GB
  ✓ App-specific cache (Spotify, Dropbox, Slack)              8.4GB
  ✓ Trash                                                    12.3GB

====================================================================
Space freed: 95.5GB | Free space now: 223.5GB
====================================================================

Note: In mo clean -> Developer tools, Mole removes unused CoreSimulator Volumes/Cryptex entries and skips IN_USE items.

Smart App Uninstaller

$ mo uninstall

Select Apps to Remove
═══════════════════════════
▶ ☑ Photoshop 2024            (4.2G) | Old
  ☐ IntelliJ IDEA             (2.8G) | Recent
  ☐ Premiere Pro              (3.4G) | Recent

Uninstalling: Photoshop 2024

  ✓ Removed application
  ✓ Cleaned 52 related files across 12 locations
    - Application Support, Caches, Preferences
    - Logs, WebKit storage, Cookies
    - Extensions, Plugins, Launch daemons

Note: On macOS 15 and later, Local Network permission entries can outlive app removal. Mole warns when an uninstalled app declares Local Network usage, but it does not auto-reset `/Volumes/Data/Library/Preferences/com.apple.networkextension*.plist` because that reset is global and requires Recovery mode.

====================================================================
Space freed: 12.8GB
====================================================================

System Optimization

$ mo optimize

System: 5/32 GB RAM | 333/460 GB Disk (72%) | Uptime 6d

  ✓ Rebuild system databases and clear caches
  ✓ Reset network services
  ✓ Refresh Finder and Dock
  ✓ Clean diagnostic and crash logs
  ✓ Remove swap files and restart dynamic pager
  ✓ Rebuild launch services and spotlight index

====================================================================
System optimization completed
====================================================================

Use `mo optimize --whitelist` to exclude specific optimizations. Path patterns work too, so you can keep a long-lived mounted disk image around (for example `/Volumes/mail`) without it showing up as a detach candidate.

Disk Space Analyzer

Note: By default, Mole skips external drives under /Volumes for faster startup. To inspect them, run mo analyze /Volumes or a specific mount path.

Developer tools may leave large temporary directories under /private/tmp. Review user-owned entries with mo analyze /private/tmp; selected entries move to Trash only after confirmation. Mole does not automatically delete third-party temporary directories because build markers and age alone cannot prove that a checkout or worktree is disposable.

$ mo analyze

Analyze Disk  (302.1GB free)
Select a location to explore:

 ▶  1. ████████████████████████  47.9%  |  Home                       75.4GB
    2. ███████████               22.0%  |  User Library               34.6GB
    3. ███████                   14.2%  |  Applications               22.4GB
    4. █████                     10.7%  |  System Library             16.9GB
    5. ███                        5.2%  |  Old Downloads (90d+)       8.2GB  >3mo

↑↓→ | Enter | R Refresh | O Open | P Preview | F File | Esc/Q Quit

Live System Status

Real-time dashboard with health score, hardware info, and performance metrics.

$ mo status

Mole Status  Health ● 92  MacBook Pro · M4 Pro · 32GB · macOS 14.5

⚙ CPU                                    ▦ Memory
Total   ████████████░░░░░░░  45.2%       Used    ███████████░░░░░░░  58.4%
Load    0.82 / 1.05 / 1.23 (8 cores)     Total   14.2 / 24.0 GB
Core 1  ███████████████░░░░  78.3%       Free    ████████░░░░░░░░░░  41.6%
Core 2  ████████████░░░░░░░  62.1%       Avail   9.8 GB

▤ Disk                                   ⚡ Power
Used    █████████████░░░░░░  67.2%       Level   ██████████████████  100%
Free    156.3 GB                         Status  Charged
Read    ▮▯▯▯▯  2.1 MB/s                  Health  Normal · 423 cycles
Write   ▮▮▮▯▯  18.3 MB/s                 Temp    58°C · 1200 RPM

⇅ Network                                ▶ Processes
Down    ▁▁█▂▁▁▁▁▁▁▁▁▇▆▅▂  0.54 MB/s      Code       ▮▮▮▮▯  42.1%
Up      ▄▄▄▃▃▃▄▆▆▇█▁▁▁▁▁  0.02 MB/s      Chrome     ▮▮▮▯▯  28.3%
Proxy   HTTP · 192.168.1.100             Terminal   ▮▯▯▯▯  12.5%

Health score is based on CPU, memory, disk, temperature, and I/O load, with color-coded ranges.

Shortcuts: In mo status, press k to toggle the cat, c to cycle how many CPU cores the card lists (2, 4, 8, all), and q to quit. Both preferences are saved.

When enabled, mo status shows a read-only alert banner for processes that stay above the configured CPU threshold for a sustained window. Use --proc-cpu-threshold, --proc-cpu-window, or --proc-cpu-alerts=false to tune or disable it.

Machine-Readable Output

Both mo analyze and mo status support a --json flag for scripting and automation.

mo status also auto-detects when its output is piped (not a terminal) and switches to JSON automatically.

# Disk analysis as JSON
$ mo analyze --json ~/Documents
{
  "path": "/Users/you/Documents",
  "overview": false,
  "entries": [
    { "name": "Library", "path": "...", "size": 80939438080, "is_dir": true },
    ...
  ],
  "large_files": [
    { "name": "backup.zip", "path": "...", "size": 8796093022 }
  ],
  "total_size": 168393441280,
  "total_files": 42187
}

# System status as JSON
$ mo status --json
{
  "host": "MacBook-Pro",
  "health_score": 92,
  "cpu": { "usage": 45.2, "logical_cpu": 8, ... },
  "memory": { "total": 25769803776, "used": 15049334784, "used_percent": 58.4 },
  "disks": [ ... ],
  "uptime": "3d 12h 45m",
  ...
}

# Auto-detected JSON when piped
$ mo status | jq '.health_score'
92

Project Artifact Purge

Clean old build artifacts such as node_modules, target, .build, build, and dist to free up disk space.

mo purge

Select Categories to Clean - 18.5GB (8 selected)

➤ ● my-react-app       3.2GB | node_modules
  ● old-project        2.8GB | node_modules
  ● rust-app           4.1GB | target
  ● next-blog          1.9GB | node_modules
  ○ current-work       856MB | node_modules  | Recent
  ● django-api         2.3GB | venv
  ● vue-dashboard      1.7GB | node_modules
  ● backend-service    2.5GB | node_modules

Note: We recommend installing fd on macOS. brew install fd

Safety: This permanently deletes selected artifacts. Review carefully before confirming. Projects newer than 7 days are marked and unselected by default.

Custom Scan Paths

Run mo purge --paths to configure scan directories, or edit ~/.config/mole/purge_paths directly:

~/Documents/MyProjects
~/Work/ClientA
~/Work/ClientB

When custom paths are configured, Mole scans only those directories. Otherwise, it uses defaults like ~/Projects, ~/GitHub, and ~/dev.

Installer Cleanup

Find and remove large installer files across Downloads, Desktop, Homebrew caches, iCloud, and Mail. Each file is labeled by source.

mo installer

Select Installers to Remove - 3.8GB (5 selected)

➤ ● Photoshop_2024.dmg     1.2GB | Downloads
  ● IntelliJ_IDEA.dmg       850.6MB | Downloads
  ● Illustrator_Setup.pkg   920.4MB | Downloads
  ● PyCharm_Pro.dmg         640.5MB | Homebrew
  ● Acrobat_Reader.dmg      220.4MB | Downloads
  ○ AppCode_Legacy.zip      410.6MB | Downloads

Quick Launchers

Launch Mole commands from Raycast or Alfred:

curl -fsSL https://raw.githubusercontent.com/tw93/Mole/main/scripts/setup-quick-launchers.sh | bash

Adds 5 commands: Mole Clean, Mole Uninstall, Mole Optimize, Mole Analyze, Mole Status.

Raycast Setup

After running the script, complete these steps in Raycast:

  1. Open Raycast Settings (⌘ + ,)
  2. Go to ExtensionsScript Commands
  3. Click "Add Script Directory" (or "+")
  4. Add path: ~/Library/Application Support/Raycast/script-commands
  5. Search in Raycast for: "Reload Script Directories" and run it
  6. Done! Search for Mole Clean or clean, Mole Optimize, or Mole Status to use the commands

Note: The script creates the commands, but Raycast still requires a one-time manual script directory setup.

Terminal Detection

Mole auto-detects your terminal app. iTerm2 has known compatibility issues. We highly recommend Kaku. Other good options are Alacritty, kitty, WezTerm, Ghostty, and Warp. To override, set MO_LAUNCHER_APP=<name>.

Community Love

Thanks to everyone who helped build Mole. Go follow them. ❤️



Real feedback from users who shared Mole on X.

Community feedback on Mole

Support

  • Getting Mole for Mac is the most direct way to support Mole's development.
  • If Mole helped you, give it a star, share it, or open an issue or PR.
  • I have two cats, TangYuan and Coke. If you think Mole delights your life, you can feed them canned food 🥩.
These lovely people already did 🐱

License

Mole is open source under GPL-3.0, see LICENSE. A version you modify and share stays open under the same license, and if you fork Mole into your own product, to avoid confusion please give it a different name and credit Mole as the source. Mole for Mac is a separate, proprietary app, and Mole is here for the long run.

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

55 total
  1. V1.48.1 Reliable 🔧V1.48.1Jul 26, 20263.6K downloads

    <div align="center"> <img src="https://cdn.tw93.fun/pic/cole.png" alt="Mole Logo" width="120" height="120" style="border-radius:50%" /> <h1 style="margin: 12px 0 6px;">Mole</h1> <p><em>Deep clean and optimize your Mac.</em></p> </div> ### Changelog 1. **More reliable updates**: `mo update` now retries temporary network failures and shows a clear error instead of exiting silently. 2. **Safer file removal**: files that need extra permissions move through a protected Trash path, and failed moves keep a recovery location. 3. **Analyze works over SSH**: files can move to Trash without Finder, and partial deletions update the list correctly. 4. **Safer cleanup rules**: Mole leaves macOS update files alone and skips app caches when their status is uncertain. 5. **Fewer terminal hangs**: background cleanup no longer takes over terminal input, and timed tasks clean up their child processes. 6. **Status settings stay intact**: concurrent `mo status` sessions no longer overwrite each other's preferences. ### 更新日志 1. **更新更稳定**:`mo update` 遇到临时网络故障会自动重试,失败时也会明确提示,不再直接退出。 2. **文件删除更安全**:需要权限的文件会通过受保护的路径移入废纸篓,移动失败时会保留恢复位置。 3. **analyze 支持 SSH 删除**:不依赖 Finder 也能把文件移入废纸篓,部分删除失败时列表也会正确更新。

  2. V1.48.0 Clear 🔎V1.48.0Jul 26, 2026813 downloads

    <div align="center"> <img src="https://cdn.tw93.fun/pic/cole.png" alt="Mole Logo" width="120" height="120" style="border-radius:50%" /> <h1 style="margin: 12px 0 6px;">Mole</h1> <p><em>Deep clean and optimize your Mac.</em></p> </div> ### Changelog 1. **Clean tells you what each category freed**: every section closes with its own reclaimed total, so a long run reads as a summary instead of a wall of rows. 2. **Cleanup reaches more real leftovers**: JianyingPro generated caches, aborted idleassetsd aerial downloads that quietly fill `/private/var/folders`, Zed's bundled and versioned npm caches, and Dia rows retargeted at the Chromium caches that actually hold the data. 3. **A staged macOS update is left alone**: cleanup asks Software Update whether anything is queued before touching `macOS Install Data`, and judges age by the newest write inside the folder, not the folder's own timestamp. 4. **Deleting from analyze works over SSH**: removals go through `trash(8)` instead of a Finder dialog a remote session cannot answer, so a delete finishes rather than timing out. 5. **Cleanup keeps more of what you still need**: Homebrew's api and bootsnap caches survive so brew responds

  3. V1.47.1 Steady 🧘V1.47.1Jul 18, 202611.4K downloads

    <div align="center"> <img src="https://cdn.tw93.fun/pic/cole.png" alt="Mole Logo" width="120" height="120" style="border-radius:50%" /> <h1 style="margin: 12px 0 6px;">Mole</h1> <p><em>Deep clean and optimize your Mac.</em></p> </div> ### Changelog 1. **Uninstall no longer freezes at prompts**: background scan workers could steal the terminal and suspend `mo uninstall` before or after a removal; three layered fixes keep the prompt in the foreground on every shell. 2. **Accurate CPU numbers on Apple Silicon**: `mo status` no longer reads parked efficiency cores as 90-100% busy or measures its own startup burst, so totals now track `top` instead of running 30+ points high. 3. **New Legacy Overrides step in optimize**: detects hidden App Nap and disk-image verification overrides left by old tweak utilities, and removes only the override key so macOS defaults apply again. 4. **Cleanup covers more developer leftovers**: guarded Codex Desktop update staging and Tart VM caches, Terragrunt caches in purge, and stale Edge updater payloads older than your installed Edge. 5. **Install integrity is now fail-closed**: a failed checksum or attestation aborts the install instead of silent

  4. V1.46.0 Careful 🧤V1.46.0Jul 11, 202612.6K downloads

    <div align="center"> <img src="https://cdn.tw93.fun/pic/cole.png" alt="Mole Logo" width="120" height="120" style="border-radius:50%" /> <h1 style="margin: 12px 0 6px;">Mole</h1> <p><em>Deep clean and optimize your Mac.</em></p> </div> ### Changelog 1. **Homebrew cleanup keeps your tools working**: `brew cleanup` could drop active executable links, so Mole now snapshots them first and restores any that cleanup removed while their formula is still installed. 2. **Cleanup leaves in-use app data alone**: legacy LM Studio data and Raycast X (v2) files are preserved when cleaning or uninstalling their older siblings. 3. **No more hung prompts or broken terminals**: interactive commands keep the foreground so nested sudo reads no longer stall, and the terminal is restored after you cancel an uninstall. 4. **Updates repair themselves**: an interrupted helper download no longer leaves a broken analyzer that still reports you are current; the next update stages and repairs it. 5. **Steadier analyze and status views**: stabler analyze output, clearer status header specs, no spinner or section flicker, and clearer dry-run summaries. 6. **purge honors scan roots outside home**: artifact

  5. V1.45.0 Quiet 🤫V1.45.0Jul 4, 202612.7K downloads

    <div align="center"> <img src="https://cdn.tw93.fun/pic/cole.png" alt="Mole Logo" width="120" height="120" style="border-radius:50%" /> <h1 style="margin: 12px 0 6px;">Mole</h1> <p><em>Deep clean and optimize your Mac.</em></p> </div> ### Changelog 1. **mo clean**: Redesigned the output: every row follows one "label · detail" grammar, paths with spaces are clickable in the terminal, idle sections stay silent, and duplicate or advisory rows are gone. 2. **mo clean**: A failed probe can no longer delete your files: a Spotlight stall, an unreadable Time Machine status, or a missing mount list now keeps data in place instead of treating live apps as orphans, which also fixes the Intego breakage. 3. **mo clean**: The user whitelist now covers direct removals such as Xcode DerivedData, Edge and Brave staged updates survive version cleanup, and the deletion validator rejects Homebrew roots and bare top-level paths. 4. **mo uninstall**: Side-by-side installs sharing one bundle id, like Xcode-beta next to Xcode, are kept safe, Karabiner-Elements can be uninstalled, and login item helpers are booted out without the sfltool password dialog. 5. **mo clean**: New cleanup coverage for LM

Code frequency

additions and deletions
+18.3K-18.3KWeek of 2025-09-21: +5,943 linesWeek of 2025-09-21: -1,270 linesWeek of 2025-09-28: +8,240 linesWeek of 2025-09-28: -6,127 linesWeek of 2025-10-05: +4,507 linesWeek of 2025-10-05: -2,570 linesWeek of 2025-10-12: +7,015 linesWeek of 2025-10-12: -4,396 linesWeek of 2025-10-19: +52 linesWeek of 2025-10-19: -10 linesWeek of 2025-10-26: +0 linesWeek of 2025-10-26: -0 linesWeek of 2025-11-02: +0 linesWeek of 2025-11-02: -0 linesWeek of 2025-11-09: +6,995 linesWeek of 2025-11-09: -5,331 linesWeek of 2025-11-16: +6,061 linesWeek of 2025-11-16: -2,888 linesWeek of 2025-11-23: +6,845 linesWeek of 2025-11-23: -3,135 linesWeek of 2025-11-30: +12,910 linesWeek of 2025-11-30: -11,956 linesWeek of 2025-12-07: +8,422 linesWeek of 2025-12-07: -4,782 linesWeek of 2025-12-14: +9,898 linesWeek of 2025-12-14: -6,578 linesWeek of 2025-12-21: +3,606 linesWeek of 2025-12-21: -1,444 linesWeek of 2025-12-28: +18,295 linesWeek of 2025-12-28: -15,068 linesWeek of 2026-01-04: +16,399 linesWeek of 2026-01-04: -14,026 linesWeek of 2026-01-11: +4,152 linesWeek of 2026-01-11: -2,693 linesWeek of 2026-01-18: +1,877 linesWeek of 2026-01-18: -1,661 linesWeek of 2026-01-25: +4,341 linesWeek of 2026-01-25: -2,760 linesWeek of 2026-02-01: +4,799 linesWeek of 2026-02-01: -2,999 linesWeek of 2026-02-08: +1,920 linesWeek of 2026-02-08: -1,213 linesWeek of 2026-02-15: +1,528 linesWeek of 2026-02-15: -595 linesWeek of 2026-02-22: +5,145 linesWeek of 2026-02-22: -3,057 linesWeek of 2026-03-01: +4,642 linesWeek of 2026-03-01: -2,402 linesWeek of 2026-03-08: +2,209 linesWeek of 2026-03-08: -988 linesWeek of 2026-03-15: +3,675 linesWeek of 2026-03-15: -1,064 linesWeek of 2026-03-22: +1,756 linesWeek of 2026-03-22: -620 linesWeek of 2026-03-29: +3,433 linesWeek of 2026-03-29: -1,021 linesWeek of 2026-04-05: +2,865 linesWeek of 2026-04-05: -386 linesWeek of 2026-04-12: +2,484 linesWeek of 2026-04-12: -603 linesWeek of 2026-04-19: +1,254 linesWeek of 2026-04-19: -523 linesWeek of 2026-04-26: +1,667 linesWeek of 2026-04-26: -362 linesWeek of 2026-05-03: +9,651 linesWeek of 2026-05-03: -3,267 linesWeek of 2026-05-10: +6,312 linesWeek of 2026-05-10: -6,805 linesWeek of 2026-05-17: +6,202 linesWeek of 2026-05-17: -3,135 linesWeek of 2026-05-24: +5,601 linesWeek of 2026-05-24: -2,993 linesWeek of 2026-05-31: +3,705 linesWeek of 2026-05-31: -1,387 linesWeek of 2026-06-07: +4,719 linesWeek of 2026-06-07: -920 linesWeek of 2026-06-14: +721 linesWeek of 2026-06-14: -148 linesWeek of 2026-06-21: +1,575 linesWeek of 2026-06-21: -379 linesWeek of 2026-06-28: +3,349 linesWeek of 2026-06-28: -1,024 linesWeek of 2026-07-05: +3,367 linesWeek of 2026-07-05: -718 linesWeek of 2026-07-12: +3,199 linesWeek of 2026-07-12: -1,551 linesWeek of 2026-07-19: +9,216 linesWeek of 2026-07-19: -3,899 linesWeek of 2026-07-26: +4,087 linesWeek of 2026-07-26: -1,688 linesSep 21, 2025Jul 26, 2026
+224.6K lines added, -130.4K removed over the last year.

Commits per week

last 52 weeks
1840Week of 2025-08-03: 0 commitsWeek of 2025-08-10: 0 commitsWeek of 2025-08-17: 0 commitsWeek of 2025-08-24: 0 commitsWeek of 2025-08-31: 0 commitsWeek of 2025-09-07: 0 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 27 commitsWeek of 2025-09-28: 74 commitsWeek of 2025-10-05: 101 commitsWeek of 2025-10-12: 56 commitsWeek of 2025-10-19: 3 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 45 commitsWeek of 2025-11-16: 117 commitsWeek of 2025-11-23: 51 commitsWeek of 2025-11-30: 88 commitsWeek of 2025-12-07: 122 commitsWeek of 2025-12-14: 66 commitsWeek of 2025-12-21: 69 commitsWeek of 2025-12-28: 184 commitsWeek of 2026-01-04: 120 commitsWeek of 2026-01-11: 102 commitsWeek of 2026-01-18: 48 commitsWeek of 2026-01-25: 75 commitsWeek of 2026-02-01: 57 commitsWeek of 2026-02-08: 30 commitsWeek of 2026-02-15: 36 commitsWeek of 2026-02-22: 85 commitsWeek of 2026-03-01: 60 commitsWeek of 2026-03-08: 40 commitsWeek of 2026-03-15: 48 commitsWeek of 2026-03-22: 40 commitsWeek of 2026-03-29: 43 commitsWeek of 2026-04-05: 38 commitsWeek of 2026-04-12: 42 commitsWeek of 2026-04-19: 33 commitsWeek of 2026-04-26: 28 commitsWeek of 2026-05-03: 52 commitsWeek of 2026-05-10: 67 commitsWeek of 2026-05-17: 54 commitsWeek of 2026-05-24: 79 commitsWeek of 2026-05-31: 40 commitsWeek of 2026-06-07: 30 commitsWeek of 2026-06-14: 9 commitsWeek of 2026-06-21: 20 commitsWeek of 2026-06-28: 42 commitsWeek of 2026-07-05: 35 commitsWeek of 2026-07-12: 40 commitsWeek of 2026-07-19: 64 commitsWeek of 2026-07-26: 35 commitsAug 3, 2025Jul 26, 2026
2.5K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 19 commitsSun 1:00 — 4 commitsSun 2:00 — 5 commitsSun 3:00 — 2 commitsSun 4:00 — 2 commitsSun 5:00 — 5 commitsSun 6:00 — 4 commitsSun 7:00 — 5 commitsSun 8:00 — 21 commitsSun 9:00 — 33 commitsSun 10:00 — 34 commitsSun 11:00 — 17 commitsSun 12:00 — 18 commitsSun 13:00 — 10 commitsSun 14:00 — 14 commitsSun 15:00 — 10 commitsSun 16:00 — 18 commitsSun 17:00 — 29 commitsSun 18:00 — 19 commitsSun 19:00 — 34 commitsSun 20:00 — 24 commitsSun 21:00 — 24 commitsSun 22:00 — 32 commitsSun 23:00 — 10 commitsMon 0:00 — 4 commitsMon 1:00 — 5 commitsMon 2:00 — 10 commitsMon 3:00 — 18 commitsMon 4:00 — 4 commitsMon 5:00 — 6 commitsMon 6:00 — 6 commitsMon 7:00 — 13 commitsMon 8:00 — 18 commitsMon 9:00 — 11 commitsMon 10:00 — 21 commitsMon 11:00 — 43 commitsMon 12:00 — 13 commitsMon 13:00 — 13 commitsMon 14:00 — 23 commitsMon 15:00 — 41 commitsMon 16:00 — 25 commitsMon 17:00 — 17 commitsMon 18:00 — 14 commitsMon 19:00 — 27 commitsMon 20:00 — 15 commitsMon 21:00 — 3 commitsMon 22:00 — 5 commitsMon 23:00 — 2 commitsTue 0:00 — 4 commitsTue 1:00 — 3 commitsTue 2:00 — 10 commitsTue 3:00 — 14 commitsTue 4:00 — 1 commitsTue 5:00 — 3 commitsTue 6:00 — 10 commitsTue 7:00 — 14 commitsTue 8:00 — 16 commitsTue 9:00 — 11 commitsTue 10:00 — 33 commitsTue 11:00 — 21 commitsTue 12:00 — 5 commitsTue 13:00 — 4 commitsTue 14:00 — 30 commitsTue 15:00 — 35 commitsTue 16:00 — 31 commitsTue 17:00 — 18 commitsTue 18:00 — 11 commitsTue 19:00 — 11 commitsTue 20:00 — 28 commitsTue 21:00 — 4 commitsTue 22:00 — 5 commitsTue 23:00 — 5 commitsWed 0:00 — 6 commitsWed 1:00 — 5 commitsWed 2:00 — 13 commitsWed 3:00 — 13 commitsWed 4:00 — 3 commitsWed 5:00 — 2 commitsWed 6:00 — 6 commitsWed 7:00 — 4 commitsWed 8:00 — 4 commitsWed 9:00 — 21 commitsWed 10:00 — 28 commitsWed 11:00 — 33 commitsWed 12:00 — 7 commitsWed 13:00 — 6 commitsWed 14:00 — 22 commitsWed 15:00 — 10 commitsWed 16:00 — 15 commitsWed 17:00 — 5 commitsWed 18:00 — 6 commitsWed 19:00 — 11 commitsWed 20:00 — 17 commitsWed 21:00 — 3 commitsWed 22:00 — 8 commitsWed 23:00 — 12 commitsThu 0:00 — 10 commitsThu 1:00 — 6 commitsThu 2:00 — 4 commitsThu 3:00 — 11 commitsThu 4:00 — 0 commitsThu 5:00 — 2 commitsThu 6:00 — 7 commitsThu 7:00 — 14 commitsThu 8:00 — 7 commitsThu 9:00 — 10 commitsThu 10:00 — 15 commitsThu 11:00 — 38 commitsThu 12:00 — 8 commitsThu 13:00 — 9 commitsThu 14:00 — 26 commitsThu 15:00 — 27 commitsThu 16:00 — 18 commitsThu 17:00 — 12 commitsThu 18:00 — 4 commitsThu 19:00 — 20 commitsThu 20:00 — 20 commitsThu 21:00 — 15 commitsThu 22:00 — 9 commitsThu 23:00 — 17 commitsFri 0:00 — 7 commitsFri 1:00 — 8 commitsFri 2:00 — 12 commitsFri 3:00 — 7 commitsFri 4:00 — 2 commitsFri 5:00 — 0 commitsFri 6:00 — 8 commitsFri 7:00 — 7 commitsFri 8:00 — 16 commitsFri 9:00 — 25 commitsFri 10:00 — 32 commitsFri 11:00 — 37 commitsFri 12:00 — 14 commitsFri 13:00 — 17 commitsFri 14:00 — 22 commitsFri 15:00 — 16 commitsFri 16:00 — 9 commitsFri 17:00 — 9 commitsFri 18:00 — 13 commitsFri 19:00 — 16 commitsFri 20:00 — 16 commitsFri 21:00 — 34 commitsFri 22:00 — 17 commitsFri 23:00 — 35 commitsSat 0:00 — 9 commitsSat 1:00 — 10 commitsSat 2:00 — 3 commitsSat 3:00 — 5 commitsSat 4:00 — 4 commitsSat 5:00 — 4 commitsSat 6:00 — 11 commitsSat 7:00 — 25 commitsSat 8:00 — 26 commitsSat 9:00 — 32 commitsSat 10:00 — 49 commitsSat 11:00 — 26 commitsSat 12:00 — 14 commitsSat 13:00 — 35 commitsSat 14:00 — 26 commitsSat 15:00 — 14 commitsSat 16:00 — 14 commitsSat 17:00 — 22 commitsSat 18:00 — 15 commitsSat 19:00 — 19 commitsSat 20:00 — 39 commitsSat 21:00 — 13 commitsSat 22:00 — 31 commitsSat 23:00 — 28 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits2,182 (80%)
Community commits551 (20%)

2,733 commits in total over the last year.

DateListRankStars gained
Mar 20, 2026daily#17+148
Jan 14, 2026daily#23+149
Jan 10, 2026daily#21+138
Jan 9, 2026daily#8+120
  • obra/superpowers

    An agentic skills framework & software development methodology that works.

    268.6K stars · Shell

  • mattpocock/skills

    Skills for Real Engineers. Straight from my .agents directory.

    208.4K stars · Shell

  • msitarzewski/agency-agents

    A complete AI agency at your fingertips - From frontend wizards to Reddit community ninjas, from whimsy injectors to reality checkers. Each agent is a specialized expert with personality, processes, and proven deliverables.

    139.1K stars · Shell

  • nextlevelbuilder/ui-ux-pro-max-skill

    An AI SKILL that provide design intelligence for building professional UI/UX multiple platforms

    114.4K stars · Python

  • jaywcjlove/awesome-mac

     This project is dedicated to collecting high-quality macOS software and organizing them systematically by different categories for easy search and use.

    109.3K stars · Swift

  • warpdotdev/warp

    Warp is an agentic development environment, born out of the terminal.

    64K stars · Rust