Skip to content
v1.0 · macOS · MIT License

EvidenceHeat

42°C / 67°C / 89°C

Real-time CPU, GPU, and system temperatures in your menu bar. Fan control when things get hot. One Swift file, zero dependencies.

No Homebrew. No background daemons. No subscription. Reads the SMC directly.

Why This Exists

During a federal housing investigation, I was running sustained workloads — compiling evidence, processing documents, running OSINT tools — on a MacBook that was thermal throttling into oblivion. The existing temp monitors were either $15 App Store purchases, Homebrew CLI tools that broke after every macOS update, or Electron monstrosities eating 200MB of RAM to show a number.

So I built one. With Claude. A single Swift file that talks directly to Apple's System Management Controller, sits in the menu bar, and lets you override the fans when your machine is cooking itself.

It reads every temperature sensor the SMC exposes — CPU cores, GPU die, memory, battery, thunderbolt, palm rest, ambient — and decodes every fixed-point format Apple has ever used. No guessing, no hardcoded tables, no "works on my machine."

What It Does

🌡️

Every Sensor

CPU proximity, die, e-cluster, per-core temps. GPU die, VRAM, heatsink. Memory, battery, thunderbolt, palm rest, ambient, airflow. If the SMC reports it, EvidenceHeat reads it.

🎛️

Fan Control

Three modes: Auto (let macOS handle it), Proactive (ramp fans between 40–75°C), or Max (100% override). Prompts for admin privileges only when needed.

📊

Menu Bar Native

Color-coded temp in the menu bar — green under 50°C, orange under 75°C, red above. Click to see all sensors. Celsius or Fahrenheit. Updates every 3 seconds.

What You See

Click the menu bar icon to see all active sensors. Color-coded by severity.

CategorySensorReadingStatus
CPUCPU Proximity42.3°CNormal
CPUCPU Die68.1°CWarm
CPUCPU Core 181.5°CHot
GPUGPU Die62.7°CWarm
GPUGPU VRAM48.2°CNormal
OtherBattery33.8°CNormal
FansFan 13,240 RPMActive
FansFan 23,180 RPMActive

Fan Modes

Auto

macOS handles fan speed. Default behavior. No admin needed.

Proactive

Ramps fans proportionally between 40–75°C. Keeps temps in check before throttling kicks in.

Max (100%)

Full blast. For sustained workloads, compiles, exports, or when you just need it cool now.

Admin privileges: Fan control writes to the SMC, which requires admin access. EvidenceHeat will prompt for your password via the standard macOS dialog — no credentials stored, no background daemon.

Setup

1

Download

Grab EvidenceHeat.app from this page. It's a standalone .app bundle — no installer, no Homebrew, no dependencies.

2

Move to Applications

Drag it into /Applications or wherever you keep your apps. Right-click → Open the first time to bypass Gatekeeper (unsigned app).

3

Done

Temperature appears in the menu bar immediately. Click it to see all sensors and fan controls.

Gatekeeper: Since EvidenceHeat isn't signed with an Apple Developer certificate, macOS will block it on first launch. Right-click the app → Open → Open. You only have to do this once.

Recompiling from source: If you modify main.swift, rebuild with:

cd EvidenceHeat.app/Contents && swiftc Resources/main.swift -o MacOS/EvidenceHeat -framework Cocoa -framework IOKit

Tech Stack

Deliberately minimal.

  • Swift — single file, compiled native binary
  • IOKit — direct SMC communication via IOConnectCallStructMethod
  • Cocoa / AppKit — native NSStatusItem menu bar integration
  • Generic fixed-point decoder — handles every Apple SMC data type (fpe2, fp88, fpc4, fpa6, sp78, sp96, and all variants)

One file. ~600 lines. Zero dependencies beyond macOS itself.

Built Under Load

I built this because my MacBook was thermal throttling in the middle of compiling evidence for a federal housing case. The fan was at idle while the CPU was at 95°C. Apple's "thermal management" decided silence was more important than performance. I disagreed.

Built with Claude by Anthropic. The same AI workflow that's replaced an estimated 170–230 hours of attorney-equivalent work across federal court filings, NLRB evidence packages, and OSINT operations for Candyland Consulting.

This is what happens when you give someone under pressure access to the right tools.

Kaleb Gilvin — Candyland Consulting LLC
@kag_land · kg@candylandconsulting.com

Runs cool. Ships hot. Free forever.

Get EvidenceHeat

macOS only. Intel and Apple Silicon. MIT License.

Free to use, modify, and distribute.