← Back to projects
fand — Apple Silicon thermal daemon
Ramps fans on temperature-driven curves before thermal throttling starts, with zero-downtime SIGHUP config reload — Rust + launchd.
RustSMClaunchd
The problem
Apple Silicon fan defaults are too conservative under sustained CPU + GPU load (Claude Code + Docker + browser + ffmpeg). Fans don't ramp up until thermal throttling has already started.
The solution
A userspace daemon polls the SMC, applies aggressive curves before throttle, and reloads config without restart. Distributed as a universal2 binary via brew + GitHub Releases.
Overview
Reads SMC sensors via direct system calls, applies user-configured fan curves, and supports per-machine overrides. Hot-reload on SIGHUP. Rust 1.84 with exact-pin dependencies for reproducible builds.