Open source · Windows diagnostics

GPU Flight Recorder

GPU Flight Recorder is an open-source Windows tool that records what your PC was doing when the display froze. I built it when my own screen kept locking up for 10 to 25 seconds during Fusion and Blender sessions, and nothing available could tell me why.

OwnershipMy own tool · MIT licence
StatusPublic beta
My roleProduct design and engineering

The short version

What it is

A local desktop app that continuously records GPU telemetry, Windows events, power transitions, crash-dump filenames and display state, then turns a freeze into an inspectable report you can hand to support.

What I built

Independent collector threads, Win32 calls through ctypes, PowerShell and nvidia-smi probes, durable JSONL logging with crash recovery, a Tkinter control panel, freeze classification and support bundles, with CI on GitHub.

Why it stands out

Systems engineering around failure: the recorder keeps working while the thing it watches is broken, and it never claims more than the evidence shows.

By the numbers
0Third-party dependenciesPython standard library and Windows APIs
4.5KLines of PythonRecorder, collectors, reports and GUI
26Automated testsunittest, run in GitHub Actions
MITOpen sourcePublic repository on GitHub

Counted from the repository on 4 October 2026.

GPU Flight Recorder window during a normal recording: heartbeat age 0 s, GPU probe age 0 s, nvidia-smi OK, 0 GPU failures, temperature, power, VRAM, display and observation marker buttons.
  1. Heartbeat age. How old the proof-of-life signal is.
  2. Probe age. A stale GPU reading looks stale, never current.
  3. Failures counted separately. Probe failures are not mixed into load or temperature.
  4. One-click markers. “Display froze”, “audio continued”, “display recovered”: context the collectors cannot know.

Actual Windows recording, 8 September 2026, during normal operation.

01 · Architecture

One probe waits.
The heartbeat continues.

The heartbeat and the NVIDIA probe run on separate worker threads, and Windows events, display information, keyboard state and selected processes have their own collectors. A slow GPU query produces a timeout; it does not silence everything else.

6 heartbeat records written while the probe waited.

Measured with the original worker code, 4 October 2026.
02 · Durability

Write while the
evidence still exists.

Each observation is appended to a timestamped JSONL stream, and the default writer flushes and syncs every record to disk. That costs extra disk work, and leaves far less sitting in buffers when a session ends badly.

On the next launch, sessions still marked as running are recovered and reported. A line-by-line reader keeps valid records around a malformed one and preserves the damaged fragment as a parse-error record. A fixture with two complete records and a truncated third confirmed exactly that.

Recording and recovery

  1. AppendOne JSON line per observation
  2. Flush and syncEach record reaches the disk
  3. RecoverSessions still marked running are reported next launch
  4. Tolerate damageValid lines kept; the broken fragment preserved as evidence
03 · Report

A finding, with its
evidence attached.

The report combines markers, heartbeat activity and probe failures, separates startup blips from significant failures, and labels its conclusion as likely. Every conclusion links back to the evidence that produced it.

final_report.md
## Freeze Classification
- Analysis window uses display-freeze marker:
  2026-10-04T12:01:27-04:00 to 2026-10-04T12:06:42-04:00.
- Heartbeat evidence present: logger/Windows proof-of-life
  records continued in the analysis window.
- Display-path stall likely: heartbeat continued,
  input/audio evidence exists, and GPU probing failed or stalled.
Typeset from the report generator’s output for a test session.
04 · Where it stands

Something another
person can inspect.

Shipped
  • Independent heartbeat, GPU and system collectors
  • Visible signal ages and collector health
  • Durable JSONL streams with recovery
  • Observation markers
  • Qualified freeze classification
  • Bounded support-bundle export
In practice

It gave me the evidence I was missing: heartbeat proof-of-life, GPU probe hangs, Windows event timing and crash-dump filenames.

Need better evidence when a system fails? Start a conversation

All projects ↗
Contact

Available for select projects and opportunities

Have a website that needs to win work?

alex@jardinestudio.com

Let’s work together. Have a project in mind or a role you’re hiring for? I’d like to hear about it.

Open email app
Toronto, Canada · --:--Working remotelyLinkedIn (opens in a new tab)