Nodes/civitai-comfy-nodes/Civitai Model Selector
ComfyUI Node

Civitai Model Selector

The one node that makes the rest of the Civitai pack make sense

By civitai·Created 2 months ago·Updated about a month ago· 42
Civitai Model Selector
  • api_config
  • air
  • path
  • clip
  • vae
  • clip 2
  • clip 3
air
resources_json{}

Start here, because this is the node you'll wire before almost everything else in the Civitai pack. The whole pack runs Civitai's cloud "recipes" - generation, upscaling, training, captioning - and those recipe nodes don't have model dropdowns. They expose typed sockets like model and vae that only accept a CIVITAI_AIR. The Model Selector is what fills them. Think of it as the adapter that turns "a model on Civitai" into something your graph can hold.

How it works

The selector is one node with two personalities, and the difference matters. It has an air input - a text field you fill with the 🔍 Browse Civitai button, which opens a searchable card grid of generation-capable models. Once you pick one, the node shows a thumbnail and name right on the canvas.

From there it fans out six outputs:

  • air - the model's AIR URN (urn:air:sdxl:checkpoint:civitai:...). Wire this into any Civitai recipe node's model/vae socket and the job runs on Civitai's fleet. Nothing is downloaded to your machine.
  • path - the local file path. This is the sneaky second feature: wire path into a standard loader's file widget (Load LoRA's lora_name, Load Checkpoint's ckpt_name) and the selector downloads the model into the matching ComfyUI folder for you. You keep your normal loader; the selector just feeds it. This is the whole point - the pack's docs say "no need to replace the loader, just feed it."
  • clip, vae, clip 2, clip 3 - component files, for models whose CLIP/VAE ships separately (Z-Image-Turbo, WAN, that crowd). Wire them into the matching loader slots.

The download happens only when path is connected. If you're using the selector purely for cloud generation (the air output), it never pulls a file down. Good design, and it's why the same node serves two completely different workflows without eating your disk.

The inputs you actually touch

  • air - required, but ignore the text box and use the Browse button. The tooltip literally says "use the Browse Civitai button."
  • resources_json - hidden-ish plumbing for the web picker; leave it alone.
  • api_config - optional Civitai Auth connection, if you want to override the env var or stored login.

Install

In ComfyUI Manager: Custom Nodes Manager → search "Civitai Comfy Nodes" (publisher civitai) → Install → restart. Or by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/civitai/civitai-comfy-nodes.git
pip install -r civitai-comfy-nodes/requirements.txt   # just `requests`

It's an early-preview pack (v0.4.x as of mid-2026), so expect occasional sharp edges. Auth matters most here: the pack resolves credentials from a Civitai Auth node, the CIVITAI_API_TOKEN env var (best for headless), or the sidebar connect panel (OAuth or a pasted API key). No key, no recipes.

Gotchas

  • Every cloud generation costs Buzz, not electricity. The selector itself is free - it's just picking a resource - but every recipe node you wire air into will bill your account. The raw_json/workflow_id outputs on recipe nodes are there so you can see what a job actually cost.
  • If you pick a model that doesn't support the recipe (say, a video model into an image node), the orchestrator will reject the job with a 400. Pick from the Browse grid and you'll generally be fine.
  • First runs of the pack have been reported slow - the announcement thread's top complaint was "generation times are super slow," which is a property of cloud jobs and polling, not of this node. If a job times out on a big resolution, try again; the backend queue is the bottleneck, not you.

Where people get burned: they wire path expecting it to be free and end up with a surprise 12 GB download, or they wire air into a recipe and wonder why nothing runs - because they never authenticated. Do those two things and this node quietly becomes the keystone of the whole pack.

CategoryCivitai/Loaders

Inputs (3)

NameTypeDefaultDescription
airSTRINGModel AIR (use the Browse Civitai button)
resources_jsonoptSTRING{}
api_configoptCIVITAI_CONFIG

Outputs (6)

NameTypeDescription
airCIVITAI_AIR
path*
clip*
vae*
clip 2*
clip 3*