Nodes/comfy-ovum/Passthru Output Is List Ovum
ComfyUI Node

Passthru Output Is List Ovum

The 'trust me, this is a batch' debug node

By sfinktah·Created about a year ago·Updated 10 months ago· 7
Passthru Output Is List Ovum
  • any_in
  • any_out

The name is doing a lot of work, so let's decode it: Passthru Output Is List takes any value in, passes it through untouched, but declares to ComfyUI's graph engine that its output is a list. It also dumps what it sees to the console and the canvas, because this is a debug node first and a list-shaping trick second.

If you've ever hit "this input expects a batch" and stared at a perfectly good output that refused to connect, this is the node that explains - and sometimes works around - what's going on.

The trick it's built on

ComfyUI has two different notions of "list," and beginners get burned by the gap between them constantly. There's a Python list - a single value that happens to be a collection - and there's a graph-level batch, which is the engine fanning one output out across many downstream calls. OUTPUT_IS_LIST is the flag that tells the engine "treat everything from this slot as a batch."

This node sets OUTPUT_IS_LIST = True on its output. The actual Python object passes through byte-for-byte unchanged; only the type declaration changes. So the honest way to read it: "the value is unchanged, but the engine should consider it a list."

When it's actually useful

Two real cases. First, debugging: like the plain Passthru, it logs the input's type and a pretty-printed value every run (its IS_CHANGED returns NaN, so it never gets cached and always fires). Second, satisfying list-expecting sockets: if a downstream node needs a batch-shaped input and you want to see what the engine will hand it, run it through this node and watch. It won't magically fix a non-list upstream - if you feed it a single image tensor, downstream still gets a single image tensor, just advertised as a list. For actual conversion you want the ReinterpretAsListCast node from this same pack.

It's part of comfy-ovum, sfinktah's grab-bag of "nodes I couldn't live without," many borrowed and reworked from other projects. No models to download, no GPU footprint.

Inputs and outputs

  • any_in (optional, *) - whatever you're inspecting. Unconnected means None passes through, which is informative in its own way.
  • any_out (*, declared list) - the input, unchanged, marked as a batch.

Installing it

Install the pack, not the node:

cd ComfyUI/custom_nodes
git clone https://github.com/sfinktah/comfy-ovum

Restart ComfyUI afterward. Or skip all that with ComfyUI Manager → search "comfy-ovum" → Install. The pack's dependencies are lightweight (pillow, numpy, requests, aiohttp and friends), so there's no big install surprise.

Common gotchas

  • It lies to the type system, not to your data. If you expect the node to wrap a scalar into [scalar], it won't. Read the console dump to confirm what actually arrived.
  • Debug nodes are for debugging. A workflow full of passthroughs is a workflow full of log noise. Trace the problem, then delete the node.
  • Output marked list ≠ valid input for everything. Some nodes genuinely need a real Python list object, not a graph-level batch declaration. When in doubt, check whether the downstream node's input expects * (wildcard) or an explicit LIST.
Categoryovum/debug

Inputs (1)

NameTypeDefaultDescription
any_inopt*

Outputs (1)

NameTypeDescription
any_out*