Nodes/ꘇ Genereti/ꘇ dat.inspect
ComfyUI Node

ꘇ dat.inspect

ComfyUI has no print statement — ꘇ dat.inspect is the closest thing

By languel·Created about a month ago·Updated 3 days ago· 1
ꘇ dat.inspect
  • input
  • text
◄format▾►
◄limit32►

The debug node ComfyUI keeps forgetting to ship

ComfyUI has no print(). When a value isn't what you expected you get two bad options: add a Preview Image node that only understands pixels, or go read the server console. ꘇ dat.inspect exists to fix exactly that. Drop it next to any wire, and it prints a readable summary of whatever is flowing through, live, inside the graph.

It's the one node in this pack I'd install the pack for on its own. The rest of Genereti is a TouchDesigner-flavoured creative-coding layer bolted onto Comfy; dat.inspect is just good plumbing, and it works on nodes that have nothing to do with Genereti.

What it actually does

The node is type-agnostic - its one input is *, Comfy's wildcard, which accepts a model, a latent, a string, a dict, whatever you wire in. It then walks the value and serialises a bounded summary of it, because the whole point is not to hand you 400 MB of tensor.

Concretely, from the shipped source: it recurses to a depth of 8, truncates strings at 2,000 characters, turns 1-D NumPy arrays into {samples, length, dtype}, and describes tensors as {type, shape, dtype} - metadata only, no pixel copy, which is why it stays cheap on a 4K batch. Dicts and lists are cut off at your limit with a … N more items marker rather than being dumped.

The three inputs are input, format and limit:

  • format is json or text. It matters less than you'd think - text only returns a plain string when the summary is a string (i.e. you fed a string); anything else still comes back as JSON.
  • limit defaults to 32, range 1–256. This is the knob you actually touch. Bump it to 256 when you're hunting a specific key near the end of a dict, drop it to 4 when the panel is getting noisy.

The single output is text - a STRING, which means you can wire it into dat.text, save it, or feed it to a prompt. Be careful there: the output is the truncated summary, not the original data. If you want the real thing, this is not a pass-through node. It's also an output node, so it runs on Queue even when nothing downstream consumes it.

Live values from browser-driven nodes (the CHOPs, textures and streams in this pack) update in the panel as they change; Queue instead shows whatever the backend computed for that run. There's a Freeze control that pauses the display only - it doesn't stop the node or the graph.

Installing it

ꘇ dat.inspect ships inside the Genereti pack, which is the only way to get it. Via Manager, search Genereti (publisher liuboto) and restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/languel/genereti.git genereti
cd ../
./.venv/bin/python -m pip install -r custom_nodes/genereti/requirements.txt

On Windows Portable that Python is python_embeded\python.exe; on Desktop/venv, .\Scripts\python.exe. Note what requirements.txt says: one line, comfyui-frontend-package>=1.53.6. There are no model downloads, no torch reinstall, no extra node packs - the README is explicit that the classroom demos need none of that.

The catch is version pressure in the other direction. The pack uses Comfy's V3 node schema (comfy_api.latest) and targets ComfyUI 0.38.2+, frontend 1.53.6+, Python 3.11+. On an older build the nodes simply don't register, and custom-node version skew is the single most common thing people break their install over, which is worth remembering before you update in the middle of a project.

Where people get stuck

  • "It shows {type, shape, dtype} and no numbers." That's the design, not a bug - tensors are never copied to CPU or printed value-by-value. Use a texture or CHOP readback node (top.todat, chop.todat) when you want actual samples.
  • Restart Comfy and hard-refresh the browser. The panel is a browser extension shipped by the pack; a stale frontend shows a blank node body.
  • Managing your expectations. Genereti is author-described as super alpha, early classroom testing, with a "back up your workflows before updating" warning. I checked the Reddit corpus for the pack and found zero mentions - you are early. That's fine for a debug node, but don't build a client pipeline on the alpha without pinning.
  • Old layouts collide. If you previously installed the split packs (genereti_comfy_dat, genereti_comfy_chop, …), move them out of custom_nodes first; the package detects duplicates before registering routes. The old GeneretiDat* node IDs still work, so saved workflows survive.
CategoryGenereti / DAT

Inputs (3)

NameTypeDefaultDescription
input*—
formatCOMBO2 options: json, text
limitINT321–256—

Outputs (1)

NameTypeDescription
textSTRING—