Grimoire Slot
The text box your prompt app can drive from outside ComfyUI
- text
The one node that lets another app type into your workflow
Grimoire Slot is the input valve of the comfyui-grimoire-bridge pack. It's a plain text node - one string in, one string out - except its text can be overwritten from outside ComfyUI by the pack's companion app, grimoire, or by anything that can POST to a local HTTP endpoint. You wire it to a CLIP Text Encode (or any STRING input) and suddenly your prompt lives in your prompt library, not in a widget buried in the graph.
Grimoire is a desktop prompt library/builder - tag chips, style palettes, AI-assisted prompt generation, the works - made by the same author. If that's your tool, this node is how its "Send Prompt" button reaches your workflow. If you've never touched grimoire, the node still does one genuinely useful thing: it gives an external process a named, writable text slot in your graph, which is exactly the plumbing ComfyUI never shipped for.
How it works
The bridge registers HTTP routes on ComfyUI's own server (/pb/set-slot, /pb/get-slot, /pb/register-slots, …) and keeps an in-memory dict of slot name → text. When grimoire sends a prompt for slot positive, that text lands in the dict. On the next queue run, IS_CHANGED re-evaluates the node and it returns whatever grimoire last pushed - or, if grimoire never sent anything for that name, your fallback text. So it's passive: the node never polls, never calls home, and does nothing until a run happens. While you're in the browser UI, the pack's JavaScript also live-updates the node's text widget the moment a slot changes, so you see the new prompt before you queue.
The inputs and the output
You set two things, and only two:
- slot_name - the slot's name, default
positive. This must match what grimoire sends.negative,chara, whatever you like; one node per text area. - text - the fallback, used whenever grimoire hasn't pushed a value for that slot. Keep it a real prompt; it's also what the node shows when you first open a fresh workflow.
The output is a single text (STRING). That's it. Wire it into the prompt input of a CLIP Text Encode (or any STRING socket) and you're done.
Installing it
No dependencies, no model downloads, no requirements.txt to fight - the pack only uses modules ComfyUI already ships.
cd ComfyUI/custom_nodes
git clone https://github.com/omamesamba-del/comfyui-grimoire-bridge.git
Restart ComfyUI and the nodes appear under the PromptBuilder category. ComfyUI Manager can also grab it if you search the pack name, but the clone is the path the README actually documents. On the grimoire side: Settings → Generation, set the ComfyUI URL (default http://127.0.0.1:8188), set the Slot Name to match, and enable Send Prompt.
Where people get burned
- Name mismatch is a silent no-op. If grimoire pushes to
positivebut your node sayspos, nothing happens and no error appears - the node just keeps returning its fallback. The names have to match exactly. - Updates land on the next queue run, not instantly. The node reads its slot when ComfyUI executes. That's by design, but don't queue-then-panic if the change hasn't taken effect on a run that started before you sent it.
- It's in-memory. Restart ComfyUI and pushed slot values vanish; the fallback
textis what survives, because that's saved in the workflow. - You're opening a write door. The endpoints are unauthenticated, same as ComfyUI's API in general. Keep the server on localhost; the moment you expose port 8188 to the internet, anyone can push text into your slots.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| slot_name | STRING | positive | — |
| text | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |