Mememage Reserve ID
The 'keep iterating one piece' node that pins an identity
- identifier
Mememage is content-addressed by default: change the image and you get a new identifier and a new record. That's the right behavior for finished work - every render is a fresh, provable artifact. But ComfyUI is a non-destructive iterating machine, and when you're refining one image for an hour you don't want a new identity every run. Mememage Reserve ID solves exactly that: it mints a stable <prefix>-<16 hex> identifier that stays put, so you can keep overwriting the same record while you iterate.
How it works
The node holds one identifier and one namespace:
prefix- your namespace, 3–10 characters and IA-safe (so it'll work as an Internet Archive folder name if you go that route). Defaults tomememage; the README suggests matching whatever prefix your "chain" uses. Editing it rewrites the identifier above while keeping the same hex - so your namespace is a single source of truth.identifier- the full reserved<prefix>-<16 hex>identity, and the node's output. The 🎲 button randomizes just the 16 hex after your prefix, so the namespace sticks. Paste an existing full identifier here to resume a piece from a previous session - the prefix field syncs to match.
It's saved with the workflow, so the value stays stable across runs and reloads. (Under the hood it re-emits on every run - the IS_CHANGED always-recompute trick from the plumbing layer - so the current slot value is always what leaves the node.)
Then the wiring: take this node's identifier output into Mememage Encode's identifier input, and turn on Encode's use_identifier toggle. Remember that toggle - it's the thing that makes the whole arrangement honest. use_identifier is off by default, so you can leave a Reserve ID wired in and the node ignores it while you're content-addressing normally; flip it on when you actually want to iterate one piece. Each conceive (running Save Record) now overwrites the same <identifier>.json while the content hash tracks what actually changed. Roll a new slot to start a fresh piece.
The name "reserve" is apt: it's a reserved pointer, not a guaranteed unique image. The record only ever holds the latest content hash, so after a pinned piece drifts, only your newest render verifies against it - earlier renders won't. That's the pointer's contract, and renaming files won't change it.
Installing it
Part of mememage-comfy, installed once for all the Mememage nodes. ComfyUI Manager: search "Mememage" → Install → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/sememtac/mememage-comfy
<ComfyUI-python> -m pip install mememage
Restart, and it lives under the Mememage/Records category. No models, no dependencies beyond the mememage core library.
Common issues
- You wired it in and identifiers still change every run. The
use_identifiertoggle on Encode is off by default - that's expected, not a bug. Flip it on. - It rejects a pasted value. The node validates that whatever you type is a canonical
<prefix>-<16 hex>identifier. If it throws, you pasted something malformed - roll a fresh one with 🎲 or paste a valid full identifier. - Earlier renders of a pinned piece no longer verify. Expected. The pointer holds only the latest hash; keep Mememage Save Record's default identifier-named files (or a numbered Save Image) if you want history.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| identifieropt | STRING | The reserved <prefix>-<16 hex> identity (the output). The 🎲 button rolls a fresh hex under the namespace below; paste a full identifier here to resume a piece from another session. Saved with the workflow so it stays stable as you iterate. | |
| prefixopt | STRING | mememage | The namespace (3-10 chars, IA-safe). You define it; 🎲 randomizes only the hex after it. Match your chain's prefix. Editing it rewrites the identifier above, keeping the same hex. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| identifier | STRING | — |