ComfyUI Node

PromptOrchestrator

A tiny A/B switch for your prompt lists, with .txt loading built in

By flows-and-frames·Created 7 months ago·Updated 8 days ago· 0
PromptOrchestrator
    • Positive Prompt
    • Negative Prompt
    • Prompt Generation
    • System Prompt
    curated_prompts_folder
    generated_prompts_folder
    multi_prompt_testing_editor
    prompt_generation_editor
    use_prompt_generation_branchtrue
    system_prompt
    prompt_orchestrator_key
    prompt_testing_formatPositive only

    If you do any kind of prompt testing in ComfyUI, you know the dance: keep a text file of prompts somewhere, copy one into a CLIP Text Encode, generate, hate it, copy another. It's pure friction and it's the reason prompt-list management keeps getting reinvented. PromptOrchestrator is one of those reinventions - a small node that turns two folders of .txt prompt lists into an A/B workflow with editors attached, so you can load a batch of prompts, test them, promote the winner, and route it out. It's a plumbing node, not a generation node: it never touches pixels, it just makes prompt handling less miserable.

    It comes from the ComfyUI-Orchestration-Toolkit pack, an ecosystem-adjacent collection of workflow-control helpers. The pack's own framing splits it into two branches, a "multi-prompt testing" side for comparing prompts and a "prompt generation" side for the keeper, which is exactly how people actually work.

    How it works

    The node is organized around two folders and two editors. You type a server-side filesystem path into curated_prompts_folder and generated_prompts_folder, then hit the Load Curated Prompts or Load Generated Prompts button the node adds to its own widget area. Behind the scenes it POSTs to a small backend route that scans the folder, finds the newest .txt by modification time, and dumps the contents into the testing editor.

    Then you get the workflow: test prompts in the multi_prompt_testing_editor, and when one survives contact with the sampler, hit Paste in Generation Editor to copy it across (it appends to anything already there). Flip the boolean and that keeper gets routed to the output. It's a manual pipeline - none of it runs automatically, the buttons exist so you control when each step happens.

    The inputs and outputs that matter

    There are five required inputs, but honestly you'll set two of them once and touch two constantly:

    • curated_prompts_folder and generated_prompts_folder - absolute filesystem paths on the machine running ComfyUI, pointing at folders of .txt files. Set once.
    • multi_prompt_testing_editor - the big multiline box where loaded prompts land.
    • prompt_generation_editor - the editor for the prompt you're keeping.
    • use_prompt_generation_branch - the boolean that decides which branch is live. This is the switch. It's the A/B selector in a plumbing suit.

    The two outputs are Multi-Prompt Testing Branch and Prompt Generation Branch, both STRING. Exactly one of them carries text at any time - flip the boolean and the other goes quiet, emitting nothing. That's the "null-output placeholder" pattern from ComfyUI's plumbing layer: you feed the output into something that tolerates an empty branch, or into a fallback switch further down, rather than wiring both into the same node and expecting them to merge. For the common case - one encoder - connect the branch you care about and leave the other unconnected.

    Installing it

    Part of ComfyUI-Orchestration-Toolkit, installable via ComfyUI Manager (search "ComfyUI-Orchestration-Toolkit") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/flows-and-frames/ComfyUI-Orchestration-Toolkit.git
    

    Restart ComfyUI after. There are no Python dependencies (it uses ComfyUI's own aiohttp server) and no model files to download. The repo ships with empty CuratedPrompts/ and GeneratedPrompts/ folders - clone the pack and you can drop prompt files straight into them, or point the inputs at anywhere else on disk.

    Common issues

    • The folder path is a server path, not a browser path. If it's wrong, you don't get an error dialog - you get the author's German error string ("Ordner existiert nicht") dumped into the editor as text. It looks like data but it isn't; fix the path.
    • Both load buttons fill the testing editor. Load Generated Prompts doesn't load into the generation editor, which trips up everyone the first time. That's by design: load → test → Paste in Generation Editor to promote. The paste button exists precisely because of this.
    • "Latest" means newest by modification time. If you have several .txt files in a folder, editing any of them makes it the one that loads. Keep test folders tidy or you'll wonder where your prompts went.
    • One output is always empty. That's intentional branch behavior, but it'll bite you if you wire both outputs into the same downstream node. Pick a branch, or use a fallback switch to merge them when both matter.
    Categoryprompt_orchestration

    Inputs (8)

    NameTypeDefaultDescription
    curated_prompts_folderSTRING
    generated_prompts_folderSTRING
    multi_prompt_testing_editorSTRING
    prompt_generation_editorSTRING
    use_prompt_generation_branchBOOLEANtrue
    system_promptSTRING
    prompt_orchestrator_keySTRING
    prompt_testing_formatoptCOMBOPositive only2 options: Positive only, Positive + Negative

    Outputs (4)

    NameTypeDescription
    Positive PromptSTRING
    Negative PromptSTRING
    Prompt GenerationSTRING
    System PromptSTRING