ComfyUI-JoyAI

Run JoyAI-Image-Edit and JoyAI-Image-Edit-Plus in ComfyUI — JD's 16B Multimodal Diffusion Transformer + 8B Qwen3-VL MLLM for instruction image editing from one reference (Edit) or up to five (Edit Plus).

It installs like any other diffusion model — auto-detected and loaded through ComfyUI's normal Load Diffusion Model / Load CLIP / Load VAE / KSampler path. No patching of ComfyUI's source, and no extra Python packages.

Edit Plus workflow

Install

cd ComfyUI/custom_nodes
git clone https://github.com/Nynxz/ComfyUI-JoyAI

Restart ComfyUI.

Download the models

JoyAI reuses stock components — the Wan 2.1 VAE and the Qwen3-VL-8B text encoder — so only the transformer differs between Edit and Edit Plus. Everything is pre-packed and ready to load:

File Folder From
Edit (single ref) transformer ComfyUI/models/diffusion_models/ jdopensource/JoyAI-Image-Edit-ComfyUI
Edit Plus (1–5) transformer (bf16) ComfyUI/models/diffusion_models/ nynxz/JoyAI
Qwen3-VL-8B text encoder ComfyUI/models/text_encoders/ jdopensource/JoyAI-Image-Edit-ComfyUI
Wan 2.1 VAE ComfyUI/models/vae/ jdopensource/JoyAI-Image-Edit-ComfyUI

The Edit Plus file is tagged so the stock Load Diffusion Model node auto-routes it. Load the encoder with Load CLIP → type joyimage.

Use it

JoyAI is an edit model: every conditioning (positive and negative) must carry the reference image(s). Drag a ready-made graph onto the canvas to start: single-reference · Edit Plus (1–5) (shown above).

Single-reference workflow

  1. Load Diffusion Model → the JoyImage transformer (auto-detected; a plus file routes to Edit Plus automatically).
  2. Load CLIP → Qwen3-VL-8B, type joyimage. Load VAE → Wan 2.1.
  3. Text Encode JoyImage Edit ×2 — one positive, one negative; wire the same image + vae into both (an empty negative prompt still needs them).
  4. Size the sampling latent to the edit: take the positive node's image output → VAE Encode → KSampler latent_image with denoise = 1.0.
  5. KSampler → VAE Decode → Save Image.

The model installs its own required CFG guidance-rescale at sample time — don't add a CFGNorm/sampler_cfg_function node (it'll be rejected rather than silently override the model's rescale).

Edit Plus (1–5 references)

Same graph, but use Text Encode JoyImage Edit Plus. It has a single auto-growing image input — connect image1 and an image2 socket appears, up to five. The order is semantic (image1…image5 map to the reference sequence), and each reference is bucketed independently, so they can be different sizes. Wire the same references into the positive and negative nodes. The node's target_image output (the last reference, bucketed) → VAE Encode → KSampler latent_image.

Don't connect ControlNet or a custom sampler CFG function to either variant.

Credits

JoyAI-Image-Edit by JD (jd-opensource) (Apache 2.0). The base integration is vendored from Comfy-Org/ComfyUI#14428; Edit Plus is reconstructed against the official Diffusers reference.

S
Description
No description provided
Readme
454 KiB
Languages
Python 100%