Nebula Prompt Manager
Prompts you can save, load, and version — without a text-file graveyard
- Positive
- Negative
- Variable_1
- Variable_2
- Variable_3
- Variable_4
- Variable_5
You know the ritual: you nail a prompt, get a good image, and a week later you're scrolling through a notes file trying to remember whether it was "cinematic portrait" or "cinematic portrait, soft light." Nebula Prompt Manager is a small answer to that - a prompt storage node that saves your positive prompt, negative prompt, and up to five variables as named JSON "projects" and loads them back into the graph with one click.
Think of it as a primitive value node with a filing cabinet bolted on. Where the core PrimitiveString nodes just hold one value and fan it out (that's the whole "one source, many consumers" idea from the plumbing layer), this one holds a whole batch of related text and hands you seven separate STRING outputs so nothing gets concatenated into one blob. It's aimed at people who keep a stable of recurring setups - portrait project, product render, anime workflow - and want to swap between them without rebuilding widgets every time.
How it actually works
The node itself is deliberately dumb. Its run method takes the prompt text and each variable row and returns them straight out: Positive and Negative pass through untouched, and each of the five variables gets converted to its typed value and then back to a string. Set a variable's type to int and value 30, and the output is "30". Set type float with 0.5, you get "0.5". Leave a row's name and value empty and the output is "" - clean, no placeholder junk.
The clever part lives in the JavaScript. When you add the node it hides the raw widgets and redraws them as a card UI - project dropdown, New project, Load project, Save/Update, Refresh list - backed by three small routes the pack registers on ComfyUI's server: GET /nebula_image_manager/list, GET /nebula_image_manager/load, and POST /nebula_image_manager/save. That's the whole persistence story: files live as JSON in <ComfyUI root>/Nebula-Image-Manager/, one file per project.
One thing to know right away, because it'll save you a confused minute: the node doesn't auto-save anything. Typing into project_name does nothing until you hit Save/Update, and loading is always manual. It's a filing cabinet you have to open, not a memory.
The inputs and outputs that matter
On the backend there are really only three things you set: project_name (the file name, .json is added for you), positive_prompt and negative_prompt (both multiline). Below those are the five variable rows, each with var_N_name, var_N_type (string | int | float), and var_N_value. The name is just a label; the type decides how the value is parsed before it hits the output.
Outputs - all STRING:
Positive→ wire into your CLIP Text Encode positive promptNegative→ the negative prompt inputVariable_1throughVariable_5→ any downstream string input
The catch to watch: even typed variables come out as strings, so you can't plug Variable_1 straight into an INT/FLOAT sampler socket. If you're storing CFG or steps in a variable, you'll need a string-to-number node (or convert the widget to input) in between. The node stores values as text - that's the design, not a bug.
Installing it
Via ComfyUI Manager, search "Nebula Prompt Manager" and install. Or, the manual way:
cd ComfyUI/custom_nodes
git clone https://github.com/Konohamaru04/ComfyUI-NebulaPromptManager
Then restart ComfyUI completely. There's no requirements.txt, no model downloads, no API key, no heavy dependency - it's pure stdlib plus ComfyUI's own server and folder_paths. It'll run anywhere ComfyUI runs.
Common issues
A few things to dodge. First, the README's install section is copy-paste roadkill: it tells you to clone NebulaImageManager.git from <your-username> - that URL doesn't exist and never did. Use the repo URL above. Second, the storage folder is named Nebula-Image-Manager, not NebulaPromptManager - a leftover name from the author's broader Nebula toolchain, so when you go looking for your saved projects, look for the old name. If a save "does nothing," check that folder exists and that ComfyUI's logs don't show a permission error. And if the dropdown styling looks off, that's browser-dependent theming, not a broken install.
Honestly, this is a niche tool for a narrow itch: if you swap between a handful of carefully tuned prompt setups and don't want a dozen duplicate workflows or a notes file, it's handy. If you one-shot prompts and never look back, it's a solved problem you don't have - but for the rest of us, a save button beats a text file every time.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| project_name | STRING | — | |
| positive_prompt | STRING | — | |
| negative_prompt | STRING | — | |
| var_1_name | STRING | — | |
| var_1_type | COMBO | string | 3 options: string, int, float |
| var_1_value | STRING | — | |
| var_2_name | STRING | — | |
| var_2_type | COMBO | string | 3 options: string, int, float |
| var_2_value | STRING | — | |
| var_3_name | STRING | — | |
| var_3_type | COMBO | string | 3 options: string, int, float |
| var_3_value | STRING | — | |
| var_4_name | STRING | — | |
| var_4_type | COMBO | string | 3 options: string, int, float |
| var_4_value | STRING | — | |
| var_5_name | STRING | — | |
| var_5_type | COMBO | string | 3 options: string, int, float |
| var_5_value | STRING | — |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| Positive | STRING | — |
| Negative | STRING | — |
| Variable_1 | STRING | — |
| Variable_2 | STRING | — |
| Variable_3 | STRING | — |
| Variable_4 | STRING | — |
| Variable_5 | STRING | — |