Skip to content

SpaceWarpStudio/ComfyUI-SetInputGetOutput

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ComfyUI Set Input / Get Output

Virtual Set and Get nodes for ComfyUI: name a value on a Set node and read it from a Get node without long wires. This project was extracted from kijai/ComfyUI-KJNodes (Set/Get idea and JS-style implementation) some time ago and then adapted here. That upstream repository is licensed under GNU GPL v3.0. Unlike the usual single-setter pattern, several Set nodes may share the same name. The Get node always resolves to whichever Set with that name is active (not bypassed and not muted), so you can disable whole group sections—e.g. different themes or parameter packs—and the Get follows the group you left on.

There are no Python node classes in this package: behavior lives entirely in web/js/setinputgetoutput.js. Nodes appear under Utilities → InputOutput as SetInputNode and GetOutputNode.

How active setter selection works

  • Set nodes store an Input Name and take one typed input. Duplicate names are allowed.
  • Get nodes pick a name from a combo populated from all Set names on the graph.
  • Resolution uses the first Set with that name whose mode is not bypass (LiteGraph mode 4) and not muted/never (2).
    Practical rule: keep exactly one non-bypassed Set per name so the source is predictable. If two stay active, order depends on internal graph node order.

Execution data flows via getInputInfo / getInputLink on the Get node, which point at the active setter’s upstream link—so the backend sees the same graph as if you had wired through the Set.

Group / theme switching

Use parallel branches (e.g. “Theme A”, “Theme B”), each ending in a Set with the same name (prompt, style, etc.). Bypass the branches you don’t want; un-bypass the one you want. Connected Gets update their output type and title from the active Set.

[Theme A …] → [Set: "theme"]   ← bypass when off
[Theme B …] → [Set: "theme"]   ← active
                    ↓
         [Get: "theme"] → rest of workflow

Set node

  • Typed input; connects from any compatible output.
  • If Input Name is empty when you connect, it can auto-fill from the slot type.
  • Set_<name> title when a name is set (prefix can be disabled in JS via disablePrefix).

Get node

  • Combo Output Name; options are unique non-empty names from all Set nodes on the graph.
  • Output slot type tracks the active Set’s input type; incompatible downstream links may be removed when the type changes.
  • Title Get_<name> when bound to a named setter.

UI features

  • Show / Hide connections: optional Bézier hints between Set and matching Gets (or Get to active Set). Hide all connections clears hints on every Set/Get on the graph.
  • Go to first active Getter (on Set) / Go to active setter (on Get).
  • Convert Set ↔ Get in place (disconnects links; use when restructuring). Create … to the right adds the counterpart node. With multiple nodes selected, Convert selected Set/Get nodes runs on the canvas or node menu (ComfyUI context menu API).

Installation

  1. Copy or clone this folder into ComfyUI/custom_nodes/ (e.g. ComfyUI/custom_nodes/ComfyUI-SetInputGetOutput).
  2. Restart ComfyUI.

If you use git clone, point it at your fork or source repository URL for this project.

Troubleshooting

Get doesn’t match the branch I expect
Ensure only one Set with that name is non-bypassed (and not muted). Bypass the other groups.

Empty or missing combo names
Add at least one Set with a non-empty Input Name on the graph.

Type / link errors after switching
The Get’s output type follows the active Set. Reconnect or fix downstream nodes if types no longer match; the extension can drop links that are clearly incompatible after a type change.

Wrong data
Confirm the active Set’s input is still wired to the intended upstream node.


License

This project is licensed under the GNU General Public License v3.0. See LICENSE for the full text.

Set/Get functionality is derived from ComfyUI-KJNodes (also GPL-3.0). The LICENSE file includes that attribution and links to their repository.


Main implementation file: web/js/setinputgetoutput.js. Loader: __init__.py (serves web/ and registers no Python nodes).

About

Getter and setter nodes for ComfyUI that allow multiple nodes of the same name with the getter receiving whichever setter is currently active.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors