🔌 Provider Loader
The unglamorous node every FiL LLM node is secretly waiting for
- config
- model
Provider Loader is the least interesting node in the FiL_Design_ImageMind pack, and you still can't do anything with the interesting ones until you've wired it. It's the config socket on Optic Scanner, Style Mixer, and the rest - the node that decides which LLM or vision model answers, how hot it runs, and what key (if any) is on the door.
Here's the thing people miss on first look: this pack's LLM half is provider-agnostic, and this is where you pick the provider. Seven are built in - Ollama and LM Studio locally, OpenAI, Google (Gemini), Groq, OpenRouter and Cloudflare Workers AI in the cloud. No key required for the local two, which makes them the painless on-ramp: if you're still deciding whether you want this at all, install Ollama, leave the rest of the panel alone, and you're live.
What it actually does
Pick a provider, pick a model, and it hands you a config object that every FiL node downstream consumes, plus the resolved model name as a plain string. The config carries the generation knobs too: temperature (0.7 default, higher = looser), max_tokens (0 means let the provider decide), rate_limit_ms for polite pacing, and max_image_side (1024 default) which downscales images before upload so vision calls don't ship 4K payloads. There's no per-article magic here - it's a typed, validated settings object with a nice Vue panel on top.
The refresh_models boolean is worth knowing about the moment you add a model or a key and the dropdown looks stale. Flip it and the list reloads from the provider. The panel also shows a live status badge probing whatever you've configured, so you can catch a dead endpoint before queueing a run.
Keys, and the order they're read
This is where people get burned. The pack reads a key from data/auth.json (written by Settings → FiL_Design_ImageMind → Providers), then a real OS environment variable, then API.env in the pack root - and the first one that exists wins. A stale key sitting in auth.json silently beats a fresh env var, so when you get an auth error, clear the earlier source. Local providers skip all of this. (As an aside, this is a good place to remember the LLMVISION incident - arbitrary Python in a node runs with your user account, so only install packs you trust. This one is MIT and open.)
Wiring it up
Feed config into Optic Scanner's config input and you're done. If you want a model name as a plain string for a display or filename node, the model output has you. That's the whole graph contribution of this node - short, and meant to be.
Common issues
- Model list is empty - for Ollama/LM Studio, is the server actually running (
ollama serve)? For cloud, re-enter the key in Settings → Providers and hit refresh. - Auth error - stale key in an earlier source, per above. Clear
data/auth.jsonor the env var and retry. - Vision requests failing on OpenRouter - the selected model probably can't see. The pack retries down a chain of free vision models, but picking a vision-capable model up front is faster than letting it crawl.
Install is the same as the rest of the pack: ComfyUI Manager → search FiL_Design_ImageMind, or git clone https://github.com/FiL-Design-Ai/FiL_Design_ImageMind into custom_nodes/, pip install -r requirements.txt, restart. Needs ComfyUI 0.3.60+ (V3 API) - if the nodes don't appear, that's the first thing to check.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| provider | COMBO | ollama | Choose where the model runs. Local for offline work, cloud for hosted models. |
| model | COMBO | (loading...) | Choose which model to use. If the list is empty, refresh it or check the provider account. |
| refresh_models | BOOLEAN | false | Reload the model list. Use after adding a new model or API key. |
| unload_llm | BOOLEAN | false | Local servers only (Ollama, LM Studio): unload the model from memory right after the prompt is generated, freeing VRAM for the image generation. |
| temperature | FLOAT | 0.700–2 | Sampling temperature — higher is more creative, lower is more deterministic. |
| max_tokens | INT | 00–65536 | Maximum tokens in the response. 0 = provider default (no explicit limit). |
| rate_limit_ms | INT | 1000–5000 | Minimum pause between requests, in milliseconds. On a 429 the pack widens this by itself for a couple of minutes, honouring the provider's own Retry-After when it sends one. |
| max_image_side | INT | 1024128–4096 | Images are downscaled so their longest side does not exceed this value. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| config | FIL_PROVIDER_CONFIG | Provider configuration dict for FiL nodes. |
| model | STRING | Normalised model name string. |