Draw Things Txt2Img Pipeline
Build an editable Draw Things config instead of firing it
- pipeline
This is the "advanced mode" version of the basic Draw Things txt2img node. Same inputs - model, prompt, size, sampler, steps - but with one big difference: it does not generate an image. Instead of calling the Draw Things app, it builds a settings blob (a "pipeline") and hands that out so you can modify it before anything runs. You pair it with DrawThingsGenerateFromPipeline, which is the node that actually fires the render.
Why would you want the extra step? Because the middle is where the power is. Once you have a pipeline dict, you can pass it through DrawThingsPipelineAddLora, DrawThingsPipelineAddControl, or DrawThingsPipelineAddCustom to stack LoRAs, add ControlNets, or set Draw Things API fields the basic nodes don't expose - all from inside ComfyUI, without touching the app. The plain DrawThingsTxt2Img node fuses "build config" and "generate" together, so there's no seam to inject those extras. This node opens that seam.
If you just want a straight text-to-image render with no mid-graph tweaking, don't bother with this - use the basic DrawThingsTxt2Img node and save yourself two connections.
How it works
The node collects your inputs into a Python dict of Draw Things parameters and outputs that dict, full stop. No network call, no image. That dict is the same shape the basic node would have POSTed to the Draw Things API - it's just paused mid-flight so you can edit it. The generation happens later, when DrawThingsGenerateFromPipeline receives the (possibly modified) dict and sends it to Draw Things on port 7860.
The inputs and outputs that matter
The inputs mirror the basic txt2img node:
model- a string that must match the Draw Things model filename exactly, e.g. the defaultflux_1_dev_q8p.ckpt(Flux.1 [dev], Q8). Use Draw Things' "..." → Copy configuration, paste it, and copy the exact name - guessing here is the #1 cause of a dead run.prompt,seed(42),steps(20),guidance_scale(3.5).width/height- both default 512; raise them for Flux.sampler- enum of 17 Draw Things samplers, defaultEuler A Trailing.
The single output is pipeline (dict) - feed it into an Add-Lora/Add-Control/Add-Custom node, or straight into DrawThingsGenerateFromPipeline if you've nothing to add.
How to install it
Same pack as the rest of the Draw Things nodes. In Draw Things, open Advanced and enable API Server (HTTP, Port 7860, localhost). Then install the pack via ComfyUI Manager (search ComfyUI-DrawThingsWrapper) or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/JosephThomasParker/ComfyUI-DrawThingsWrapper
cd ComfyUI-DrawThingsWrapper
pip install -r requirements.txt
then restart ComfyUI.
Common issues & troubleshooting
Nothing renders. Expected - this node doesn't render. Its output is a dict, not an image. You need DrawThingsGenerateFromPipeline downstream to actually generate. If you forgot it, that's your bug.
Model name mismatch. As with every node in this pack, model is a literal Draw Things filename. Copy configuration → paste → use that string verbatim.
Your added LoRA/control isn't showing up. Make sure the Add-node sits between this node and DrawThingsGenerateFromPipeline in the chain - the pipeline dict has to flow through it. A modifier that isn't wired inline does nothing.
Graph won't re-run. ComfyUI only re-executes on a changed node input; edits made in the Draw Things app won't trigger it. Change the seed or any field to force a fresh pass.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model | STRING | flux_1_dev_q8p.ckpt | — |
| prompt | STRING | — | |
| seed | INT | 42 | — |
| width | INT | 512 | — |
| height | INT | 512 | — |
| guidance_scale | FLOAT | 3.50 | — |
| sampler | COMBO | Euler A Trailing | 17 options: UniPC, DPM++ 2M Karras, Euler a, DPM++ SDE Karras, PLMS, DDIM, +11 |
| steps | INT | 20 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipeline | dict | — |