Memorize String
Carry text — a prompt, a filename, a label — between Cyclist runs
Memorize String parks a piece of text in memory so the next iteration of your Cyclist loop can read it back. Same idea as Memorize Int and Memorize Float, but for strings - which in a ComfyUI loop usually means a prompt fragment, a running log of what you've tried, or a filename you want to reuse next pass.
Why it's useful in a loop
Cyclist builds loops out of the queue: each Queue Prompt is one iteration, and every run starts amnesiac. Memorize String is the text that carries over. Where this really earns its keep is evolving prompts. The pack's own example generates "ugly animal crossbreeds" - Impact Pack spits out random animal words each run, and you accumulate them so the prompt grows across iterations instead of resetting. You memorize the current prompt string, recall it next run, tack on the new word, and the image drifts a little further each pass. Same pattern works for a changelog of settings, a seed history, or building a filename that encodes what happened this iteration.
The inputs that matter
loop_id(STRING, defaultForLoop_1) - the storage slot. The Recall String node that reads this back has to use the same id.to_memory(STRING) - the text you're saving.
No output - it's a terminal node, so it caps off a branch rather than passing anything downstream. One string per loop_id; write again under the same id and you overwrite. (Each id independently holds its own Int, Float and Conditioning too, so those don't interfere.)
Install
- ComfyUI Manager: search comfyui-cyclist, install, restart.
- Manual:
cd ComfyUI/custom_nodes && git clone https://github.com/Pos13/comfyui-cyclist, then restart.
Pure Python - no models, no extra packages.
The one that'll actually bite you
There's a real trap specific to strings, and it's about the "New Cycle" button. When you start a fresh loop, "New Cycle" bumps the loop ids and filenames so you don't overwrite your last result - but it only touches loop_id and filename widgets and Primitives connected to them. It explicitly does not update a string coming out of a Recall String node (or a String Const / String Op node). So if your loop id or filename is being recalled as a string rather than typed into a widget, "New Cycle" silently skips it and your fresh loop reads the old loop's memory. Keep the id you increment in a plain widget, and use Memorize/Recall String for the content you're evolving, not for the loop id itself.
And the usual: memory dies on ComfyUI restart (use the disk-based Reload/Override nodes if you need persistence), and the whole Cyclist pack is archived and unmaintained - still functional, just don't count on future fixes.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| loop_id | STRING | ForLoop_1 | — |
| to_memory | STRING | — |
Outputs (0)
No outputs