Nodes/ComfyUI_Eclipse/IO Generation Data (Gated)
ComfyUI Node

IO Generation Data (Gated)

Mute the metadata fields you don't want

By r-vage·Created 10 months ago·Updated a day ago· 31
IO Generation Data (Gated)
  • pipe
  • pipe
  • steps
  • cfg
  • sampler_name
  • scheduler
  • denoise
  • clip_skip
  • seed
  • width
  • height
  • text_pos
  • text_neg
  • model_name
  • vae_name
  • lora_names
stepstrue
cfgtrue
sampler_nametrue
schedulertrue
denoisetrue
clip_skiptrue
seedtrue
widthtrue
heighttrue
text_postrue
text_negtrue
model_nametrue
vae_nametrue
lora_namestrue

Generation Data stores the recipe; Generation Data (Gated) stores the recipe selectively. Every field gets a Boolean switch, and a muted field outputs None - which downstream metadata-writing nodes read as "clear this field." It's the same idea as muting a branch of your graph, but aimed at individual metadata slots, and it's built to be driven by group mute controls rather than clicked by hand.

What it is

A variant of IO Generation Data where each output - steps, cfg, sampler_name, scheduler, denoise, clip_skip, seed, width, height, text_pos, text_neg, model_name, vae_name, lora_names - has a matching Boolean gate input (default true). The pack's own description is the best summary: "Connect a Boolean (True) node to pass the pipe value through. Mute/disconnect the Boolean to output None (clear the field). Use with FastMuter + NodeModeRepeater for group control."

So the gates aren't just switches - they're sockets, which means a mute control elsewhere in the graph can flip them for you. That's the intended workflow: you're running a batch where only some outputs should carry metadata, and instead of editing fifteen widgets you drive the gates from group mute/bypass nodes.

How it works

The required pipe input is the source of truth - this node reads the generation data from a context pipe rather than collecting it from loose widgets. For each field, if the gate is True it copies the pipe's value into the output; if the gate is anything else, the field is omitted entirely from the context (so downstream sees it as absent, not zero). There's also a deliberate emptiness check: a None, an empty string, the string "None", or a literal 0 is treated as absent and dropped even when the gate is on. That's a quiet but useful behavior - it stops a stale 0 seed from leaking into your metadata.

The outputs: pipe (the filtered context) plus one socket per field. An ungated field outputs None, which is exactly what "clear this field in the saved metadata" wants to send.

What you actually set

  • pipe - feed it the full generation context (from Context Image, Generation Data, or a loader).
  • The Boolean gates - leave them true to pass everything, or wire them to mute/bypass controls for group-driven toggling.
  • Nothing else. The values themselves come from the pipe.

Install

Part of ComfyUI_Eclipse (formerly RvTools, rewritten in v4.0.0). Manager → ComfyUI_Eclipse → install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse

Under Eclipse → Pipe. No models or extra deps.

Troubleshooting

  • A field disappeared that you wanted: check the gate. Muted Boolean → field omitted is the designed behavior, and it's easy to mute a gate while fiddling with group controls.
  • Value is 0 but you expected it: the emptiness check treats 0 as absent. If you genuinely need a 0 in your metadata, that's a real limitation of this node - route that field around the gate.
  • Node reads None even with everything connected: confirm the input pipe actually contains the field - the gate only passes through what the pipe holds.
Category🌒 Eclipse/ Pipe

Inputs (15)

NameTypeDefaultDescription
pipePIPEInput context pipe containing generation data.
stepsoptBOOLEANtrueGate for 'steps'. True = pass pipe value, None (muted/disconnected) = output None.
cfgoptBOOLEANtrueGate for 'cfg'. True = pass pipe value, None (muted/disconnected) = output None.
sampler_nameoptBOOLEANtrueGate for 'sampler_name'. True = pass pipe value, None (muted/disconnected) = output None.
scheduleroptBOOLEANtrueGate for 'scheduler'. True = pass pipe value, None (muted/disconnected) = output None.
denoiseoptBOOLEANtrueGate for 'denoise'. True = pass pipe value, None (muted/disconnected) = output None.
clip_skipoptBOOLEANtrueGate for 'clip_skip'. True = pass pipe value, None (muted/disconnected) = output None.
seedoptBOOLEANtrueGate for 'seed'. True = pass pipe value, None (muted/disconnected) = output None.
widthoptBOOLEANtrueGate for 'width'. True = pass pipe value, None (muted/disconnected) = output None.
heightoptBOOLEANtrueGate for 'height'. True = pass pipe value, None (muted/disconnected) = output None.
text_posoptBOOLEANtrueGate for 'text_pos'. True = pass pipe value, None (muted/disconnected) = output None.
text_negoptBOOLEANtrueGate for 'text_neg'. True = pass pipe value, None (muted/disconnected) = output None.
model_nameoptBOOLEANtrueGate for 'model_name'. True = pass pipe value, None (muted/disconnected) = output None.
vae_nameoptBOOLEANtrueGate for 'vae_name'. True = pass pipe value, None (muted/disconnected) = output None.
lora_namesoptBOOLEANtrueGate for 'lora_names'. True = pass pipe value, None (muted/disconnected) = output None.

Outputs (15)

NameTypeDescription
pipePIPE
stepsINT
cfgFLOAT
sampler_nameSTRING
schedulerSTRING
denoiseFLOAT
clip_skipINT
seedINT
widthINT
heightINT
text_posSTRING
text_negSTRING
model_nameSTRING
vae_nameSTRING
lora_namesSTRING