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.
- 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
modeis not bypass (LiteGraph mode4) 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.
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
- 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 viadisablePrefix).
- 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.
- 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).
- Copy or clone this folder into
ComfyUI/custom_nodes/(e.g.ComfyUI/custom_nodes/ComfyUI-SetInputGetOutput). - Restart ComfyUI.
If you use git clone, point it at your fork or source repository URL for this project.
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.
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).