IO Generation Data
Keep the recipe attached to the output
- pipe
- pipe
- 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_namesvalue, 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.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeopt | PIPE | Optional input for 'pipe'. | |
| stepsopt | INT | Optional input for 'steps'. | |
| cfgopt | FLOAT | Optional input for 'cfg'. | |
| sampler_nameopt | STRING | Optional input for 'sampler_name'. | |
| scheduleropt | STRING | Optional input for 'scheduler'. | |
| denoiseopt | FLOAT | Optional input for 'denoise'. | |
| clip_skipopt | INT | Optional input for 'clip_skip'. | |
| seedopt | INT | Optional input for 'seed'. | |
| widthopt | INT | Optional input for 'width'. | |
| heightopt | INT | Optional input for 'height'. | |
| text_posopt | STRING | Optional input for 'text_pos'. | |
| text_negopt | STRING | Optional input for 'text_neg'. | |
| model_nameopt | STRING | Optional input for 'model_name'. | |
| vae_nameopt | STRING | Optional input for 'vae_name'. | |
| lora_namesopt | STRING | Optional input for 'lora_names'. |
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 | β |