Model Gallery
Your model dropdowns, replaced with a card grid you can actually search
The name is a little dishonest, in the best way. ModelGallery is a node with zero inputs and zero outputs - you will never wire it into a workflow. What it actually is: a frontend extension that quietly takes over every model dropdown in ComfyUI and replaces it with a touch-first card grid. Install once, and picking a checkpoint, LoRA, VAE, ControlNet, or upscaler stops being a scroll through a mile of tiny text.
What it actually fixes
ComfyUI's native combos are the worst part of an otherwise great UI, and they're brutal on a phone or tablet: a narrow dropdown, hundreds of entries, no thumbnails, no search. This pack hooks those dropdowns and swaps in a modal grid with subfolder filter chips, a fuzzy name filter (type sdxl or anime and it narrows), file mtime, and the currently selected model highlighted. Tap a card and the exact combo string is written back verbatim, so your serialized workflows don't churn from run to run.
Each card also tells you what the model is, in two layers. First, an offline filename corpus (web/data/models.json) that pattern-matches the basename to a base-architecture family, badges for notable models, and a one-line summary - this is instant and works even for .ckpt/.pth/GGUF files with no embedded metadata. Second, tap a card's ⓘ and the pack reads the .safetensors header (header only, no tensors) to show the authoritative stuff: base model, precision and param count, and for LoRAs the rank/alpha, trigger words (tap-to-copy straight into your prompt), and training details like optimizer, learning rates, and steps. The corpus is a heuristic guess; embedded metadata wins when the file carries it.
How it works
The extension matches widgets by name against a known map - lora_name, ckpt_name, vae_name, control_net_name, unet_name, clip_name*, upscale_model, and a few more - and wraps each one's onPointerDown handler to open the grid instead of the native control. That hook requires the modern Vue frontend (comfyui-frontend-package >= 1.40); on the old LiteGraph canvas it can't take over, so it just leaves your dropdowns alone.
There's a smart safety gate worth knowing about: a widget named ckpt_name isn't automatically a checkpoint picker. RIFE VFI hardcodes its own ckpt_name options, so the pack only takes over a combo when the widget's own options actually overlap a models/ folder listing. A dropdown that stays stubbornly native is usually this gate working as designed, not a bug.
The backend adds a few endpoints (/model_gallery/list, /meta, and an on-demand /hash for checksums), all reading only through ComfyUI's own folder_paths - no new Python dependencies, no outbound requests, nothing beyond what ComfyUI already ships.
Install
cd <ComfyUI>/custom_nodes
git clone https://github.com/laurigates/comfyui-model-gallery
Restart ComfyUI, then hard-refresh the browser tab (Ctrl+Shift+R / Cmd+Shift+R). You can also find it in ComfyUI Manager by searching "Model Gallery". There are no heavy model downloads or extra pip packages - the only dependency is a ComfyUI modern enough to have the Vue frontend. Frontend changes take effect on a hard refresh alone; you only restart for a ComfyUI version bump.
Where you'll hit friction
- The grid never appears. Hard-refresh, then hard-refresh again - cached JS is the usual culprit. If it still doesn't show, your ComfyUI is likely older than the 1.40 frontend floor; update it.
- Trigger words show up blank. Not every LoRA carries them. kohya/sd-scripts and Musubi Tuner runs embed most of the metadata; minimal diffusers or ai-toolkit exports often carry almost none, and the pack doesn't invent what isn't there.
.ckpt/.pthfiles. The ⓘ metadata read only parses.safetensors/.sftheaders; older formats fall back to the filename corpus, which is fine for the summary but has no trigger words.
If you already run the author's comfyui-prompt-editor, the grid can also mount inline in its all-fields modal, and the kit exposes a category-keyed picker for hosts like rgthree's Power Lora Loader. But none of that is required - the core value is just the better dropdown, everywhere, immediately.
Inputs (0)
No inputs
Outputs (0)
No outputs