Primitive (INT)
A whole-number primitive that plays nice with Reroute
- INT
If you've ever tried to route a converted-widget Primitive through a Reroute node and watched ComfyUI just refuse to make the connection, this pack is the fix. Native primitives are dynamically typed - they don't commit to a concrete type until something downstream forces the issue - and Reroute needs to know the type up front. So the two don't mix. IntStaticPrimitive sidesteps the whole problem by being an integer and only an integer, from the second you place it on the canvas.
Why you'd actually use this instead of just typing a number
The honest answer: you don't need it for a single, one-off value - typing a number into a steps field is fine. Where this earns its keep is when the same number needs to land in more than one place. Steps that has to match between a base pass and a hires-fix pass. A seed you want printed to the console and also fed to a second sampler. Batch counts that need to stay in sync across two branches of a workflow. Set it once here, wire the output wherever it needs to go, and you've turned "keep five numbers in sync by hand" into "change one node."
It also composes with the rest of the pack. Bundle a few of these - an Int for steps, a Float for CFG, a String for a filename tag - inside a ComfyUI group, collapse it, and you get a single compact "control panel" node sitting at the top of your graph instead of scattered widgets buried three nodes deep. That's a real pattern people use it for, not a theoretical one.
Inputs and outputs
One field: Input_INT, a plain integer widget - no minimum, maximum, or step configured on it beyond what a standard ComfyUI number box gives you (click-and-drag or type directly). One output, also called INT. Wire it into any input that expects an integer: a steps or batch_size field converted to input, a seed feed, a resolution value, anything numeric and whole.
Installing it
ComfyUI Manager - search ComfyUI-Static-Primitives, install, restart.
Manual route:
cd ComfyUI/custom_nodes && git clone https://github.com/80sVectorz/ComfyUI-Static-Primitives.git
Restart ComfyUI. No dependencies, no requirements.txt, no model files - just Python defining a node. Every node from this pack, including this one, lands under a new primitives category in the Add Node menu.
Where people get tripped up
Reaching for it when you only need the value in one place. If a number feeds exactly one node, a plain widget is simpler - this node earns its complexity when the same value needs to reach two or more places, or you specifically need it to survive a Reroute.
Confusing FLOAT and INT sockets. ComfyUI treats these as distinct types. If a downstream input expects FLOAT and you feed it this node's INT output, the connection won't type-check - you'll want FloatStaticPrimitive instead, from the same pack, for anything with a decimal.
Wanting it to also carry a min/max/step like a slider. The schema doesn't expose bounds configuration on this node - it's a plain number box, not a constrained slider. If you need hard limits enforced, that constraint has to live on whatever node actually consumes the value, not here.
A number "not updating" downstream. Since this node holds a static value rather than computing anything, the usual cause is a stale queue - re-run the workflow after changing the value, or double-check the wire is actually attached to the field you think it is.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| Input_INT | INT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| INT | INT | — |