temporal investigator
A frame-by-frame detective that's still asleep at the desk
- image
- image
The honest version first, because you'll figure it out within a minute anyway: right now, temporal investigator doesn't actually investigate anything. It passes your image through untouched and plays a very pretty phosphor-green boot animation. The investigation part hasn't shipped yet. It's the second node in the ComfyUI-Satori pack by AgencyMind, a sibling to the pack's real worker, "why did it break?" - and this one is a promise with a nice screen attached.
What it's supposed to be
The README pitches it as specialized for frame-by-frame analysis, "essential for issues like FOUC where specific frames behave differently." FOUC is the author's shorthand - borrowed from the web-dev "flash of unstyled content," repurposed to mean a single frame in a video batch that behaves differently from its neighbors. If you've ever run an AnimateDiff or LTX workflow and one frame in the middle flickers or jumps while the rest are fine, that's the problem class this node is aimed at. Note it's the author's coinage, not an established community term - but the underlying problem (one bad frame in a sequence) is very real.
How it works (or rather, doesn't yet)
Read the source and it's over quickly. The TemporalInvestigator class defines its inputs, declares itself an output node, and investigate_temporal() returns (image,) - that's the entire method. The docstring says "Implementation focused on temporal patterns. Display happens via widgets," and then nothing happens. The web front-end (web/satori_diagnostics.js) hooks both Satori nodes and shows the animated "SATORI DIAGNOSTIC SYSTEM / READY FOR INVESTIGATION" readout, but it only swaps in real data when the Python side sends it through the ui message. TemporalInvestigator never sends one, so the animation just keeps looping forever. It's a skeleton: inputs defined, widget wired up, analysis not written.
That means it's also completely safe to drop anywhere. The image output is identical to the input, and because it's an output node ComfyUI will run it even dangling with nothing connected. You can't break anything with it, which is the only thing it currently does well.
The inputs, for when it wakes up
- image (IMAGE, required) - the frame or batch you're investigating.
- frame_identifier (STRING, default
"") - a label to tie a future readout to a specific frame. - reference_frame (INT, default 0) - the baseline frame the analysis would compare against.
- comparison_window (INT, default 5, 1–50) - how far back in frames it would look.
Output: image, identical to input. That's the whole schema, and it tells you exactly how the author intends the finished node to work: pick a reference frame, set a window, and watch how things drift.
Install
Same path as its sibling: ComfyUI Manager → search "ComfyUI-Satori", or clone. The README's own clone command has a placeholder URL (yourusername) - use the real repo:
cd ComfyUI/custom_nodes
git clone https://github.com/AgencyMind/ComfyUI-Satori
Restart ComfyUI after. No extra Python dependencies (numpy/torch come with ComfyUI), no model files, no API keys. The pack is brand-new, essentially a single commit, and has no community presence worth finding - so there are no lurking install traps beyond the placeholder URL.
Verdict
If you're debugging a frame-flicker problem today, reach for "why did it break?" - that's the node with actual numbers. Temporal investigator is the one to check back on in a few months. The inputs are sensible, the display machinery is real, and the moment the author fills in the analysis this becomes the natural tool for "which frame is the odd one out." Until then, treat it as a labelled placeholder and don't let its loading screen convince you it's thinking.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| frame_identifier | STRING | — | |
| reference_frameopt | INT | 0 | — |
| comparison_windowopt | INT | 51–50 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |