Draw Things Txt2Img
Drive Draw Things' Mac-fast generation from a ComfyUI graph
- generated_image
First thing to get straight, because the name trips people up: this node doesn't generate anything itself. It's a remote control. It hands a prompt to the Draw Things app running on your Mac, Draw Things does the actual diffusion, and the finished image comes back into your ComfyUI graph. If Draw Things isn't open with its API server switched on, this node has nothing to talk to.
So why bother? Because Draw Things was built from scratch for Apple Silicon by its developer (liuliu), and on a Mac it's genuinely faster than running ComfyUI natively - the pack author pegs it at roughly 3x, and Mac users on r/StableDiffusion say the same thing, that it "utilizes the Silicon chip" in a way the ported-from-Windows tools never managed. The catch is Draw Things is a fairly closed app. You don't get ComfyUI's graph, its queue, or tricks like face-swapping. This node is the bridge: you keep ComfyUI as the brain and let Draw Things be the fast engine underneath.
How it works
Under the hood it's not complicated. The node assembles a Python dict of Draw Things settings from your inputs and POSTs it to the local Draw Things API (HTTP, port 7860). Draw Things renders, and the image is streamed back as a standard ComfyUI IMAGE. You'll even see the generation appear inside the Draw Things window as if you'd typed it there yourself.
One consequence worth knowing up front: anything you don't set on the node stays at whatever it is in the Draw Things app. LoRAs, ControlNets, refiner settings - leave them alone here and Draw Things' own values apply. The node only overrides what you explicitly give it.
The inputs that matter
model- the killer detail. It's a plain string, and it has to match the Draw Things model filename exactly, e.g. the defaultflux_1_dev_q8p.ckpt(that's Flux.1 [dev] at Q8, Draw Things' quantized build). Don't guess the name. In Draw Things, pick the model, hit the "..." next to Settings, choose Copy configuration, and paste it somewhere - the exact filename is right there.prompt- your text. Nothing exotic; it's the same prompt you'd type in either app.width/height- output size, both default 512. Bump these for Flux (512 is small).steps(default 20),guidance_scale(default 3.5),seed(default 42) - the usual dials. 3.5 guidance is a sensible Flux default.sampler- an enum of 17 Draw Things samplers, defaultEuler A Trailing. Note these are Draw Things' names (UniPC, DPM++ 2M Karras, LCM, TCD, the "Trailing"/"Substep" variants), not ComfyUI's KSampler list.
The single output is generated_image (IMAGE) - wire it straight into a Preview Image or Save Image node.
How to install it
You need two things: the Draw Things app, and this node pack.
In Draw Things, open the Advanced tab on the left, enable API Server with Protocol HTTP, Port 7860, IP localhost. That's what opens the door.
Then the pack, via ComfyUI Manager (search ComfyUI-DrawThingsWrapper, install, restart) 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
"Model not found" or a blank result. Nine times out of ten it's the model name. It must be the literal Draw Things filename - use Copy configuration and paste, don't retype from memory.
Nothing happens when you re-run. ComfyUI only re-executes a node when its ComfyUI inputs change. If you tweaked something in the Draw Things app instead, ComfyUI thinks nothing changed and serves the cached result. Change a value on the node (even the seed) to force a fresh run.
Same seed, different image. Reproducibility needs both sides to match - the ComfyUI inputs and the settings sitting in Draw Things. A stray LoRA or CFG left on in the app will quietly change your output.
It's just... not fast, or errors on connect. This wrapper only pays off on Apple Silicon with Draw Things actually running locally. On a Linux/Windows box there's no Draw Things to call - this isn't the node for you. And if the API server isn't enabled (or is on a different port), the connection fails; recheck that Advanced tab.
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 |
|---|---|---|
| generated_image | IMAGE | — |