๐๏ธ Isulion Prompt Vault Load
A Dropdown for Every Prompt You Ever Saved
- text
The other half of the Prompt Vault. Where ๐พ Isulion Prompt Vault Save puts text in under a name, this one gives you a dropdown of every name that exists and hands you back the text attached to it. One input, one output, and a surprisingly large amount of care about caching underneath.
Why you'd want it
Prompt reuse in ComfyUI has an awkward shape. You either retype the same base prompt into every graph you build, or you wire up something elaborate, or you keep .txt files around and load them. A named vault means the prompt you refined in March is a menu pick in October - and if you have a house style (base quality block, a negative set, a lighting phrase that works for your checkpoint), it stops being something you paste and becomes something you select.
The pack is also, bluntly, undocumented outside its own repo. There's no tutorial culture around it, no Reddit threads to trawl when it misbehaves. So the behaviour below is worth knowing up front.
The mechanism, including the part you'd trip over
The node reads ComfyUI/user/isulion/prompt_vault.json at execution time and returns the matching entry's text. Until you've saved your first entry, it serves the three bundled examples from the pack's prompt_vault.example.json - which is why your dropdown says cyberpunk_neon_street, ghibli_cottage and horror_abandoned_hospital before you've done anything.
Two details explain behaviour that otherwise looks like a bug.
The dropdown is built when the page loads. The list of entries is read once, when ComfyUI registers the node's input types. Save something new and the widget doesn't know about it until you refresh the browser. The author's fix for that is allowCustomValue: you can type any name straight into the combo box, and validation is deliberately relaxed to accept names that aren't in the list yet - including one you saved earlier in the same queue.
It re-runs when the vault file changes. ComfyUI caches hard, and only re-executes nodes whose inputs might have changed; a node that reads a file can otherwise sit on stale text forever. The standard escape hatches are what you'd find in any plumbing writeup: return a sentinel that never equals itself to force a run every time, or return something cheap and real that changes when the data does. This node takes the second route - its IS_CHANGED returns the vault file's modification time in nanoseconds. If the file hasn't been touched, you get the cached text. If it has, the node is considered dirty and runs, along with everything downstream of it.
That last clause is the trade you're making: save any entry mid-session and every Load node in the graph goes dirty, even the ones pointing at unrelated entries. With a fixed seed you'll get the identical image back for the compute cost of a re-render. Not wrong - just not free.
Inputs and outputs
entry- the combo box. Pick a name, or type one.text(STRING) - the stored prompt, out the single output. Straight intoCLIPTextEncode, or into another string node that appends your negative boilerplate.
No seed, no weight, no priority. To branch, run two Load nodes and switch between them.
Installing
This ships inside the same pack as every other Isulion node, so it's one install for all of them.
ComfyUI Manager โ Custom Nodes Manager โ search Isulion โ install โ restart. Or manually:
cd your_ComfyUI_install_dir/custom_nodes
git clone https://github.com/Isulion/ComfyUI_Isulion
Restart, then hard-refresh the browser. The pack's only Python dependency is requests; there are no models, no checkpoints, nothing to download beyond the repo. The hard refresh isn't optional here - both the dropdown and the interactive V4 node are frontend code from the pack's web/ folder, and a stale browser cache is how you end up staring at a raw JSON text widget wondering what went wrong.
Where it breaks
Refresh after you save. Type-save-queue and the dropdown still shows the old list. Ctrl+Shift+R, and the new name is there.
A name that doesn't exist fails the run. Not silently - the node raises PromptVault - unknown entry '<name>' and helpfully appends every available entry to the message. Which makes a deliberate typo the fastest way to list your vault in the console.
Sharing workflows doesn't share prompts. The workflow keeps the name widget, not the text. Your collaborator's vault - or their empty default vault - determines what actually gets encoded. If you want the graph to be portable, either bake the text into a plain string node or hand over the vault JSON too.
Corruption is handled, loss is not. A missing or malformed vault file gives you an empty vault rather than a crashed queue, and edits to the file are visible immediately. But there's no undo, no history, and an overwrite is instant. If the vault matters to you, back up user/isulion/prompt_vault.json - or point ISULION_PROMPT_VAULT at a folder that gets synced:
export ISULION_PROMPT_VAULT=/home/you/sync/prompt_vault.json
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| entry | COMBO | cyberpunk_neon_street | 3 options: cyberpunk_neon_street, ghibli_cottage, horror_abandoned_hospital |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | โ |