MOSS-Image in ComfyUI: setup, workflows and fixes
ComfyUI has supported MOSS-Image natively since 16 Oct 2026, and ships three MOSS-Image templates. There is also the official OpenMOSS plugin. They use different files, and mixing them is the most common reason a workflow fails.
| Native ComfyUI (recommended) | Official OpenMOSS plugin | |
|---|---|---|
| Install | Update ComfyUI. No custom nodes | Search “MOSS-Image” in ComfyUI Manager, or copy comfyui/moss-image into custom_nodes |
| Weights | Comfy-Org single files | The official Diffusers folder (transformer/, text_encoder/, tokenizer/, vae/) |
| Loaders | Load Diffusion Model, Load CLIP (type moss_image), Load VAE | MOSS-Image HF Loader with model_path set to the folder |
| Workflow | image_moss_image_t2i.json | moss-image.json |
| Defaults | 25 steps, CFG 2.5, er_sde / simple | 50 steps, CFG 3, shift 5, Euler / sgm_uniform |
Native ComfyUI, step by step
Update ComfyUI. If the Load CLIP node has no
moss_imagetype, your build is too old. On the Windows portable build, run the nightly update script rather than the plain “Update ComfyUI” one; Desktop and Cloud follow stable releases and may lag.Download three files from Comfy-Org/MOSS-Image. The template's set, which fits 12 GB cards:
ComfyUI/models/ ├── diffusion_models/ │ └── moss_image_sft_int8_convrot.safetensors 5.41 GB ├── text_encoders/ │ └── qwen3.5_9b_w4a8_gptq.safetensors 7.34 GB └── vae/ └── flux2-vae_small.safetensors 0.25 GBMore or less VRAM: pick other files.
Load a template. In ComfyUI open Templates and search MOSS, or drag one of these into the canvas:
- image_moss_image_t2i.json — SFT, text to image
- image_moss_image_base_t2i.json — Base, text to image
- image_moss_image_t2i_bboxes.json — SFT with drawn layout boxes
Copies of the templates in Comfy-Org/workflow_templates (MIT) as of 18 Oct 2026.
Write a prompt and run. The templates wrap everything in a subgraph called “Text to Image (MOSS-Image)”. Open it to change steps, CFG or skip-layer guidance.
What is inside the template
| Node | Setting |
|---|---|
| Load Diffusion Model (UNETLoader) | moss_image_sft_int8_convrot.safetensors, weight dtype default |
| Load CLIP | qwen3.5_9b_w4a8_gptq.safetensors, type moss_image |
| Load VAE | flux2-vae_small.safetensors |
| SkipLayerGuidanceDiTSimple | layer 22, start 0, end 0.5 |
| EmptyFlux2LatentImage | 1024 × 1024 |
| KSampler | 25 steps, CFG 2.5, er_sde, simple, denoise 1 |
| TextGenerate (prompt upsampler) | Optional: rewrites your idea into a long caption with the text encoder |
The template trades quality for speed. For results closer to the official ones use 50 steps and CFG 3, and set the skip-layer end to 1.0 as the official plugin does. Seeds will still not give the same image as the Python pipeline; the official README says ComfyUI's scheduler does not snap to the training grid.
The official plugin and the “HF Loader”
Install “MOSS-Image” from ComfyUI Manager, or run
python comfyui/install.py --comfy-root /path/to/ComfyUIfrom a clone of the repo. Restart ComfyUI.Download the whole MOSS-Image-SFT (or Base) repo, about 27 GB, for example with
hf download OpenMOSS-Team/MOSS-Image-SFT --local-dir models/MOSS-Image-SFT.Drag in moss-image.json. In MOSS-Image HF Loader, set
model_pathto that local folder. It does not download by repo id.Run: 50 steps, CFG 3, shift 5, negative-branch skipping at layer 22, Euler / sgm_uniform, 1024 × 1024.
Want both? The plugin also ships separate component loaders, and the Comfy-Org single files work with the native nodes. Just do not feed the plugin's workflow a Comfy-Org file, or the other way round.
Errors people hit first
- No
moss_imageoption in Load CLIP - ComfyUI is older than 16 Oct 2026. Update to nightly or master; on portable, use the nightly update script.
- The workflow from GitHub asks for nodes I don't have
- That is the official plugin's workflow. Either install the plugin, or use the native template instead.
- Images come out washed out with odd swirls
- A user on the Comfy-Org repo traced this to launching ComfyUI with
--use-sage-attention. Remove the flag. - Garbage output with a shift node added
- In the native workflow, shift is set with ModelSamplingAuraFlow or ModelSamplingFlux; ModelSamplingSD3 uses a different scale, the template notes say. One user fixed garbage output just by removing the shift node, since 5 is already the model default. The official plugin is different: its README says to keep ModelSamplingSD3 before SLG.
ModuleDict … has no attribute qwith a 4-step LoRA- Old rapid-moss nodes and fused-QKV checkpoints. Update the adapter's nodes, or use its native workflow (see turbo).
- Drag and drop of a workflow image does nothing
- Use Workflow → Open and pick the file instead.
- Layout boxes are ignored in the bbox template
- The prompt upsampler is on and rewrites the layout. Set
enable_prompt_upsamplerto false inside the subgraph. - Vertical stripes on skies and walls
- An SFT issue, not your setup. Fixes here.
Layout boxes in ComfyUI
The bbox template uses two native nodes. Create Bounding Boxes lets you draw boxes and give each a type (object or text), a description and the text to write. MOSS-Image Layout Prompt turns them into the JSON the model reads: it converts the node's 0–1000 coordinates into pixels around the canvas centre, labels text boxes text, and lets you mark object boxes as characters (“1, 3”). Want to see or edit that JSON outside ComfyUI? Paste it into the layout builder.