IO Load Image
Read and write the whole load-image context through one pipe socket
- pipe
- image
- mask
- sampler_name
- scheduler
- pipe
- image
- mask
- width
- height
- text_pos
- text_neg
- steps
- cfg
- sampler_name
- scheduler
- seed
- model_name
- base_path
- filepath
- filename
- source_name
Eclipse's whole design philosophy is "bundle ten wires into one pipe." IO Load Image is where that idea meets image loading: it's a single node that can both read from and write to a pipe holding everything a load-image step might carry - the image, its mask, its dimensions, prompts, sampler settings, seed, model name, and file paths. One socket in, seventeen named outputs out. If you've been building Eclipse pipe workflows, this is the node that lets you peek inside the pipe and pull individual fields out for the rest of your graph.
How the read/write trick works
The core mechanic is precedence: direct inputs override pipe values; the pipe fills in anything not provided. Connect a pipe and it supplies the defaults for every field; wire a specific input - say width - and your wired value wins for that field. So you can do surgery on a pipe without rebuilding it: take the pipe, override one value, and the output pipe carries the rest through untouched. The README's pipe docs call this "inspection/editing," and that's exactly right - it's the load-image context inspector.
Every one of the seventeen slots is optional, which is the other half of the design. Nothing is required. You can feed it just a pipe and it mirrors the pipe's contents out, or feed it just an image and it fills in everything else with defaults. All seventeen come back out on the output side as named sockets: pipe, image, mask, width, height, text_pos, text_neg, steps, cfg, sampler_name, scheduler, seed, model_name, base_path, filepath, filename, source_name. The sampler_name and scheduler slots are wildcard-typed (*) since a sampler settings pipe can carry various configurations.
The inputs that matter
pipe- the context/pipe to read from and patch. The heart of the node.image/mask- the image data and its mask, if you're supplying them directly rather than through a pipe.width/height- dimensions, useful to force or read back.seed,steps,cfg,text_pos,text_neg- the generation parameters that travel with an image, e.g. for metadata-driven workflows.model_name,base_path,filepath,filename,source_name- file identity, handy when the pipe came from a folder loader and you want the actual path.
Where it fits
This node lives at the boundary between Eclipse's pipe ecosystem and the parts of your workflow that still want individual wires - a text encoder that needs text_pos, a sampler that needs steps and seed, a save node that wants filename. Instead of splitting a pipe apart with multiple extraction nodes, you drop one IO Load Image in and pull exactly the fields you need. It's also the natural place to set values before feeding a pipe downstream: override the seed, push the patched pipe onward.
Install
Part of ComfyUI_Eclipse:
cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse
Or install ComfyUI_Eclipse via ComfyUI Manager and restart. No models, no heavy deps. If you're not building pipe-based workflows yet, this node will feel like a lot of sockets for a little job - that's fine. It exists for the day your graph outgrows individual wires, and when that day comes, it'll be waiting.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeopt | PIPE | Optional input for 'pipe'. | |
| imageopt | IMAGE | Optional input for 'image'. | |
| maskopt | MASK | Optional input for 'mask'. | |
| 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'. | |
| stepsopt | INT | Optional input for 'steps'. | |
| cfgopt | FLOAT | Optional input for 'cfg'. | |
| sampler_nameopt | * | Optional input for 'sampler_name'. | |
| scheduleropt | * | Optional input for 'scheduler'. | |
| seedopt | INT | Optional input for 'seed'. | |
| model_nameopt | STRING | Optional input for 'model_name'. | |
| base_pathopt | STRING | Optional input for 'base_path'. | |
| filepathopt | STRING | Optional input for 'filepath'. | |
| filenameopt | STRING | Optional input for 'filename'. | |
| source_nameopt | STRING | Optional input for 'source_name'. |
Outputs (17)
| Name | Type | Description |
|---|---|---|
| pipe | PIPE | β |
| image | IMAGE | β |
| mask | MASK | β |
| width | INT | β |
| height | INT | β |
| text_pos | STRING | β |
| text_neg | STRING | β |
| steps | INT | β |
| cfg | FLOAT | β |
| sampler_name | * | β |
| scheduler | * | β |
| seed | INT | β |
| model_name | STRING | β |
| base_path | STRING | β |
| filepath | STRING | β |
| filename | STRING | β |
| source_name | STRING | β |