GitHub - ryanshahine/turbojet: A lightweight native menu bar fan controller for Apple Silicon Macs.

GitHub

2 min read Original article ↗

Turbojet is a lightweight, menu-bar-only macOS fan controller for Apple Silicon.

Download the latest Turbojet DMG or build it from source below.

The tray menu provides:

  • System and Manual fan-control modes
  • A continuous target slider capped at this Mac's measured physical maximum
  • A Quit command that restores system fan control before exiting

Turbojet probes each fan for the SMC mode keys used by M1–M5 Macs. Where the Ftst key exists, it keeps that diagnostic mode asserted so macOS does not immediately reclaim manual control. On newer hardware without Ftst, it uses the lowercase direct-control key.

The first time Manual mode is selected on a hardware model, Turbojet briefly requests an intentionally unreachable target and watches the fans' actual F%dAc speed until it plateaus. That measured speed, rounded to the nearest 100 RPM, is cached as the slider ceiling. Apple’s recommended F%dMx thermal management value is not treated as the physical limit.

The first time Manual mode is enabled, macOS asks for an administrator password so Turbojet can install its launchd helper. That is a one-time setup: later app launches and mode changes do not require another password. The helper keeps the requested target active and automatically restores normal system control if the app stops sending its heartbeat.

Build

chmod +x Scripts/package-app.sh
Scripts/package-app.sh

The packaged app is written to .build/Turbojet.app.

The release build is signed only with Apple Development: ryanshahine@hotmail.com. The packaging script refuses to use the unrelated Portrait Developer ID identity.

Build the DMG

This creates dist/Turbojet-<version>.dmg and its SHA-256 checksum. The image contains Turbojet, an Applications shortcut, and a read me first guide with the required Gatekeeper approval steps.

Because this project does not use a paid Developer ID distribution certificate, the DMG cannot be notarized. On first launch, macOS may block the app. Choose Done, open System Settings → Privacy & Security, scroll to Security, and choose Open Anyway for Turbojet. Only approve copies downloaded from the official GitHub repository.

Requirements and safety

  • macOS 13 or later
  • Apple Silicon
  • Administrator access when enabling Manual mode

Direct SMC control bypasses macOS fan policy. Very low targets can reduce cooling, while sustained high targets increase noise and fan wear. Use Manual mode carefully. Turbojet returns the fans to System mode when you quit.