FSL / Image Memory → Recall (Safe)
FSL / Image Memory → Recall (Safe) — pull a stored image back by key
- image
The other half of the FSL image-stash pair. FSLImageMemoryRecallSafe looks up an image that FSLImageMemoryStore saved under a key, and returns it as an IMAGE - with zero wires connecting the two nodes. Recall is where the memory feature pays off: you can have one node store a generation and another node anywhere in the graph retrieve it, which breaks ComfyUI's rigid wire-dependency model for iterative and branched workflows.
How it works
Under the hood it's a dict lookup: the pack keeps an in-process _MEM mapping keys to lists of HWC float tensors, and this node does _MEM.get(key, None). Same caveats as Store apply and matter even more here: the memory is process-local, so a ComfyUI restart empties it, and anything you put in via a previous run is still there until cleared.
The "Safe" in the name is the important design decision. When the key is missing, most recall nodes would raise an error and kill the graph. This one prints a warning and returns a 1×1 black image instead. That keeps the workflow alive - which is exactly what you want in the pack's iterative workflows, where the first run legitimately has nothing stored yet and you don't want it to crash.
One mechanism detail worth knowing: the node declares IS_CHANGED returning the current time, which means ComfyUI re-executes it every queue pass instead of caching the output. If you're looping and expecting fresh recalled data, that's deliberate - the node always re-reads memory rather than serving a cached tensor.
The input
key- the string to look up. Default"last", matching the Store node's default. Keep the two in sync or you'll get black.
Output: image. Feed it into whatever needs the stored image - an init image socket, a compositor, a preview.
When you'd reach for it
The signature use is iterative generation: Store the previous result under "last" in one pass, Recall it on the next pass as the init image, and one image builds on the next - the pattern in Fred LeFevre's "Nano Banana iterative" workflows. Also great for fan-out, where one generation feeds several downstream branches, or for wiring a result across a large graph without dragging a wire through everything.
Install & gotchas
Installs with the whole pack: ComfyUI Manager → "ComfyUI FSL Nodes", or clone + pip install -r requirements.txt, restart. No key, no cloud, free to run.
The gotcha is the silent black image. A 1×1 black output means the key wasn't there - either nothing stored under that key yet, the key string mismatches ("last" vs "last " will do it), or you restarted ComfyUI since the store. It's "safe" precisely because it hides this failure, so when you see black, suspect the memory first and the model second. And remember the cleanup side of the family: Clear and Clear All are how you stop stale keys from answering for fresh recalls.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| key | STRING | last | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |