Loop End Pixaroma
The closing bracket that hands the next round its values
- value1
- value2
- value3
- value4
- value5
- loop
- value1
- value2
- value3
- value4
- value5
Loop End Pixaroma is the closing bracket of the Pixaroma loop pair. Everything you place between it and Loop Start repeats for as many rounds as Loop Start says, and Loop End is where that repeated section reports back: it collects the values your nodes produced this round, hands them to the next round, and after the final round outputs the finished results.
On its own it does nothing - it's half of a mechanism. But if you're building anything that accumulates over iterations - a video assembled in chunks, a batch of images growing by one each round - Loop End is the node that makes the "so far" state survive from round to round.
How it works
Loop End is a FLOW_CONTROL partner to Loop Start. Its loop input is wired from Loop Start's loop output, and that wire is what tells the two brackets they belong to the same loop - the value on it is a stub; only the connection matters. When the workflow hits Loop End, it checks whether another round is due and, if so, clones the loop body and re-runs it with the next index and the updated carried values. This runs on ComfyUI's graph-expansion feature, so it needs a current ComfyUI version - on an old one the loop stops with a clear "update ComfyUI" message instead of failing cryptically.
The inputs that matter
- loop - required, despite being listed as optional in the schema (it's optional only so it can sit at the bottom of the input list). Wire Loop Start's
loopoutput here. If you forget, the node raises a friendly error telling you exactly that. - value1…value5 - the carried values. You feed each round's result into these slots, and the matching Loop Start value slot picks them up at the top of the next round. So: Loop Start's
value1→ your nodes → Loop End'svalue1. If your loop doesn't accumulate anything, just leave them empty.
The five outputs are the final carried values, after the last round - that's what you wire onward to a Save node, a preview, or wherever the loop's output needs to go.
Building a real loop
The classic pattern: Loop Start → sampler → (optionally a Pixaroma Combine node to join this round's output onto the pile) → Loop End. Set total on Loop Start, and wire Combine's output into Loop End's value1 (or value2/value3 for a second pile). Combine is the node that accumulates - images join into one batch, numbers into a list - and if you try to combine two incompatible things, you get a plain-English message instead of a confusing error.
Install and gotchas
Standard Pixaroma install - ComfyUI Manager (search "Pixaroma") or:
cd ComfyUI/custom_nodes
git clone https://github.com/pixaroma/ComfyUI-Pixaroma
Restart. No dependencies, no model files.
Two gotchas worth knowing. First, the ComfyUI version requirement: if you see "need ComfyUI's graph-expansion feature," update ComfyUI, not the pack. Second, remember that index on Loop Start is 0-based - the first round is round 0, so a total of 5 runs rounds 0 through 4. And the standing Pixaroma advice: hard-refresh with Ctrl+Shift+R after an update if a node looks broken, because the browser cache loves to lie to you.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| value1opt | * | The updated carried value to hand to the next round. Wire the matching Loop Start value slot's downstream result here. Optional. | |
| value2opt | * | The updated carried value to hand to the next round. Wire the matching Loop Start value slot's downstream result here. Optional. | |
| value3opt | * | The updated carried value to hand to the next round. Wire the matching Loop Start value slot's downstream result here. Optional. | |
| value4opt | * | The updated carried value to hand to the next round. Wire the matching Loop Start value slot's downstream result here. Optional. | |
| value5opt | * | The updated carried value to hand to the next round. Wire the matching Loop Start value slot's downstream result here. Optional. | |
| loopopt | FLOW_CONTROL | Wire this from Loop Start's loop output. Required for the loop to run. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| value1 | * | Final carried value 1, after the last round. |
| value2 | * | Final carried value 2, after the last round. |
| value3 | * | Final carried value 3, after the last round. |
| value4 | * | Final carried value 4, after the last round. |
| value5 | * | Final carried value 5, after the last round. |