Model Assembler
One loader node for full checkpoints and fp8 components
- MODEL
- CLIP
- VAE
The Model Assembler is a loader node for people who test model variants constantly: it combines the checkpoint loader, UNet loader, CLIP loader, and VAE loader into a single node with two modes. The author's stated reason is pure convenience - "Created so I don't have to change connections when testing full models and fp8 versions." Instead of rewiring four nodes when you switch from a full checkpoint to an fp8 UNet + separate CLIPs + separate VAE, you flip one dropdown.
It's not a sampler or a merger; it's a front-end that wraps ComfyUI's built-in loading calls and exposes the pieces you'd otherwise wire by hand.
How it works
Pick a load_mode:
full_checkpoint- the classic: pick oneckpt_name, and the node calls ComfyUI's checkpoint guess-config loader, handing youMODEL,CLIP, andVAEfrom that single file. This is a one-node replacement for the stock CheckpointLoader.separate_components- build the pipeline yourself:base_modelloads as the UNet (a checkpoint file used as a diffusion model, withweight_dtypeoptionsdefault/fp8_e4m3fn/fp8_e4m3fn_fast/fp8_e5m2- the fp8 modes are the whole point for quantized testing).vae_modelloads the VAE, and up to three CLIPs (clip_model_1…clip_model_3) load from yourtext_encodersfolder using theclip_typeyou pick (sdxl, flux, sd3, etc.).
Both paths return the same three outputs: MODEL, CLIP, VAE.
The settings that matter
load_mode- full checkpoint or separate components.ckpt_name/base_model- the file used in each mode.weight_dtype- fp8 options for the UNet in separate mode; this is where the "test full vs fp8 without rewiring" use case lives.clip_type- the author's tooltip spells it out: "Select the appropriate type for your CLIP model(s). E.g., 'sdxl' for a LoRA/HiRA pair." This is the knob that makes or breaks CLIP loading, because a mismatched type loads a CLIP that doesn't fit the architecture.device-defaultor forcecpufor CLIP loading (handy for memory-strapped setups).clip_model_1…clip_model_3- which text encoders to load; at least one is required in separate mode.
Gotchas
base_modelin separate mode is a checkpoint treated as a UNet. ComfyUI'sload_diffusion_modelis genuinely how you load a full checkpoint as the diffusion model - that's the trick that makes this "one file, fp8-loaded" workflow work - but it means the base checkpoint's own CLIP and VAE are ignored, so you must supply all three separately. Missing one throws aFileNotFoundError/ValueErrorand the run fails loudly, which is at least clear.- fp8 modes change memory, not necessarily quality.
fp8_e4m3fnandfp8_e4m3fn_fastare the same dtype, the latter with extra optimizations. If you're testing whether an fp8 quant is "good enough," this node is the fastest way to A/B it against the full checkpoint - that's its real job. - The
clip_typelist is long because it mirrors ComfyUI's own enum. Most people will ever touchsdxl(orfluxfor FLUX models). Guessing wrong loads something that may fail at encode time, not load time.
Install
ComfyUI Manager (search "Santodan"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/Santodan/santodan-custom-nodes-comfyui
Restart. No dependencies, no downloads - it loads whatever's already in your checkpoints, vae, and text_encoders folders.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| load_mode | COMBO | 2 options: full_checkpoint, separate_components | |
| ckpt_name | COMBO | 0 options: | |
| base_model | COMBO | 0 options: | |
| weight_dtype | COMBO | 4 options: default, fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2 | |
| vae_model | COMBO | 0 options: | |
| clip_type | COMBO | Select the appropriate type for your CLIP model(s). E.g., 'sdxl' for a LoRA/HiRA pair. | |
| device | COMBO | 2 options: default, cpu | |
| clip_model_1 | COMBO | 1 options: None | |
| clip_model_2opt | COMBO | None | 1 options: None |
| clip_model_3opt | COMBO | None | 1 options: None |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| VAE | VAE | — |