Control your Mac's fan RPM straight from Raycast — view live fan speed, set a manual RPM target, apply quiet/full profiles, or hand control back to macOS.
Works on Apple Silicon (verified path: M4). Powered by smctl, the open-source SMC control CLI.
Raycast extensions run in a sandboxed Node runtime and cannot talk to hardware directly. Writing fan targets to the SMC (System Management Controller) also requires root. This extension delegates both problems to smctl:
Raycast extension (TypeScript)
│ execFile
▼
smctl CLI ──XPC──► smctld (root LaunchDaemon) ──IOKit──► SMC (fan keys)
smctl sensors --json) need no daemon and no root — fan RPM and temperatures always work.smctl fan set, smctl fan profile) go through the smctld daemon, installed once with sudo.smctl ships a thermal safety guard: if temperatures climb too high while fans are under manual control, it forces fans back to system control. Fans also return to macOS control if the daemon is stopped or uninstalled.
Install smctl:
brew install leaperone/smctl/smctl
sudo smctl daemon install
Install the extension (development mode):
npm install
npm run dev
Raycast will pick up the extension automatically while ray develop is running. Use npm run build for a production build.
| Command | What it does |
|---|---|
| Control Fans | List of fans with live actual/target RPM, supported range, and control mode. Actions: set manual RPM (per fan or all), quiet profile, full speed, back to auto. |
| Set Fan Speed | Quick command — type an RPM as argument, applies to all fans. Validates against the hardware range. |
| Set Fans to Auto | One keystroke to return fan control to macOS. |
/opt/homebrew/bin or /usr/local/bin.brew install leaperone/smctl/smctl.sudo smctl daemon install (check with smctl daemon status).smctl fan set) left a manual target. Use Set Fans to Auto.MIT