FanSleuth is a native macOS menu bar app that identifies the workload behind a sudden fan-speed increase. It keeps a 20-second history of CPU, GPU, and process activity, then shows the most likely cause when the fans ramp up.
- Shows fan RPM, GPU utilization, and the system thermal state.
- Groups helper processes under apps such as Chrome and Arc.
- Ranks causes from average CPU, peak CPU, and GPU evidence.
- Saves the latest 30 fan events and supports manual analysis.
- Includes three sensitivity levels and launch at login.
- Follows the macOS language setting with English and Simplified Chinese translations.
The Balanced setting triggers after a rise of at least 700 RPM within 20 seconds and a speed of 2500 RPM.
FanSleuth supports Apple Silicon Macs running macOS 15 or later.
- Open Releases.
- Download
FanSleuth-v1.0.1-macos-arm64.zip. - Extract the archive and move
FanSleuth.appto Applications. - Right-click FanSleuth and choose Open for the first launch.
The release uses an ad-hoc signature. If macOS keeps the app behind Gatekeeper, open System Settings → Privacy & Security and choose Open Anyway. You can also clear quarantine after confirming that the archive came from this repository:
xattr -dr com.apple.quarantine /Applications/FanSleuth.app
open /Applications/FanSleuth.appInstall Apple Command Line Tools:
xcode-select --installBuild and launch:
git clone https://github.com/Unintendedz/FanSleuth.git
cd FanSleuth
./build-app.sh
open .dist/FanSleuth.appThe build script creates a release binary and applies an ad-hoc signature. Apple Command Line Tools provide the required compiler.
FanSleuth stays in the menu bar after launch:
- The menu bar number shows the average RPM across the fans.
- Busiest now lists current CPU use; 100% equals one CPU core.
- Analyze current load captures evidence when the fans already run fast.
- Automatic events include the ranked cause, confidence, average CPU, and peak CPU.
Fan speed reacts after heat builds up. The 20-second evidence window retains processes that finish or cool down before the fans reach full speed.
FanSleuth follows the macOS app language. English serves as the base language, and Simplified Chinese appears when macOS selects Chinese for the app. You can choose an app-specific language in System Settings → General → Language & Region → Applications.
FanSleuth reads Apple SMC and IOKit data with standard user permissions. Monitoring stays on your Mac, and the app uses local system APIs.
Event history is stored at:
~/Library/Application Support/FanSleuth/events.json
macOS exposes total GPU utilization through standard user APIs. FanSleuth combines that value with GPU Helper, Renderer, WindowServer, and CPU activity to produce a confidence-ranked estimate.
Run the core behavior and localization checks:
swift run FanSleuthCoreChecks
Tests/LocalizationCheck.shThe checks cover fan triggering and rearming, process grouping, the 20-second evidence window, GPU clues, SMC decoding, default sensitivity, English copy, Simplified Chinese copy, and packaged app resources.
Copyright © 2026 Unintended.
FanSleuth uses the GNU General Public License v3.0 or later, identified by GPL-3.0-or-later.
Commercial use and sales are permitted. Distribution of FanSleuth, modified versions, or binaries requires the corresponding source, this copyright notice, and GPLv3-or-later terms. Internal company use and internal modifications may stay inside the company.
The SMC layout and read sequence draw from MacThrottle and Stats. Their MIT notices are stored in Packaging/ThirdPartyNotices.txt and bundled with each release.