Nodes/PromptModels Studio/πŸ“¦ PRO Set Node
ComfyUI Node

πŸ“¦ PRO Set Node

Stash a model, image, or text under a name and read it anywhere

By cdanielpΒ·Created 9 months agoΒ·Updated 2 months agoΒ· 28
πŸ“¦ PRO Set Node
  • MODEL
  • CLIP
  • VAE
  • CONTROL_NET
  • CLIP_VISION
  • STYLE_MODEL
  • UPSCALE_MODEL
  • LATENT
  • IMAGE
  • MASK
  • CONDITIONING
  • SAMPLER
  • SIGMAS
  • NOISE
  • GUIDER
  • star
  • star

Every large ComfyUI workflow eventually turns into a plate of spaghetti, and the standard fork is a Set/Get pair: one node stores a value under a name, another fetches it later by that name, no wire needed across the canvas. PRO_SetNode is the write side. Give it any value it recognizes - a model, an image, a latent, a conditioning - and it stashes it in a shared in-memory store where PRO_GetNode can pull it back out. It's the same trick rgthree's Set/Get made famous; this one is this pack's version, and the two cache stores are designed to be compatible.

What it's for

The payoff is workflow hygiene. You compute a CLIP or a conditioning once, store it under clip_main, and reference it in three different sampler sections without dragging a wire the length of the screen. You keep a seed as a named value so every run is reproducible. You tuck a reference image away for later comparison. Because the value is stored by name rather than by connection, editing the graph stops being a game of "which of these ten wires did I just unplug."

How it works

The node exposes a stack of optional inputs - MODEL, CLIP, VAE, CONTROL_NET, CLIP_VISION, STYLE_MODEL, UPSCALE_MODEL, LATENT, IMAGE, MASK, CONDITIONING, SAMPLER, SIGMAS, NOISE, GUIDER, plus a wildcard * catch-all. It takes the first input that isn't None, detects its ComfyUI type (from the class name or tensor shape), and writes it into the cache under a variable name. That name comes from the name widget if it exists, or from the node title if you title it like Set_myvar. The node also passes the value straight through its * output, so it can live inline in a graph as well as acting as a store.

Inputs and outputs that matter

  • The type inputs (MODEL, IMAGE, LATENT, etc.) - connect whatever you want to remember. Most people use exactly one per Set node, and there's no point wiring several since only the first non-empty wins.
  • * output - the value passes through untouched, so you can use the node without it being a dead end.
  • It's an output node by default (OUTPUT_NODE = True), so ComfyUI treats it as a place the queue can end - keep that in mind when it appears in the "will run" list.

Installing it

Ships in COMFYUI_PROMPTMODELS (PromptModels Studio in Manager):

cd ComfyUI/custom_nodes
git clone https://github.com/cdanielp/COMFYUI_PROMPTMODELS

Restart ComfyUI. No API key, local only. The pack needs ComfyUI 0.26.0+ to load at all.

Common issues

If a PRO_GetNode downstream can't find your variable, it's almost always a name mismatch - the Set derives its name from the title or the name widget, and typos are silent until the Get errors. Watch the multi-input behavior too: the "first non-None wins" rule means an empty slot you forgot to clear can shadow the input you actually meant to store. And remember the cache is session-only: restart ComfyUI and everything you stored is gone, so a Get that worked before a restart will need the Set re-run once. That's also why the pack ships PRO_ClearCacheNode - a deliberate wipe beats a lingering stale value.

CategoryGetSetNode_Pro/utils

Inputs (16)

NameTypeDefaultDescription
MODELoptMODELβ€”
CLIPoptCLIPβ€”
VAEoptVAEβ€”
CONTROL_NEToptCONTROL_NETβ€”
CLIP_VISIONoptCLIP_VISIONβ€”
STYLE_MODELoptSTYLE_MODELβ€”
UPSCALE_MODELoptUPSCALE_MODELβ€”
LATENToptLATENTβ€”
IMAGEoptIMAGEβ€”
MASKoptMASKβ€”
CONDITIONINGoptCONDITIONINGβ€”
SAMPLERoptSAMPLERβ€”
SIGMASoptSIGMASβ€”
NOISEoptNOISEβ€”
GUIDERoptGUIDERβ€”
staropt*β€”

Outputs (1)

NameTypeDescription
star*β€”