π Node Inspector
Stop Guessing What Your Workflow Is Actually Passing
- source_node
- field_names
- field_values
- field_dict
- passthrough
Every ComfyUI user knows the drill: you wire ten nodes together, hit Queue, the image comes out wrong, and you have no idea which stage mangled it. ComfyUI is opaque - values live inside nodes, and the only window is the results panel off to the side. Node Inspector is a proper window. It's a debug node that shows you the real field values of whatever node you plug into it, live, on the canvas, with color-coded sockets and hover details.
It's part of the comfyui-storyboard pack (the markdown/debug/LLM toolbox from laubsauger), and it's the one I reach for when a workflow misbehaves and I can't tell where.
How it works
The work is split between the Python node and the TypeScript frontend. The Python side takes whatever you wire into source_node, plus a comma-separated list of field names and a JSON blob of values, and hands back structured outputs. The frontend is where the magic lives: it inspects the connected node's widgets and inputs in real time, shows the fields as a clickable, scrollable list, color-codes socket types, and even click-to-navigates to parent nodes so you can trace a value back through the chain.
The node reports a change on every run, so it re-inspects each queue - which is what a live debug tool should do.
The inputs
- source_node (any) - the node you want to inspect. Wire anything into it.
- selected_fieldnames (STRING) - comma-separated field names, e.g.
seed,cfg,steps. The UI helps you fill this. - selected_values (STRING) - a JSON string of the selected field values.
In practice you mostly just wire the node up and let the interface drive the field selection. The two text widgets are plumbing the UI writes into.
The outputs
Four, and only one is the prize:
- field_dict (DICT) - field names β values, the clean structured readout.
- field_names (LIST) and field_values (LIST) - the same data split into two parallel lists.
- passthrough (any) - echoes your original
source_nodevalue, so you can drop the inspector into the middle of a chain without breaking anything.
The natural move is to feed field_dict into the pack's Markdown Renderer for a pretty-printed look, or into any node that takes a DICT.
Install
Same as every node in this pack:
# ComfyUI Manager β search "comfyui-storyboard" β Install β Restart
# or manual
cd ComfyUI/custom_nodes
git clone https://github.com/laubsauger/comfyui-storyboard
No models, no heavy dependencies. (Mind the name collision: a Manager search for "storyboard" also returns colorAi's image-storyboard generator - different pack. Look for the laubsauger repo.)
Gotchas
The field selection is a frontend feature, so the node shines in the UI but the structured outputs (field_dict especially) are what you rely on if you run workflows headlessly or via the API. And don't leave a fleet of inspectors in a workflow you share with collaborators - they re-run on every queue and clutter the graph. It's a debug tool, not a permanent fixture. That said, because passthrough returns your value untouched, leaving one mid-chain is always safe; nothing gets mutated.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| source_node | * | β | |
| selected_fieldnames | STRING | Comma-separated list of selected field names | |
| selected_values | STRING | JSON string of selected field values |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| field_names | LIST | β |
| field_values | LIST | β |
| field_dict | DICT | β |
| passthrough | * | β |