ꘅ SDXS generator
One-step-ish 512px generation that stays on the Mac
- image
- image
- metrics
What it is
ꘅ SDXS generator runs SDXS - IDKiro's distilled 512px Stable Diffusion - as a Core ML graph on Apple silicon, inside a Comfy node. Two modes: text for prompt-to-image, sketch for a sketch or drawing to image.
Why would you use this instead of the SDXL or Flux graph you already have? Speed, and only speed. SDXS is a distillation demo: the decoder is collapsed to the point where a handful of steps gets you a coherent 512px image, which is fast enough to be an interactive control rather than a batch job. That's the whole premise of this pack - a decision or a drawing changes, an image appears, you keep going.
The quality ceiling is exactly what you'd predict from a distilled 512px model. It's not competing with a 6B-parameter photoreal checkpoint and it shouldn't be asked to. Where it earns its place is as the visible end of a live loop: a p5 sketch or a mouse drawing in, a 512px interpretation out, at a cadence that lets you react.
Community evidence for SDXS specifically is thin - 71 corpus mentions across two years of r/StableDiffusion and r/comfyui threads, with a handful per month at peak. It never became a default; it's a technique people reference. Treat this node as the author's integration of that technique, not a mainstream path.
The inputs you'll actually touch
model_path - an enum listing installed denoiser packages, or the single value not installed. It's not a path you type; it's discovered from disk, and its tooltip says why: the installed denoiser determines native size and variant, and companion packages live beside it.
prompt - the conditioning. In sketch mode this describes what your drawing should become, not what it is.
mode - text or sketch. The available list is filtered by what's actually installed, so a bundle missing controlled_unet.mlpackage won't offer sketch.
seed - 0 to 2³²−1, default 42. The tooltip mentions clicking the number, selecting the text, typing and pressing Enter - and that it's editable during Live, with the next frame using the new seed.
control_scale - how hard the guide pushes, default 1.0. invert - flip the guide after preprocessing. movement - live seed-noise rotation speed; at 0 the noise holds still, and above 0 it drifts so successive live frames differ. That's your animation knob, not a camera move.
There's an optional image input, and sketch mode requires it - without one you get This mode requires an IMAGE input.
Outputs are image (IMAGE) and metrics (a JSON STRING with inference timing, size, backend, model path, family, and node time).
What's missing, and why that's correct
The sibling SD Turbo node has preprocess and strength; this one doesn't. That's not an oversight. SDXS is a heavily distilled model where the useful behaviour is a fixed small number of denoising steps, and Comfy's usual knobs - CFG, step count, sampler - aren't exposed at all. Anything distilled needs its guidance handled the way its training handled it; bolting "CFG 7, 30 steps" onto a distilled model is the classic way to get oversaturated, artifacted garbage. The node simply doesn't offer you the rope.
Install and downloads
cd ComfyUI/custom_nodes
git clone https://github.com/languel/genereticore
cd ComfyUI && python -m pip install -e 'custom_nodes/genereticore[image]'
That extra is what matters here: coremltools, transformers, huggingface-hub, numpy, Pillow and opencv-python, pinned. The base install declares zero dependencies, so on Linux or Windows the node registers and then refuses - image inference checks the platform and raises GeneretiCore image inference requires macOS 14+ on Apple silicon. Don't replace Comfy's Torch with the conversion environment's Torch while you're at it.
Then click ↓ on the generator toolbar for the pinned public bundle (sha-verified, no Hugging Face login). Bundles land in Comfy's genereti_coreml model folder - an explicitly configured path wins, otherwise models/genereti if it exists, otherwise models/genereticore/images. Each usable size is a numeric directory (256/, 512/) holding unet.mlpackage, encoder.mlpackage and decoder.mlpackage - all three, or the size doesn't count - plus controlled_unet for sketch mode. Tokenizer and text encoder assets live in assets/sdxs/ beside it, and those reads are local_files_only: there is no implicit download, ever.
Where people get burned
not installed in the dropdown. The node found no complete bundle. Missing one of the three core .mlpackage files is enough - a partial copy shows up as an empty list, not a helpful error.
Both packs at once. Do not enable the legacy genereti_comfy_coreml pack alongside this one. Both claim the node IDs GeneretiSDXSGenerate and GeneretiSDTurboGenerate, and Core rejects the duplicate installation before it registers its routes. Move the old folder or symlink outside custom_nodes.
Live vs queue. Pressing Comfy's Run gives you exactly one frame and updates the metrics viewer. Repeated live frames come from the Genereti viewer's own play control, which needs the companion browser bridge. Without it the Python nodes still do queued inference - you just don't get the loop.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model_path | COMBO | Installed denoiser path determines native size and variant; companion packages live beside it. | |
| prompt | STRING | A luminous abstract performance stage made from hand-cut paper shapes, cobalt blue and orange light, energetic theatrical composition | — |
| mode | COMBO | sketch | 2 options: text, sketch |
| seed | INT | 420–4294967295 | Click the number, select its text, type an integer and press Enter. Editable during Live; the next frame uses the new seed. |
| control_scale | FLOAT | 1.000–65504 | Guide influence. |
| invert | BOOLEAN | false | Invert after preprocessing. |
| movement | FLOAT | 0.000–100 | Live seed-noise rotation speed. Zero holds noise fixed. |
| imageopt | IMAGE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| metrics | STRING | — |