Nodes/ComfyUI_Eclipse/IO Generation Data
ComfyUI Node

IO Generation Data

Keep the recipe attached to the output

By r-vageΒ·Created 10 months agoΒ·Updated a day agoΒ· 31
IO Generation Data
  • pipe
  • pipe
  • steps
  • cfg
  • sampler_name
  • scheduler
  • denoise
  • clip_skip
  • seed
  • width
  • height
  • text_pos
  • text_neg
  • model_name
  • vae_name
  • lora_names
β—„stepsβ€”β–Ί
β—„cfgβ€”β–Ί
β—„sampler_nameβ€”β–Ί
β—„schedulerβ€”β–Ί
β—„denoiseβ€”β–Ί
β—„clip_skipβ€”β–Ί
β—„seedβ€”β–Ί
β—„widthβ€”β–Ί
β—„heightβ€”β–Ί
β—„text_posβ€”β–Ί
β—„text_negβ€”β–Ί
β—„model_nameβ€”β–Ί
β—„vae_nameβ€”β–Ί
β—„lora_namesβ€”β–Ί

Two weeks after you generate an image, the one thing you'll want is the recipe: what model, what seed, what prompt, what steps. Most workflows throw that away the moment the image is saved. IO Generation Data exists to keep the metadata riding along in a pipe, so your sampler settings and model names are preserved for saving, sharing, or reproducibility - without cluttering the sampler line itself.

What it is

A pipe node (same rgthree-Context lineage as Eclipse's other context managers) that holds the generation parameters as data, not the models themselves. Where Context Image carries the actual model/clip/vae tensors, this one carries the names and numbers: steps, cfg, sampler_name, scheduler, denoise, clip_skip, seed, width, height, the positive/negative prompt text (text_pos, text_neg), and the model_name / vae_name / lora_names strings.

That split is deliberate. The names don't bloat VRAM, they survive serialization, and they're exactly what metadata-writing and image-saving nodes need when they stamp a PNG with the generation info. Feed the output pipe (or individual outputs) into a Save Images node with placeholder support and your output files come out self-describing.

How it works

All inputs optional. It builds a dict starting from an input pipe, overlays whatever fields you connect or set, and outputs the pipe plus an exploded output per field. If a field isn't provided and isn't in the incoming pipe, it's stored as None - so an empty recipe is possible, but the typical pattern is: a Context Image (or a loader) provides the real values, and this node extracts the metadata slice.

The fields you'll actually set:

  • pipe - feed it the generation context to pull metadata from.
  • seed / steps / cfg / denoise / sampler_name / scheduler - the sampler recipe.
  • model_name / vae_name / lora_names - the model recipe (often filled by a loader's context).
  • text_pos / text_neg - the prompt text.

What goes in, what comes out

All inputs optional; outputs are pipe plus one socket per field (INT/FLOAT/STRING as appropriate). Wire the pipe into metadata-aware save nodes, or grab individual fields for filename templating - "seed_1234" filenames practically write themselves.

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

  • Fields come out None: the node only carries what you wire or what's in the incoming pipe. If the upstream context never had a lora_names value, you get None - that's normal, not a bug.
  • Saved image has no metadata: the metadata is in the pipe; the saving node has to be told to read it. Check your Save Images / metadata placeholder setup, not this node.
  • Stale values after a change: same context-pipe caveat as always - the pipe carries whatever was merged in at build time. Trace where the pipe was assembled.
CategoryπŸŒ’ Eclipse/ Pipe

Inputs (15)

NameTypeDefaultDescription
pipeoptPIPEOptional input for 'pipe'.
stepsoptINTOptional input for 'steps'.
cfgoptFLOATOptional input for 'cfg'.
sampler_nameoptSTRINGOptional input for 'sampler_name'.
scheduleroptSTRINGOptional input for 'scheduler'.
denoiseoptFLOATOptional input for 'denoise'.
clip_skipoptINTOptional input for 'clip_skip'.
seedoptINTOptional input for 'seed'.
widthoptINTOptional input for 'width'.
heightoptINTOptional input for 'height'.
text_posoptSTRINGOptional input for 'text_pos'.
text_negoptSTRINGOptional input for 'text_neg'.
model_nameoptSTRINGOptional input for 'model_name'.
vae_nameoptSTRINGOptional input for 'vae_name'.
lora_namesoptSTRINGOptional input for 'lora_names'.

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β€”