Abracadabra
Type what you want built — Abracadabra wires the ComfyUI graph for you
- input1
- input2
- input3
- input4
- input5
- *
- *
- *
- *
- *
The name is only half a joke. Abracadabra is a text-to-workflow node: you type "inpaint the cars out of this photo" into a text box, hit run, and it hands you a finished, wired-up graph that does exactly that. No dragging nodes, no hunting for the right mask utility. It's a party trick, a rapid-prototyping tool, and an abandoned experiment, in roughly that order of usefulness - and once you understand what's behind the curtain, it's genuinely fun.
What it actually does
Abracadabra is a dynamic-prompt node. On every run it assembles a prompt for OpenAI's API containing three things: a system message telling the model to build node-graph workflows, a serialized summary of the ~90 node types it's allowed to use, and six example workflows shipped in the pack's examples/ folder (make a cat, remove the cars, replace dogs with beavers...). Then it asks the model to write Python that constructs your graph with ComfyUI's GraphBuilder API - the same plumbing behind runtime-generated subgraphs.
That code is executed and the graph it describes is validated before anything runs: every node must be on the whitelist, every input must exist, every wire type must match. If the model botches any of that, the error is fed back and it retries, up to three times. When something finally validates, the node returns an expand payload and ComfyUI materializes the whole subgraph. Loops and conditionals are banned outright - the retry loop literally greps the generated code for indentation, the tell-tale sign of a model sneaking in a for loop.
The inputs that matter
Only two are required, and really only one is interesting.
- instructions - your natural-language request, as specific as you can make it. "Generate a 512x512 cat playing piano" beats "make art." Mention a checkpoint, size, steps or denoise and it usually honors them.
- seed - an integer that seeds the
RAND()helper inside the generated code, so sampler seeds in the graph it builds are reproducible. Gotcha: it does not seed the LLM, so the graph structure itself can still vary between runs. - input1–input5 (optional, wildcard) - pass whatever you already have: an image, a model, a VAE, a mask. The node detects each input's type, tells the model what it has to work with, and the model plugs it in.
The node has five wildcard outputs, and the generated code decides what lands on them - typically an IMAGE, sometimes with a mask or latent alongside. Wire them to SaveImage or onward into the rest of your workflow.
Installing it
There's no README in this repo, which tells you how much maintenance it gets, but install is standard: in ComfyUI Manager search "abracadabra", or clone it manually.
cd ComfyUI/custom_nodes
git clone https://github.com/guill/abracadabra-comfyui
Restart ComfyUI, then make sure your key is in the environment before you launch it:
export OPENAI_API_KEY=sk-...
The only Python dependency is openai, but the API key has to come from the environment - there's no key field on the node. It also needs a reasonably current ComfyUI with dynamic-prompt (GraphBuilder) support. And if you want the mask/inpaint examples to actually build, know that the whitelist's mask nodes (Mask By Text, Cut By Mask, Separate Mask Components...) come from the Masquerade pack, so install that too.
Where people get burned
The model is hardcoded to gpt-3.5-turbo in the source; gpt-4-turbo-preview sits there as a commented-out line. If OpenAI retires that model name, calls start failing until you edit nodes.py yourself. Watch the console while it runs - the pack prints the full prompt and every retry error there, which makes debugging far less painful than it has any right to be.
Also know what you're signing up for. Every run is a paid API call, and your instructions plus the full node summary leave your machine. Given this community's history with custom nodes that hid bad things inside their OpenAI-adjacent dependencies, glance at requirements.txt before you trust any pack - and decide whether you're comfortable with a third party reading your workflow descriptions. If not, you can point OPENAI_BASE_URL at a local LLM server and never touch OpenAI at all.
The take
Abracadabra is the "simpler alternative" a frustrated crowd keeps asking for, in miniature: it proves you can describe a pipeline in English and get a working graph back. But it knows only ~90 nodes, it costs money per run, and it hasn't been touched since late 2024. Use it to prototype, to learn what a mask pipeline looks like, or to impress someone. Don't build your production workflow on it.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| instructions | STRING | — | |
| seed | INT | 00–18446744073709550000 | — |
| input1opt | * | — | |
| input2opt | * | — | |
| input3opt | * | — | |
| input4opt | * | — | |
| input5opt | * | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| * | * | — |
| * | * | — |
| * | * | — |
| * | * | — |
| * | * | — |