ComfyUI Node

AIHub Expose Model

The full model selector — powerful, fiddly, and honestly the pack says don't reach for it first

By otavanopisto·Created about a year ago·Updated 22 days ago· 7
AIHub Expose Model
    • MODEL
    • CLIP
    • VAE
    idexposed_model
    labelModel
    model
    loras
    loras_strengths
    loras_use_loader_model_only
    is_diffusion_modeltrue
    diffusion_model_weight_dtypedefault
    limit_to_family
    limit_to_group
    tooltip
    advancedfalse
    index0
    disable_loras_selectionfalse
    disable_model_selectionfalse
    optional_vae
    optional_clip
    optional_clip_type
    optional_lora_prepend
    optional_lora_prepend_strengths
    optional_lora_prepend_use_loader_model_only

    AIHub Expose Model is the node that lets the external app's user pick a model and attach LoRAs to it, and it outputs the full MODEL, CLIP, VAE trio your sampling needs. It's also the node the pack's own README tells you to think twice about: "Use of this selector is discouraged unless you want to specify an initial value, since it can be rather complicated to setup." That's the author being honest, so here's the honest version of the trade-off.

    The complicated part comes from how model selection works in AIHub. To be selectable by a client, a model has to be exported - a JSON config file describing it (id, family, group, file, default cfg/steps/sampler/scheduler) lives in ComfyUI/aihub/models. You generate these with the AIHubMetaExportModel node or write the JSON by hand. On top of that, the node decides whether it's a regular checkpoint (loads from models/checkpoints) or a diffusion model (loads from models/diffusion_models via UNETLoader, with an fp8 weight-dtype choice). Add per-model LoRA lists, and you're juggling five moving parts just to show a dropdown.

    What you actually set

    • model - the default checkpoint to use, as a base value. The client can override it.
    • loras / loras_strengths / loras_use_loader_model_only - comma-separated defaults for the LoRA stack: names, matching strengths, and a t/f per LoRA for whether it should skip the clip (loader-model-only mode). All three lists must line up.
    • is_diffusion_model - and here's the trap: the default is true. Most people's checkpoints are not diffusion models. For anything in models/checkpoints, flip this off or the node goes hunting in the wrong folder.
    • diffusion_model_weight_dtype - default, fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2. Only meaningful when is_diffusion_model is on; fp8 is how you run a diffusion model you can't fit in VRAM at full precision.
    • limit_to_family / limit_to_group - narrow the picker to, say, family sdxl or group fancy_animal_model, so beginners can't select a model that breaks the workflow.
    • disable_model_selection / disable_loras_selection - lock either half of the picker down.

    Outputs are MODEL, CLIP, VAE - straight into a KSampler, exactly like a checkpoint loader's.

    The one-liner verdict

    The README's bluntest line is the real guidance: the standard node's actual use is selecting LoRAs for a specific model. If all you want is a model dropdown, use the Simple variant instead - it strips all of this to the essentials. Reach for this one when the workflow genuinely must let a client stack LoRAs onto a family of models. One friendly detail from the source: you can leave model, loras, and friends blank and the client-side UI just picks the first option it gets - handy for a quick default.

    Install & gotchas

    Pack install is the usual: ComfyUI Manager → search ComfyUI-aihub-workflow-exposer, or git clone https://github.com/otavanopisto/ComfyUI-aihub-workflow-exposer into custom_nodes, then restart. No requirements.txt, no extra pip deps. The model JSONs you export live in ComfyUI/aihub/models; keep them in sync if you rename files.

    Biggest gotcha besides the is_diffusion_model default: lora lists that don't match counts. Three loras but two strengths and the client will send something your workflow chokes on. And remember exporting only matters for client-side selection - if the workflow is pinned to one model, the README notes you can skip all this and load directly with the AIHub Utils Load Model node on a string input.

    Categoryaihub/expose

    Inputs (21)

    NameTypeDefaultDescription
    idSTRINGexposed_modelA unique custom id for this workflow (it should be unique)
    labelSTRINGModelThis is the label that will appear in the field
    modelSTRINGThe default model to use as base for this workflow
    lorasSTRINGThe default, comma separated list of loras to apply to this model
    loras_strengthsSTRINGThe default, comma separated list of lora strengths to apply to this model, it must match the number of loras given
    loras_use_loader_model_onlySTRINGThe default, comma separated list of booleans for the loras, 't' or 'f' to apply only to the model and not the clip, it must match the number of loras given
    is_diffusion_modelBOOLEANtrueIf set to true, it will load the model from the diffusion_models folder, if false it will load it from the checkpoints folder
    diffusion_model_weight_dtypeCOMBOdefaultThe weight dtype to use when loading the diffusion model, this is only used if is_diffusion_model is true
    limit_to_familySTRINGThe family of the model to be loaded is limited by this value
    limit_to_groupSTRINGThe group of the model to be loaded is limited by this value
    tooltipSTRINGAn optional tooltip
    advancedBOOLEANfalseIf set to true, it will make this option be hidden under advanced options for this workflow
    indexINT0This value is used for sorting the input fields when displaying; lower values will appear first.
    disable_loras_selectionBOOLEANfalseIf set to true, it will disable the loras selection field in the UI
    disable_model_selectionBOOLEANfalseIf set to true, it will disable the checkpoint selection field in the UI
    optional_vaeoptSTRINGThe default for an optional VAE to load, if not given the VAE from the checkpoint will be used if available
    optional_clipoptSTRINGThe default for an optional CLIP to load, if not given the CLIP from the checkpoint will be used if available
    optional_clip_typeoptSTRINGThe default for an optional CLIP to load, if not given the CLIP from the checkpoint will be used if available
    optional_lora_prependoptSTRINGAn optional string to prepend to the loras list, useful for programmatic addition of loras
    optional_lora_prepend_strengthsoptSTRINGAn optional string to prepend to the loras strengths list, useful for programmatic addition of loras
    optional_lora_prepend_use_loader_model_onlyoptSTRINGAn optional string to prepend to the loras use_loader_model_only list, useful for programmatic addition of loras

    Outputs (3)

    NameTypeDescription
    MODELMODEL
    CLIPCLIP
    VAEVAE