ComfyUI Node

gpsdebugger

See what a node actually ran with — a raw dump, not a pretty view

By Goshe-nite·Created about a year ago·Updated about a year ago· 11
gpsdebugger
  • any_input
  • STRING

Somewhere between "why is this seed different every run?" and "I set CFG to 7 and the image says 8" there's a node that knows the truth, and it isn't telling you. gpsdebugger is the crowbar. Wire it to any node's output and it returns that node's full execution record as a string, so you can see exactly what values it actually ran with.

The catch is in the name's tone: this is a raw dump, not a friendly inspection. It hands you the connected node's entire entry from ComfyUI's internal prompt - class type plus the whole inputs dict, widget values and all - as one string. Ugly, but complete.

How it actually works

This is the whole GPS Supplements trick, and it's worth understanding because it explains every weird thing these nodes do. Nothing here reads data off the wire in the normal ComfyUI sense. Instead, the node parses the embedded workflow JSON (ComfyUI always embeds the graph that produced a run) and walks the link map to find which node is plugged into its any_input. Then it looks that node up in the execution prompt and dumps it.

So what you get back is the recorded state - what the graph actually executed with, not what you remember typing. That's the whole value. When a LoRA toggle silently didn't apply, or a seed got overridden upstream by a wired value, the dump shows it.

One genuinely handy detail: wired inputs appear in the dump as link tuples (source node id and output index) rather than resolved values. So you can see not just what a value is, but where it came from - which is usually the thing you were debugging all along.

The one input, the one output

It could not be simpler on the surface:

  • any_input (* type) - plug in literally anything. A MODEL, a conditioning, a string, a latent. The type is wildcarded, so no socket will refuse it.
  • STRING output - the text dump. gpsdebugger is not an output node, so it saves nothing to disk by itself; put a Show Text or similar display node on the output, or feed it into whatever consumes a string.

If you're coming from rgthree's Display Any, think of this as its uncivilized cousin: no nice rendering, just the raw Python dict of the node's state. Sometimes the raw version is exactly what you want.

Install

It ships in the tiny GPS' Supplements for ComfyUI pack (Goshe-nite), which has zero dependencies - no pip packages, no model downloads. Either:

  • ComfyUI Manager → Custom Nodes Manager → search "GPS' Supplements for ComfyUI" → Install, then restart, or
  • from your ComfyUI/custom_nodes folder:
git clone https://github.com/Goshe-nite/comfyui-gps-supplements

Then restart ComfyUI. The pack lives under the GPSupps category in the node menu.

When it bites

The most common failure is Unable to get node info, which means it couldn't trace which node your input is wired to - usually because the source node is bypassed, or you're executing a graph in a way that doesn't carry the embedded workflow. And since it's debugging a graph, it's not really a node you leave in a production workflow; it's a temporary probe. Put it in, learn what you needed, pull it out.

For a beginner it's also a great way to understand what a node is actually receiving - connect it to a checkpoint loader and read the dump, and you'll learn more about how ComfyUI stores a graph than any tutorial will teach you.

CategoryGPSupps

Inputs (1)

NameTypeDefaultDescription
any_input*

Outputs (1)

NameTypeDescription
STRINGSTRING