A native macOS menu bar app for controlling fan curves on Apple Silicon Macs.
- Real fan control on Apple Silicon — works on M1/M2/M3/M4 (uses the
Ftstunlock to bypassthermalmonitord) - Menu bar presence — always-on icon with configurable display: temperature, RPM, profile name, or a live mini-graph sparkline
- Live dashboard — Swift Charts 5-minute rolling history of CPU max/avg + GPU max
- Fan curve editor — drag-and-drop chart with synchronized editable table; per-fan curve overrides
- Profiles — 4 presets (Silent, Balanced, Performance, Full Blast) + up to 10 custom; inline rename, duplicate, delete
- Auto-switch — profiles can auto-activate based on power source (AC/Battery), thermal state, or frontmost app
- Smoothing & hysteresis — EMA-smoothed input temperatures + configurable deadband to eliminate fan hunting
- Alerts — optional notifications for high CPU temperature and fans that stop responding
- 30s stress test — burns all CPU cores and verifies your fan curve actually reacts
- Auto-start — launch at login via macOS native login items
- Localization — English and Italian
- macOS 14.0 or later
- Apple Silicon Mac (M1, M2, M3, M4, M5)
- Download the latest
Mystral-x.x.x.dmgfrom Releases. - Open the DMG and drag Mystral.app into the Applications folder.
- First launch: Developer ID releases open normally. Ad-hoc builds need a right-click on
Mystral.appin/Applications, then Open, then Open again in the dialog. - The app asks for your password to install its root-owned launchd helper. It asks again only when the helper build changes. It does not need a kernel extension.
The built-in updater accepts strictly code-signed release DMGs. Developer ID signing is recommended for public distribution; the repository script creates strict ad-hoc builds when no identity is configured.
That's it. Profiles live in ~/Library/Application Support/Mystral.
brew install xcodegen
git clone https://github.com/fexxdev/Mystral.git
cd Mystral
xcodegen generate
./scripts/build-dmg.sh # ad-hoc DMG in dist/Mystral-x.x.x.dmg
# for a Developer ID release:
MYSTRAL_SIGNING_IDENTITY="Developer ID Application: Your Name (TEAMID)" ./scripts/build-dmg.sh
# or for development:
open Mystral.xcodeproj- Mystral appears in the menu bar with a fan icon
- Left click the icon to open the main window
- Right click for quick profile switching
- Go to Profiles to create custom fan curves
- Go to Settings to configure auto-start and display options
| Profile | Description |
|---|---|
| Silent | Minimum fan noise, higher temperatures allowed |
| Balanced | Apple-like default curve |
| Performance | Aggressive cooling for heavy workloads |
| Full Blast | All fans at maximum speed |
Mystral collects no telemetry or usage data. It checks GitHub Releases only when update checks are enabled.
MIT — see LICENSE.