IO Sampler Settings
Read and rewrite sampler settings inside a pipe, with a priority switch
- pipe
- sampler_name
- scheduler
- pipe
- steps
- cfg
- sampler_name
- scheduler
- guidance
- denoise
- sigmas_denoise
- noise_strength
- upscale_value
- seed
Pipes hide values - that's their deal. But sooner or later you need to see what's inside, or override one value without rebuilding the whole bundle. Pipe IO Sampler Settings is the inspector/editor for the sampler-settings slice of a pipe: it unpacks steps, cfg, sampler, scheduler, seed, denoise and friends onto individual sockets, lets you override any of them, and packs the result back into the pipe. It's the "peek and poke" node for the sampling parameters traveling through Eclipse's pipe ecosystem.
The shape is a classic read/write bus, the same pattern this pack uses across its pipe nodes: a pipe input, one socket per setting, and a pipe output that carries the updated bundle - plus all the individual values on their own outputs so you can use them directly instead of digging into the dict. In, out, and sideways.
How it works
The important part is the allow_overwrite flag, because it decides who wins when a value comes from both places. The pipe carries a hidden _allow_overwrite flag, and the node reads it first, then lets your allow_overwrite input override it if you've wired one:
allow_overwrite= True - direct inputs take priority. What you feed into the sockets wins over whatever was in the pipe.allow_overwrite= False - the pipe wins. Your direct inputs only fill in gaps where the pipe has nothing.
That's the whole priority logic, and it's the difference between a node that silently stomps your sampler settings and one that respects them. In a typical workflow you leave it unconnected (the flag rides in the pipe and stays False by default), which means the pipe is authoritative - so if you wire steps into the node expecting to change the sampler, and the pipe already has steps, nothing changes. Wire allow_overwrite True when you deliberately want the local values to win.
The channels are steps, cfg, sampler_name, scheduler, guidance, denoise, sigmas_denoise, noise_strength, upscale_value, and seed. sampler_name and scheduler are force-input sockets (they show up as connectable even if the pipe type is loose), and sampler_name/scheduler are typed * because the pack's sampler ecosystem treats them as strings-but-flexible.
The inputs that matter
pipe- the bundle to inspect/extend. Without it, the node mostly just echoes your inputs.allow_overwrite- the priority switch. Unconnected = pipe wins.steps,seed,sampler_name- the three you'll actually override most of the time.
Install
Part of ComfyUI_Eclipse (r-vage). ComfyUI Manager, search ComfyUI_Eclipse, or:
cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse
Restart ComfyUI. No models, no heavy deps. Loading a shared [Eclipse] workflow that fails? v4.0 removed legacy node IDs after the RvTools_v2 rename - run the built-in Workflow Migration Tool.
Common issues
"Changed steps but the sampler ignored me" - the pipe's values won, because allow_overwrite is False by default; wire it True if you mean to stomp. "The pipe lost my settings" - you fed a partial override and the node wrote None over a real value; an unconnected socket reads as None and can clobber, so only wire the sockets you intend to change. And if the pipe output ever surprises you, remember the stale-context rule from the plumbing docs: the bundle is opaque, and debugging "which version of steps is in there" is a Show Any away.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeopt | PIPE | Optional input for channel 'pipe'. | |
| stepsopt | INT | Optional input for channel 'steps'. | |
| cfgopt | FLOAT | Optional input for channel 'cfg'. | |
| sampler_nameopt | * | Optional input for channel 'sampler_name'. | |
| scheduleropt | * | Optional input for channel 'scheduler'. | |
| guidanceopt | FLOAT | Optional input for channel 'guidance'. | |
| denoiseopt | FLOAT | Optional input for channel 'denoise'. | |
| sigmas_denoiseopt | FLOAT | Optional input for channel 'sigmas_denoise'. | |
| noise_strengthopt | FLOAT | Optional input for channel 'noise_strength'. | |
| upscale_valueopt | FLOAT | Optional input for channel 'upscale_value'. | |
| seedopt | INT | Optional input for channel 'seed'. | |
| allow_overwriteopt | BOOLEAN | Overwrites the _allow_overwrite flag in the pipe when not None. True = direct inputs take priority, False = pipe values take priority. |
Outputs (11)
| Name | Type | Description |
|---|---|---|
| pipe | PIPE | β |
| steps | INT | β |
| cfg | FLOAT | β |
| sampler_name | * | β |
| scheduler | * | β |
| guidance | FLOAT | β |
| denoise | FLOAT | β |
| sigmas_denoise | FLOAT | β |
| noise_strength | FLOAT | β |
| upscale_value | FLOAT | β |
| seed | INT | β |