Automatic
Automatic
macOS runs the fans with its own thermal management. On the M5 Pro they stop completely at idle.
Open-source fan control for Apple Silicon. fn F5 makes the fans faster, fn F4 slower, one step per press.
For Apple Silicon Macs on macOS 14 or later. Source on GitHub.
Press fn F5 on your Mac, or click a key. Hold ⇧ for Automatic and the next profile.
Both fans went back to Automatic.
This Mac is live. It follows the same rules as the app, right in your browser, with two fans modeled on a MacBook Pro with M5 Pro.
The launch film. Turn your sound on.
On-screen text: Your Mac runs hot. And you can't do anything about it. Until now. FanPilot. Fan control for Apple Silicon. On your keyboard. Faster. Slower. One key back to auto. Profiles for every mood. Draw the curve. Fans follow. Returns to auto on quit. Never below SMC minimum. Signed helper, XPC-verified. Cool. Quiet. Yours. FanPilot. Take the controls.
No Accessibility or Input Monitoring prompts to approve. F4 and F5 still open Spotlight and Dictation; FanPilot only answers when you hold fn.
The lit keys work. Click them, or press fn F5 on your own keyboard.
A profile sets each fan to Automatic, a fixed share of its range, or a temperature curve. Pick one from the menu, press fn ⇧F5 to step through them, or save the speed you're on as a new one.
Automatic
macOS runs the fans with its own thermal management. On the M5 Pro they stop completely at idle.
CPU average 60–90 °C
Fans stay quiet until the chip averages 60 °C, then ramp to full speed at 90 °C.
CPU average 50–80 °C
Starts at 50 °C average and reaches full speed at 80 °C.
CPU hottest 45–75 °C
Follows the hottest part of the chip instead of the average, from 45 °C to full speed at 75 °C.
Fixed 100%
Both fans held at 7,826 RPM, the top of their range, until you change it.
Choose where the fans start ramping and where they reach full speed. FanPilot spins them up quickly when things heat up and eases them down gently as they cool, so you don't hear them hunting up and down.
Built-in profiles are read-only. Duplicate one to change its curve.
This fan isn't on a curve. Set its mode to Follow temperature to draw one.
Whatever happens, macOS gets the fans back. The background helper can change fan speed and nothing else. Try each case and watch the fans.
FanPilot hands both fans back to macOS before it closes.
Fans go back to automatic before sleep, and FanPilot picks up again a few seconds after you wake it.
A small background helper notices and resets the fans on its own.
FanPilot steps aside while it runs, so the two apps never fight over the fans.
The slowest FanPilot will go is the minimum speed Apple set for your fans. Never off.
Let your coding agent do it. Copy the prompt into Claude Code, Codex, Cursor or any agent that can run terminal commands. It checks your Mac, builds and installs FanPilot, and tells you whenever something needs you, like approving FanPilot in System Settings.
Needs an Apple Silicon Mac with fans, macOS 14 or later, and Xcode 16. Prefer doing it by hand? The manual steps are in the README.
Install FanPilot (https://github.com/notvasub/fanpilot), an open-source menu-bar fan controller for Apple Silicon Macs, on this Mac. Run each step in the terminal, check its output, and stop to tell me if anything fails. Do not use sudo.
1. Preflight checks. Stop and explain if any fail:
- `uname -m` must print `arm64` (Apple Silicon).
- `sw_vers -productVersion` must be 14.0 or later.
- `sysctl -n hw.model` must not be a MacBook Air (fanless; nothing to control).
- `swift --version` must work and report Swift 6 or later. If it doesn't, tell me to install Xcode 16+ from the App Store, open it once, then rerun this prompt.
2. Clone the repo into ~/fanpilot (if that folder already exists and is this repo, `git pull` instead):
git clone https://github.com/notvasub/fanpilot.git ~/fanpilot
cd ~/fanpilot
3. Run the tests: `swift test`. All tests must pass before continuing.
4. Check for a code-signing identity: `security find-identity -v -p codesigning`.
- If an "Apple Development" or "Developer ID Application" identity is listed, continue.
- If none is listed, tell me that the build will be ad-hoc signed (works, but the helper must be reinstalled after every rebuild) and that I can get a free identity in Xcode → Settings → Accounts → Manage Certificates → + → Apple Development. Then continue with ad-hoc signing.
5. Build, sign and install the app to /Applications:
scripts/build-app.sh --install
Confirm the output ends with "Installed /Applications/FanPilot.app".
6. If Macs Fan Control is running (`pgrep -x "Macs Fan Control"`), tell me to quit it. FanPilot pauses fan control while it runs.
7. Register the root helper:
/Applications/FanPilot.app/Contents/MacOS/FanPilot --install-helper This opens System Settings → General → Login Items. Tell me to turn on "FanPilot" under "Allow in the Background" (it asks for my admin password), and wait for me to say I've done it.
8. Verify: /Applications/FanPilot.app/Contents/MacOS/FanPilot --helper-status must print "helper: enabled". If it says "requires approval", repeat step 7's instructions.
9. Launch the app: open /Applications/FanPilot.app
10. Finish by telling me:
- A fan icon is now in the menu bar; click it for temperatures, RPM and profiles.
- fn F5 = faster, fn F4 = slower, fn ⇧F4 = back to Automatic, fn ⇧F5 = next profile.
- To uninstall: /Applications/FanPilot.app/Contents/MacOS/FanPilot --uninstall-helper then rm -rf /Applications/FanPilot.app
Install FanPilot (https://github.com/notvasub/fanpilot), an open-source menu-bar fan
controller for Apple Silicon Macs, on this Mac. Run each step in the terminal, check its
output, and stop to tell me if anything fails. Do not use sudo.
1. Preflight checks. Stop and explain if any fail:
- `uname -m` must print `arm64` (Apple Silicon).
- `sw_vers -productVersion` must be 14.0 or later.
- `sysctl -n hw.model` must not be a MacBook Air (fanless; nothing to control).
- `swift --version` must work and report Swift 6 or later. If it doesn't, tell me to
install Xcode 16+ from the App Store, open it once, then rerun this prompt.
2. Clone the repo into ~/fanpilot (if that folder already exists and is this repo,
`git pull` instead):
git clone https://github.com/notvasub/fanpilot.git ~/fanpilot
cd ~/fanpilot
3. Run the tests: `swift test`. All tests must pass before continuing.
4. Check for a code-signing identity: `security find-identity -v -p codesigning`.
- If an "Apple Development" or "Developer ID Application" identity is listed, continue.
- If none is listed, tell me that the build will be ad-hoc signed (works, but the
helper must be reinstalled after every rebuild) and that I can get a free identity
in Xcode → Settings → Accounts → Manage Certificates → + → Apple Development.
Then continue with ad-hoc signing.
5. Build, sign and install the app to /Applications:
scripts/build-app.sh --install
Confirm the output ends with "Installed /Applications/FanPilot.app".
6. If Macs Fan Control is running (`pgrep -x "Macs Fan Control"`), tell me to quit it.
FanPilot pauses fan control while it runs.
7. Register the root helper:
/Applications/FanPilot.app/Contents/MacOS/FanPilot --install-helper
This opens System Settings → General → Login Items. Tell me to turn on "FanPilot"
under "Allow in the Background" (it asks for my admin password), and wait for me to
say I've done it.
8. Verify: /Applications/FanPilot.app/Contents/MacOS/FanPilot --helper-status
must print "helper: enabled". If it says "requires approval", repeat step 7's
instructions.
9. Launch the app: open /Applications/FanPilot.app
10. Finish by telling me:
- A fan icon is now in the menu bar; click it for temperatures, RPM and profiles.
- fn F5 = faster, fn F4 = slower, fn ⇧F4 = back to Automatic, fn ⇧F5 = next profile.
- To uninstall: /Applications/FanPilot.app/Contents/MacOS/FanPilot --uninstall-helper
then rm -rf /Applications/FanPilot.app