Nodes/ComfyUI-API-Optimizer/🏷️ Hash Vault Label Builder
ComfyUI Node

🏷️ Hash Vault Label Builder

Stop typing cache labels. Wire them instead.

By jeremieLouvaertΒ·Created 5 months agoΒ·Updated 15 days agoΒ· 1
🏷️ Hash Vault Label Builder
  • in_1
  • in_2
  • in_3
  • in_4
  • label
β—„separator / β–Ί

This is the little glue node at the end of the Hash Vault suite, and its job is embarrassingly simple: take up to four inputs of any type, join the non-empty ones with a separator, and hand you back one STRING. That's it. Its only real purpose is feeding a human-readable label into Hash Vault (Save API Result)'s label input, so the Hash Vault Browser shows you "Alec Soth / Niagara / full" instead of a 64-character hash when you're hunting for a past run.

Why bother? Because labels are the difference between a cache you can actually use and a pile of hex. The sidecar system (v1.3.0+) stores your label in a {hash_key}.json file that's decoupled from the hash itself, so a label never invalidates a cache entry - but typing them by hand, on every workflow, forever, is exactly the kind of busywork that makes you stop labeling at all. This node is the "wire it once, never think about it" fix.

How it works

Nothing clever. Each input is stringified at join time. None and empty strings are skipped, so partially-wired workflows stay clean - leave three slots empty and you just get the one value. The remaining parts are joined with the separator string, which defaults to " / " and is exactly right for the "style / variant / intensity" pattern this pack is built around.

Inputs and outputs

  • separator (required) - the glue, default " / ".
  • in_1 through in_4 (all optional, any type) - the pieces. Wire whatever your workflow knows about: a Settings node's style output, a variant, an intensity, a prompt line.
  • label (output, STRING) - wire this into Hash Vault (Save API Result)'s label input. Done.

Concrete example from the pack's docs: in_1 gets a Settings node's style ("Alec Soth"), in_2 its variant ("Niagara"), in_3 its intensity ("full"), and you get "Alec Soth / Niagara / full" out - searchable later in the Hash Vault Browser.

The one trap

It's a dumb string joiner, so garbage in, garbage label out. Stringifying a tensor prints its shape (torch.Size([...])), and a bare prompt with line breaks makes a label that wraps badly. Keep it fed with short settings strings, not payloads. Also remember this node has no memory of its own - it's pure composition; if you want the same label to survive an editing session, that's the sidecar's job, not this node's.

Install

Ships in the ComfyUI-API-Optimizer pack, so the other vault nodes come with it. ComfyUI Manager: search "ComfyUI API Optimizer". Or:

cd ComfyUI/custom_nodes/
git clone https://github.com/jeremieLouvaert/ComfyUI-API-Optimizer.git
pip install -r ComfyUI-API-Optimizer/requirements.txt

Restart ComfyUI. It's one filelock dependency on top of your existing PyTorch - the whole pack is model-free and lightweight.

CategoryAPI Optimization

Inputs (5)

NameTypeDefaultDescription
separatorSTRING / Separator placed between each non-empty input. Defaults to ' / '.
in_1opt*First input. Any type β€” stringified at join time. None or empty strings are skipped.
in_2opt*Second input.
in_3opt*Third input.
in_4opt*Fourth input.

Outputs (1)

NameTypeDescription
labelSTRINGβ€”