IO Generation Data (Gated)
Mute the metadata fields you don't want
- pipe
- pipe
- steps
- cfg
- sampler_name
- scheduler
- denoise
- clip_skip
- seed
- width
- height
- text_pos
- text_neg
- model_name
- vae_name
- lora_names
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
trueto 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
0as absent. If you genuinely need a0in 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
pipeactually contains the field - the gate only passes through what the pipe holds.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| pipe | PIPE | Input context pipe containing generation data. | |
| stepsopt | BOOLEAN | true | Gate for 'steps'. True = pass pipe value, None (muted/disconnected) = output None. |
| cfgopt | BOOLEAN | true | Gate for 'cfg'. True = pass pipe value, None (muted/disconnected) = output None. |
| sampler_nameopt | BOOLEAN | true | Gate for 'sampler_name'. True = pass pipe value, None (muted/disconnected) = output None. |
| scheduleropt | BOOLEAN | true | Gate for 'scheduler'. True = pass pipe value, None (muted/disconnected) = output None. |
| denoiseopt | BOOLEAN | true | Gate for 'denoise'. True = pass pipe value, None (muted/disconnected) = output None. |
| clip_skipopt | BOOLEAN | true | Gate for 'clip_skip'. True = pass pipe value, None (muted/disconnected) = output None. |
| seedopt | BOOLEAN | true | Gate for 'seed'. True = pass pipe value, None (muted/disconnected) = output None. |
| widthopt | BOOLEAN | true | Gate for 'width'. True = pass pipe value, None (muted/disconnected) = output None. |
| heightopt | BOOLEAN | true | Gate for 'height'. True = pass pipe value, None (muted/disconnected) = output None. |
| text_posopt | BOOLEAN | true | Gate for 'text_pos'. True = pass pipe value, None (muted/disconnected) = output None. |
| text_negopt | BOOLEAN | true | Gate for 'text_neg'. True = pass pipe value, None (muted/disconnected) = output None. |
| model_nameopt | BOOLEAN | true | Gate for 'model_name'. True = pass pipe value, None (muted/disconnected) = output None. |
| vae_nameopt | BOOLEAN | true | Gate for 'vae_name'. True = pass pipe value, None (muted/disconnected) = output None. |
| lora_namesopt | BOOLEAN | true | Gate for 'lora_names'. True = pass pipe value, None (muted/disconnected) = output None. |
Outputs (15)
| Name | Type | Description |
|---|---|---|
| pipe | PIPE | — |
| steps | INT | — |
| cfg | FLOAT | — |
| sampler_name | STRING | — |
| scheduler | STRING | — |
| denoise | FLOAT | — |
| clip_skip | INT | — |
| seed | INT | — |
| width | INT | — |
| height | INT | — |
| text_pos | STRING | — |
| text_neg | STRING | — |
| model_name | STRING | — |
| vae_name | STRING | — |
| lora_names | STRING | — |