Save Image (Override)
The fixed-filename save that lets a Cyclist loop reload its own output
- image
The regular Save Image node adds a counter to every filename - ComfyUI_00001_, _00002_, and so on - which is great for keeping a gallery and terrible for a loop. Save Image (Override) drops the counter and writes to the same filename every time, overwriting the previous file. That one change is what makes it the disk half of a Cyclist loop: it saves a result the next iteration can reliably find and reload by name.
Why the fixed name matters
Cyclist fakes loops by re-queuing the workflow, one iteration per Queue Prompt, and nothing carries over between runs on its own. The disk-based pairing - Save Image (Override) to write, Reload Image to read - is how a picture survives that gap. Because the filename is stable (not a moving counter), Reload Image can grab exactly the file the last run wrote. This is the pattern behind Cyclist's iterative-upscale and "regenerate until it's recognisable" workflows: each pass loads the previous image, works on it, and overwrites it.
Unlike the memory-based Memorize/Recall nodes, this writes to real disk in your output folder - so it survives a ComfyUI restart. That's the trade: memory is faster and self-clearing, disk persists and is the right choice when the thing you're looping on is an image.
The inputs that matter
filename(STRING, defaultForLoop_1) - the fixed name it writes under, no counter appended. The matching Reload Image reads this exact name.image(IMAGE) - the picture to save.
It's a terminal (output) node with no outputs - it sits at the end of the branch and commits the file to your output folder.
Install
- ComfyUI Manager: search comfyui-cyclist, install, restart.
- Manual:
cd ComfyUI/custom_nodes && git clone https://github.com/Pos13/comfyui-cyclist, restart.
Pure Python, no downloads.
Where people get burned
Two real ones. First, image batches aren't supported - the author flags it as a known limitation with "planned" next to it (and given the pack's archived, "planned" means "not happening"). Feed it a single image, not a batch, or it won't behave.
Second, the "New Cycle" interaction. When you want a fresh loop that doesn't overwrite your finished result, you press "New Cycle," which increments filename widgets so the next run writes to a new name. But it only rewrites the widget (and connected Primitives) - if your filename is coming out of a Recall String or String Const node, "New Cycle" skips it and your new loop clobbers the old file. Keep the filename in a plain widget if you want the increment to work.
And the pack-wide caveat: Cyclist is archived and unmaintained. Save Image (Override) is dead simple and unlikely to break, but there's no one on the other end if it does.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| filename | STRING | ForLoop_1 | — |
| image | IMAGE | — |
Outputs (0)
No outputs