Nodes/ComfyUI MOSS-Image T8/MOSS-Image Official VAE Loader
ComfyUI Node

MOSS-Image Official VAE Loader

MOSS-Image's FLUX.2 VAE

By T8mars·Created 15 days ago·Updated 15 days ago· 2
MOSS-Image Official VAE Loader
    • vae
    ◄model_name▾►
    ◄deviceauto►

    Two hundred and fifty megabytes is the smallest download in this pack and the one people try hardest to skip. Don't. MOSS-Image decodes through the FLUX.2 VAE - AutoencoderKLFlux2, 32 latent channels, with a BatchNorm in front of the decoder that the decode step has to invert. Any other VAE in your models/vae folder is the wrong VAE, and the result ranges from grey porridge to a shape error.

    What it is

    A standalone VAE file, moss-image-vae.safetensors, shared by MOSS-Image Base and SFT. Ships as FP32 and stays FP32: the loader has no precision field, and the decode path is hardwired to single precision. Right call at this size - quantizing 250 MB to save 125 MB of VRAM buys you nothing.

    It's arguably the least glamorous node in the pack and the one whose identity is most worth understanding, because the 2026 pattern is that the VAE is a separate file you fetch yourself alongside a separate text encoder. Every "missing VAE" workflow error since late 2025 traces back to someone grabbing the diffusion weights and assuming the companions came with them. Here they genuinely don't: three files, three loaders, three wires.

    The mechanism

    The loader validates rather than loads. It reads the safetensors metadata, checks that the embedded config names AutoencoderKLFlux2 with latent_channels: 32, and compares the weight file's size and SHA256 against the manifest in the .assets directory next to it. If any of that disagrees, you get "MOSS-Image requires the official FLUX.2 VAE" or "incomplete or mismatched component package" instead of a mysterious image. Then it returns a descriptor, and the actual VAE weights are materialized inside the decode node, used, and released.

    That's the pack's staged lifecycle again, and it's why this file should be understood as small-but-load-bearing. Cheap to hold, impossible to swap.

    The inputs

    Two required fields, no surprises.

    model_name lists whatever lives in ComfyUI/models/vae. If it's empty or shows eleven SDXL VAEs and no MOSS file, you haven't downloaded it - the dropdown is just a directory listing. device defaults to auto and follows ComfyUI's device policy, with the same admission heuristic as the other loaders (file size plus headroom, CPU fallback if it doesn't fit). At 0.25 GB it will essentially always land on GPU; the field exists for consistency and for people deliberately offloading.

    Output is a single vae of type MOSS_IMAGE_VAE, and it goes to the Official VAE Decode and nowhere else. It won't plug into a stock VAE Decode node, won't plug into a VAE Encode, and there's no separate encode node in this pack - MOSS-Image here is text-to-image only, no img2img path shipped.

    Install

    Manager → search ComfyUI MOSS-Image T8, publisher t8star, package moss-image-t8 → install → restart. Manual route, from your ComfyUI directory:

    cd ComfyUI
    git clone https://github.com/T8mars/Comfyui-Moss-Image-T8 custom_nodes/Comfyui-Moss-Image-T8
    python -m pip install -r custom_nodes/Comfyui-Moss-Image-T8/requirements.txt
    

    Just the VAE, which takes seconds:

    hf download t8star/Moss-Image-Comfy --local-dir models --include "vae/*"
    

    You'll get models/vae/moss-image-vae.safetensors plus moss-image-vae.safetensors.assets/manifest.json. Keep them together - the manifest is what the loader hashes against.

    Where people get burned

    Downloading only the .safetensors. The file is visible on the Hugging Face web UI as a single item, so plenty of people grab it by hand and skip the assets folder, then hit a manifest error and assume the file is corrupt. The hf download include pattern exists precisely so you don't have to think about this.

    Re-saving or converting the file. Anything that rewrites the safetensors header - a well-meaning "optimize this model" tool, a re-quantize script - changes the SHA256, and the loader refuses to run. If you want to experiment with weights, do it on a copy under a different filename and expect the manifest check to reject it too, because the manifest is keyed by the filename it shipped with.

    Blaming the VAE for soft output. MOSS-Image output looking slightly soft or over-smoothed is a model and prompt trait, not a VAE mismatch - that's the same trap as the 2026 "swap the VAE to fix plastic skin" folklore, which mostly didn't work. Before you go hunting for alternatives: this pack has exactly one valid VAE, and you already have it.

    Expecting a VAE Encode counterpart. There isn't one in this pack. Six nodes total: three loaders, one encode (text), one sampler, one decode. If you want img2img or inpainting on MOSS-Image, this integration doesn't give you the entry point, and stacking a stock VAE Encode in front of a custom MOSS_IMAGE_LATENT sampler won't work.

    A stale descriptor after you re-download. The pack fingerprints files and re-verifies around each execution, so swapping the file underneath a running graph can produce a "package changed since verification" error. Re-queue the workflow; don't start reinstalling plugins.

    CategoryMOSS-Image/Official

    Inputs (2)

    NameTypeDefaultDescription
    model_nameCOMBO0 options:
    deviceCOMBOauto3 options: auto, cuda, cpu

    Outputs (1)

    NameTypeDescription
    vaeMOSS_IMAGE_VAE—