HEATPEEK

Native macOS app

Thermal imaging, native on the Mac.

The camera is driven straight from user space through Apple's IOUSBHost – no kernel extension, no libusb, nothing to install. The sensor measures each pixel at 1/64 K; HeatPeek works from those values rather than from the finished colour picture.

Download for macOS

macOS 14 or later · Apple silicon and Intel · free · MIT licence

HeatPeek showing a laptop in thermal; named measurements on the USB-A port and the headphone jack, the Image tab open on the right with palettes and image information

Features

What is in it

  • Raw values, not colours

    The camera gives a raw value per pixel at 1/64 K. HeatPeek works from those throughout – every measurement, correction and recording reads them, rather than reading a temperature back out of a false-colour picture.

  • Spots and areas

    Nine spots, four areas. Each has a name, limits, a colour, a trend curve and a CSV column. Coordinates live in the sensor's raw grid, so they survive rotation and mirroring.

  • Emissivity

    Stefan-Boltzmann correction as a lookup table over the raw values – one array read per pixel instead of two pow calls. The app states the noise gain and the floor below which the correction has no solution.

  • Scaling

    The camera's own gain, per frame, or a fixed range. Under that gain the app reads the curve back out of the frame instead of assuming a straight line, so the bar is labelled there too.

  • Two Syphon sources

    A shared IOSurface texture: no JPEG, no HTTP. Picture and readings kept apart so a scene can place them independently.

  • Record and read back

    PNG with the full temperature matrix, H.264 MP4, readings as CSV at 5 Hz. Both CSV formats open again in the app – as curves, or as a picture with its distribution.

Measuring

What is measured, and how closely

A click places a spot, a drag an area; either can be moved. The readings block shows the scene's minimum, mean and maximum, and every measurement below that.

Emissivity is where thermal measurements go wrong. The presets name the surface condition, because that is what sets the value: polished copper sits at 0.05, oxidised copper at 0.65. At low values the app says by how much it multiplies any error in the reading.

The Measure tab with the emissivity list and the limits for each measurement

OBS

Straight into OBS

The finished picture is already a GPU texture. Syphon hands that one on – no re-encoding, no file, no server in between – and OBS reads it directly. What is switched on in the window arrives there unchanged: the image information applies to window and source alike.

OBS with both HeatPeek sources in one scene: the camera picture, the readings over it on a transparent ground

Two Syphon sources

HeatPeek
The camera picture in the sensor's aspect ratio, carrying whichever image information you switched on.
HeatPeek Stats
Trend curve and readings, 1280 × 720, with an alpha channel. Opacity all the way down to zero – then only text and curves remain.

For tools without Syphon there is an MJPEG stream on localhost – on your own machine only, never on the network.

The Syphon client in OBS with the “HeatPeek Stats” source and transparency enabled

Hardware

Supported cameras

The same hardware is sold under several names – the P3 is the device also marketed as the “InfiRay P2 Pro”. What identifies a camera is its VID and PID, not the print on the case.

ModelVID / PIDResolution
Thermal Master P30x3474 / 0x45A2256 × 192
Thermal Master P10x3474 / 0x45C2160 × 120

Tested with the P3. The P1 is covered end to end with synthetic frames, but not yet against a real device.

Install

Three steps

  1. Download the disk image and drag HeatPeek to “Applications”.
  2. On first launch, right-click → “Open”. The app is signed but not notarised, so macOS asks once.
  3. Plug the camera in over USB-C – HeatPeek connects on its own.

The click you hear is the camera's shutter calibration. “Camera off” in HeatPeek resets the USB device so it falls silent once you are done.

Source

Open and free

HeatPeek is released under the MIT licence, and the source is open on GitHub.

Source on GitHub

The USB protocol is an independent Swift reimplementation following the reverse-engineering work of jvdillon in p3-ir-camera (Apache 2.0). Bundled: Syphon (3-clause BSD), the Lucide icons (ISC) and the Barlow and IBM Plex Mono typefaces (SIL OFL), each under its own licence.

Thermal imaging, native on the Mac.

Download for macOS

macOS 14 or later · Apple silicon and Intel · free · MIT licence