Nodes/Prompt Stash/Prompt Stash Saver
ComfyUI Node

Prompt Stash Saver

A Prompt Library That Lives Inside ComfyUI — Prompt Stash Saver

By phazei·Created 2 years ago·Updated 22 days ago· 68
Prompt Stash Saver
    • text
    use_input_textfalse
    text
    prompt_text
    save_as_key
    load_savedNone
    prompt_listsdefault

    Let's be honest about the name: Prompt Stash Saver isn't just a saver. It's a small, persistent prompt library that lives inside your ComfyUI graph - you save prompts, organize them into lists, and load them back with a dropdown. The author built it after losing good prompts one too many times, and if you've ever generated something great and then realized you never wrote the prompt down, you're his target audience.

    It's the workhorse of phazei's Prompt Stash pack, and it fills a spot vanilla ComfyUI leaves empty: text goes into a CLIPTextEncode and disappears, and there's no built-in way to keep the ones you like. This node gives you a searchable shelf instead of a graveyard of notebook tabs.

    How it works

    The heavy lifting happens through buttons in the node UI. Click Save Prompt and the frontend calls a local endpoint on ComfyUI's own server (/prompt_stash_saver/save) - no external service, no API key, nothing leaves your machine. Your prompts are stored as JSON at <ComfyUI user dir>/prompt_stash/prompt_stash_data.json, keyed by list and name. Saving to a name that already exists overwrites it, so the flow is: name it, save it, and if you need to replace it, save over it.

    Everything in the pack shares one library - the Saver, the Passthrough, and the sibling Prompt Stash Manager all read the same file. The Manager node is where you create and delete lists, and it also handles export/import. Import merges rather than clobbers: if a name collides, the incoming prompt gets (2) appended so nothing you already saved is destroyed. That merge-without-overwrite behavior is a genuinely thoughtful touch you don't always get from custom nodes.

    It also captures text, same as the Passthrough: toggle use_input_text and an upstream node's output (like an LLM) flows in and gets synced to the widget, so the prompt you're about to save is right there on screen.

    The inputs that matter

    • use_input_text - take text from the incoming text port instead of the typed field.
    • text - the input connection; evaluated lazily, only when the toggle is on.
    • prompt_text - what you type, or what gets captured and displayed.
    • save_as_key - the name the prompt is saved under.

    There are also load_saved and prompt_lists dropdowns, but don't expect them to drive the data flow - they're UI state that lets you pick a stored prompt and a list. The output is a single text (STRING) carrying whatever prompt is currently active, which you can wire straight into your encode node.

    Installing it

    ComfyUI Manager: search "Prompt Stash" and install. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/phazei/ComfyUI-Prompt-Stash
    

    Restart ComfyUI after. No model files, no extra pip packages - the pack runs on ComfyUI's own aiohttp server plus a couple of JS files.

    Where people get burned

    Two things to know before you lean on it. First, deleting is permanent - no undo, no recycle bin. If your collection matters, export it from the Manager node now and then; the export file is a tiny JSON you can back up or share. Second, the data file lives in your user directory, which is also where you go to start over: delete prompt_stash_data.json (old installs stored it inside the node folder, and the pack auto-migrates that to the user dir), refresh, and it rebuilds fresh.

    And one expectation to check at the door: it stores text as-is. {red|blue|green} wildcard syntax won't be evaluated - the author's confirmed that's not what this pack does. If you want dynamic prompt variation, pair this with a wildcard node pack instead.

    It's a small pack with an honest job, and for anyone running LLM-driven prompt workflows it quietly pays for itself the first week.

    Categoryutils

    Inputs (6)

    NameTypeDefaultDescription
    use_input_textoptBOOLEANfalse
    textoptSTRINGOptional input text
    prompt_textoptSTRING
    save_as_keyoptSTRING
    load_savedoptCOMBONone1 options: None
    prompt_listsoptCOMBOdefault1 options: default

    Outputs (1)

    NameTypeDescription
    textSTRING