Save Latent (Override)
Keep a latent under one filename so a Cyclist loop can re-upscale it
- samples
Save Latent (Override) writes a LATENT to disk under a fixed filename - no auto-incrementing counter - so the next iteration of your Cyclist loop can load the exact same file back. It's the latent-space sibling of Save Image (Override), and it exists for one job: looping on the latent itself instead of the decoded image.
Why loop in latent space
Every VAE decode and re-encode costs a little quality and a little time. If your loop is doing something iterative to a latent - progressive upscaling is the obvious case - you're better off keeping the work in latent space and only decoding to an image at the very end. Save Latent (Override) makes that possible across Cyclist's re-queue-based loop: it saves the latent to your output/latent folder under a stable name, and the matching Reload node picks it up next run. The pack's own example uses it for a gradual latent-upscale loop that bumps the image by ~1.375× each pass until it hits a target megapixel count, all without round-tripping through pixels every iteration.
Because it's on disk, it persists across a ComfyUI restart - the durable option, versus the memory-based Memorize/Recall nodes that clear when you shut down.
The inputs that matter
filename(STRING, defaultForLoop_1) - the fixed name it saves under; the reload side reads this exact name.samples(LATENT) - the latent to write.
It's a terminal (output) node - no outputs, it just commits the .latent file at the end of the branch.
Install
- ComfyUI Manager: search comfyui-cyclist, install, restart.
- Manual:
cd ComfyUI/custom_nodes && git clone https://github.com/Pos13/comfyui-cyclist, restart.
Pure Python - nothing to download.
Things to know
The pack's upscale example has a nice trick worth stealing: it keeps the final decode-and-save nodes muted during the loop and only enables them once the whole cycle is done - no point decoding intermediate latents you're going to throw away. Enabling those nodes afterward doesn't disturb the loop flow (no early interrupts, no extra iterations), so it's free speed. That's a pattern, not a feature of this node, but it's exactly how you're meant to use Save Latent (Override).
The usual "New Cycle" caveat applies: the fresh-loop button only bumps filename widgets and connected Primitives, not a name coming from a Recall String or String Const node - so keep your filename in a widget if you want increments to land.
And the standing note: Cyclist is archived and unmaintained. This node is simple enough to keep working, but there's no support if it doesn't. Latents also aren't a fully stable on-disk format across every model family, so if you're on something exotic, test a save-and-reload round trip before building a long loop on it.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| filename | STRING | ForLoop_1 | — |
| samples | LATENT | — |
Outputs (0)
No outputs