Nodes/ComfyUI-DrawThingsWrapper/Draw Things Txt2Img
ComfyUI Node

Draw Things Txt2Img

Drive Draw Things' Mac-fast generation from a ComfyUI graph

By JosephThomasParker·Created 2 years ago·Updated about a year ago· 53
Draw Things Txt2Img
    • generated_image
    modelflux_1_dev_q8p.ckpt
    prompt
    seed42
    width512
    height512
    guidance_scale3.50
    samplerEuler A Trailing
    steps20

    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 default flux_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, default Euler 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.

    CategoryDrawThingsWrapper

    Inputs (8)

    NameTypeDefaultDescription
    modelSTRINGflux_1_dev_q8p.ckpt
    promptSTRING
    seedINT42
    widthINT512
    heightINT512
    guidance_scaleFLOAT3.50
    samplerCOMBOEuler A Trailing17 options: UniPC, DPM++ 2M Karras, Euler a, DPM++ SDE Karras, PLMS, DDIM, +11
    stepsINT20

    Outputs (1)

    NameTypeDescription
    generated_imageIMAGE