Integer π
One source for every steps and size that used to live in five widgets
- int
Integer π is a single whole number on its own wire, and it exists to kill a specific kind of repetition: the same steps, seed, frame count, or resolution you're typing into every node that needs it. Type it in one place, and every node that's wired to this one source reads the same value. Change it once and the whole graph follows. It's the integer sibling of the pack's Float π and Text π nodes, and it belongs to a family that's as old as node graphs themselves - the "one source, many consumers" pattern that the plumbing layer of ComfyUI is built around.
Core ComfyUI already has PrimitiveInt for this, so this node isn't breaking new ground. What it buys you, if you have the pack installed anyway, is the un-magical version: you declare the type up front rather than letting a wildcard primitive adopt the type of whatever it's plugged into. There's a school of thought that typed value nodes are the less confusing default, and this is a clean example of it.
How it works
One value widget (INT, default 0, step 1) with the full signed 32-bit range - Β±2,147,483,647. That's enough for any seed ComfyUI generates, any step count, any dimension. The node returns that exact number on the int output, unchanged.
The standard way to use it: right-click a widget on a downstream node - the steps on a KSampler, width on an Empty Latent - choose "Convert widget to input," and wire them all to this node. Now there's one box that defines the number, and the graph shows it.
Install
ComfyUI Manager is the easy route: search for ComfyUI-AusBoss under Custom Nodes and hit Install, then restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ausboss/ComfyUI-AusBoss.git
Restart ComfyUI and Integer π sits under π AusBoss/Utility. No extra Python dependencies - the pack uses Pillow, NumPy, and Torch that ComfyUI already ships. Minimum ComfyUI 0.27.1 (Manager enforces it), and hard-refresh with Ctrl+Shift+R after frontend updates.
Common issues
The main gotcha is the one it avoids: unlike a KSampler seed widget, this node never randomizes itself. Seeds on core samplers carry a hidden control_after_generate that can roll a new value after each run - the classic "I found a good seed and then it changed on me" injury. Feeding the seed through this node makes it fixed by construction. If you genuinely want a fresh seed every run, keep that behavior on a widget that offers it and use this node for the numbers that shouldn't move.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| value | INT | 0-2147483648β2147483647 | The integer to output. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| int | INT | The integer, unchanged. |