ComfyUI Node

Prompt LAB

A one-wire bridge from an external prompt server into your graph

By Makeezi·Created 2 years ago·Updated 2 years ago· 0
Prompt LAB
    • positive
    • negative
    hosthttp://127.0.0.1:
    port5000
    id0

    Let's be honest about what this is before anything else. Prompt LAB isn't a prompt manager and it doesn't generate anything. It's a connector - one end of a bridge that pulls your positive and negative prompts out of an external app called promptLAB and drops them into ComfyUI. The whole README is one line: "connection nodes for api requests, fully supports promptLAB." That's the entire product. If you don't run the promptLAB server app, this node does nothing for you. If you do, it saves you from copy-pasting prompts between two windows all day.

    How it works

    The mechanism is almost suspiciously simple. The node fires a plain requests.get() at a URL it builds from three inputs, expecting a JSON array of exactly two strings, and returns those strings as its two outputs:

    url = f"{host}{port}/input/{id}"
    response = requests.get(url)
    data = response.json()
    return (data[0], data[1])
    

    So the default config hits http://127.0.0.1:5000/input/0 - the promptLAB app running on your own machine, port 5000, prompt slot 0 - and that endpoint is expected to answer with something like ["a cat on a windowsill, soft light", "blurry, low quality"]. That's it. No API key, no authentication, no queue. The name is a bit of a lie in the opposite direction from most: it doesn't call any cloud API, it calls a server that's presumably sitting right next to you.

    There's also a bundled web extension. Right-click a CLIPTextEncode node and you get a "Prompt LAB" menu entry that drops a new PromptLAB node to the left of it and rewires your text widget into an input. Handy when it works; just don't expect it to be the polished part of the pack.

    The inputs and outputs that matter

    There are three inputs and all of them are basic:

    • host - default http://127.0.0.1:. Note the trailing colon: it's there on purpose, because the code concatenates host and port straight into the URL. Change this to the address of wherever your promptLAB server actually lives.
    • port - default 5000. Where the server listens.
    • id - default 0. Which prompt slot to pull. This is the one you'll be changing constantly as you flip between prompts saved in the app.

    The two outputs are named positive and negative, both plain STRINGs. They wire straight into the text input of a CLIPTextEncode node - positive into positive conditioning, negative into negative. From there the usual text-encoder pipeline takes over. If you're still on a CLIP-lineage model (SDXL, Illustrious, Pony) the negative half genuinely matters; on newer LLM-encoder models that negative slot is more decoration than function, but that's a prompting debate, not this node's problem.

    Installing it

    No models, no heavy dependencies. The only import is requests, which ComfyUI already ships, so there's no separate environment to fight with - one of the rare packs where "install and go" actually means it. Either way:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Makeezi/ComfyUI-promptLAB
    

    Then restart ComfyUI. ComfyUI Manager can find it too - search the pack title "ComfyUI-promptLAB" - but honestly the clone is two commands.

    Where people get burned

    A few things worth knowing before you trust it in a workflow:

    • The server has to be up. This is a blocking synchronous call on the execution thread. If nothing is listening on that port, the node hard-errors with a connection exception - no retry, no graceful fallback, no "server not found" dialog. And because it's blocking, a slow or hung server stalls your entire queue, not just this node.
    • The JSON shape is rigid. It expects a two-element list, [positive, negative], in that order. Return anything else and data[0] or data[1] throws. There is zero error handling in the source, so you find out the hard way.
    • The trailing-colon default is a trap. If you decide to type a full URL into host including the port, you'll end up with http://127.0.0.1:5000:5000/input/0 and a confusing failure. Host gets the scheme and address, port stays in its own field.
    • The install touches your web folder. The pack's __init__.py deletes a file at ComfyUI/web/extensions/tropfchen/epQuickNodes.js if it exists - it's cleaning up a leftover from an earlier version of itself, but it's writing outside its own directory. Most custom nodes never do that, and it's the kind of behavior worth noticing in a pack this unknown. There's no code review for custom nodes, so glancing at the source before you run a stranger's __init__ is never wasted time.

    Prompt LAB is genuinely useful only if promptLAB is part of your setup. If that's you, it's a clean little bridge and you'll be up in five minutes. If you were hoping for an in-graph prompt manager, this isn't it - this is a cable, not a library.

    Categoryutils

    Inputs (3)

    NameTypeDefaultDescription
    hostSTRINGhttp://127.0.0.1:
    portINT5000
    idINT0

    Outputs (2)

    NameTypeDescription
    positiveSTRING
    negativeSTRING