Nodes/CWK Checkpoints Preset Manager/CWK Model Preset Manager
ComfyUI Node

CWK Model Preset Manager

One node that loads your checkpoint and remembers exactly how you like it

By cowneko·Created 6 months ago·Updated 4 months ago· 1
CWK Model Preset Manager
    • MODEL
    • CLIP
    • VAE
    • LATENT
    • steps
    • cfg
    • sampler_name
    • scheduler
    • width
    • height
    • infos
    model_name
    override_rng
    override_model_sampling
    override_clip_name
    override_clip_type
    override_vae_name
    override_sampler
    override_scheduler
    override_cfg0.0
    override_steps0
    override_clip_skip0
    resolution_preset
    override_width0
    override_height0
    batch_size1

    If you've got more than a handful of checkpoints, you know the dance: load a model, then re-set the sampler, scheduler, CFG, steps, and clip skip to whatever that specific model actually wants. Some animes want clip skip 2, some SDXL merges want dpmpp_2m_sde_karras, and a GGUF Flux quant needs an external CLIP and VAE bolted on every single time. CWK Model Preset Manager is the node that stops you doing that by hand. It's part checkpoint loader, part per-model settings database, and part CivitAI-backed model browser - all in one custom-drawn node from the CWK Checkpoints Preset Manager pack by cowneko.

    The core trick is that every setting is stored per model in a checkpoint_presets.json file. Load juggernautXL.safetensors and it restores that model's own sampler/scheduler/CFG/steps/clip skip/resolution; load dreamshaper.safetensors and you get a completely different set. Nothing else in stock ComfyUI does this - the built-in loader hands you a bare MODEL/CLIP/VAE and makes you wire up every generation knob yourself. It also remembers the last model you used, so a page refresh or restart puts you right back where you left off.

    How it actually works

    The node is a real loader under the hood, not a wrapper. It reads from ComfyUI's checkpoints, diffusion_models, and - if you have city96's ComfyUI-GGUF installed - your .gguf files (it finds the GGUF loader at runtime, so it works regardless of how that pack was installed). Then it merges three layers of settings, in order: the model's saved preset, then any override_* inputs you've wired in, then the resolution_preset dropdown if you've set one. It applies clip skip directly on the CLIP (clip.clip_layer()), patches the sampler's RNG source (the CPU/GPU/NV modes come from vendored smZNodes code, so you get cross-GPU reproducible noise without installing smZNodes), and even generates the empty LATENT for you - no separate Empty Latent Image node needed.

    The sampler/scheduler fallback is the quiet hero. CivitAI example metadata and A1111 workflows love to say "Euler a" or "DPM++ 2M Karras" - names stock ComfyUI doesn't know. This node runs an alias table, normalizes the naming, and fuzzy-matches to the closest thing you actually have, falling back to euler/simple if it can't find anything. It logs the resolution to the console.

    Inputs and outputs that matter

    You set one required input, model_name, and then a stack of override_* inputs. Leave any of them at (preset) and the saved preset wins - that's the whole point. The ones you'll actually touch:

    • override_sampler / override_scheduler / override_cfg / override_steps - one-off tweaks without saving
    • resolution_preset - one-click width/height for SD1.5 (512 base), SDXL/Pony/Flux (1024 base), and Wan (video resolutions)
    • batch_size - 1–64, reflected in the LATENT tensor
    • override_clip_name / override_vae_name / override_clip_type - essential for GGUF and diffusion models, which ship with no embedded CLIP or VAE

    Outputs are the usual MODEL, CLIP, VAE, LATENT, plus steps, cfg, sampler_name, scheduler, width, height as typed pins - and an infos STRING containing all resolved values as JSON, which feeds its companion node, CWK Infos Extractor.

    Installing it

    Via ComfyUI Manager, search CWK Checkpoints Preset Manager. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/cowneko/CWK_Checkpoints_Preset_Manager.git
    

    Then restart ComfyUI. There are no pip dependencies to worry about - the whole thing runs on ComfyUI's own stack, which is refreshing. Two optional-but-important extras: ComfyUI-GGUF by city96 if you want to load quantized models, and a CivitAI API key if you want thumbnails, auto-populated presets from example images, update checks, and in-app downloads (the README calls the key required for those features; plain model loading works without it).

    Where people get burned

    • GGUF models have no embedded CLIP or VAE. Load a .gguf checkpoint and forget to set an external CLIP (with the right Clip Type) and VAE, and the node just prints a warning while you stare at a broken pipeline. The README calls this out repeatedly - it's the #1 gotcha.
    • Clip skip is not free. On SD 1.5 anime checkpoints 2 is the documented setting; on SDXL it mostly does nothing because those encoders already default to the penultimate layer. Don't blanket-set it and wonder why Pony output turned to noise.
    • Sampler names from CivitAI don't match yours. That's the fallback's job, but check the console - if it's falling back to euler every time, your preset or metadata had a name nothing could match.

    It's a big node on the canvas and the custom UI (load button, thumbnails, dropdowns) takes a beat to get used to. But if you switch models constantly, this is the one you'll actually reach for - a loader that treats "how I like this model" as data instead of a chore.

    CategoryCWK/presets

    Inputs (15)

    NameTypeDefaultDescription
    model_nameCOMBO1 options:
    override_rngoptCOMBO4 options: (preset), cpu, gpu, nv
    override_model_samplingoptCOMBO6 options: (preset), eps, v_prediction, lcm, x0, img_to_img
    override_clip_nameoptCOMBO2 options: (preset), embedded
    override_clip_typeoptCOMBO33 options: (preset), ace, boogu, chroma, cogvideox, cosmos, +27
    override_vae_nameoptCOMBO2 options: (preset), embedded
    override_sampleroptCOMBO45 options: (preset), euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    override_scheduleroptCOMBO10 options: (preset), simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    override_cfgoptFLOAT0.00–30
    override_stepsoptINT00–200
    override_clip_skipoptINT0-24–0
    resolution_presetoptCOMBO28 options: (preset), SDXL 1:1 (1024×1024), SDXL 3:4 (896×1152), SDXL 4:3 (1152×896), SDXL 2:3 (832×1216), SDXL 3:2 (1216×832), +22
    override_widthoptINT00–8192
    override_heightoptINT00–8192
    batch_sizeoptINT11–64

    Outputs (11)

    NameTypeDescription
    MODELMODEL
    CLIPCLIP
    VAEVAE
    LATENTLATENT
    stepsINT
    cfgFLOAT
    sampler_nameeuler,euler_cfg_pp,euler_ancestral,euler_ancestral_cfg_pp,heun,heunpp2,exp_heun_2_x0,exp_heun_2_x0_sde,dpm_2,dpm_2_ancestral,lms,dpm_fast,dpm_adaptive,dpmpp_2s_ancestral,dpmpp_2s_ancestral_cfg_pp,dpmpp_sde,dpmpp_sde_gpu,dpmpp_2m,dpmpp_2m_cfg_pp,dpmpp_2m_sde,dpmpp_2m_sde_gpu,dpmpp_2m_sde_heun,dpmpp_2m_sde_heun_gpu,dpmpp_3m_sde,dpmpp_3m_sde_gpu,ddpm,lcm,ipndm,ipndm_v,deis,res_multistep,res_multistep_cfg_pp,res_multistep_ancestral,res_multistep_ancestral_cfg_pp,gradient_estimation,gradient_estimation_cfg_pp,er_sde,seeds_2,seeds_3,sa_solver,sa_solver_pece,ddim,uni_pc,uni_pc_bh2
    schedulersimple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal
    widthINT
    heightINT
    infosSTRING