Nodes/Mememage/Mememage Reserve ID
ComfyUI Node

Mememage Reserve ID

The 'keep iterating one piece' node that pins an identity

By sememtac·Created 3 months ago·Updated 2 months ago· 1
Mememage Reserve ID
    • identifier
    identifier
    prefixmememage

    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 to mememage; 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_identifier toggle 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.
    CategoryMememage/Records

    Inputs (2)

    NameTypeDefaultDescription
    identifieroptSTRINGThe 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.
    prefixoptSTRINGmememageThe 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)

    NameTypeDescription
    identifierSTRING