LLM Model (API)
Point ComfyUI at your LLM without a single download
- llm_model
LLM Model (API) is the node that defines where your LLM lives, not the model itself. You pick a named entry from a dropdown, out comes an llm_model connection, and the rest of the YALLM pack - the LLM Chat node, mostly - uses that to call a chat completion. It's the anchor of the pack: everything else in ComfyUI-YALLM-node hangs off the connection this node produces.
Let me be upfront about what this pack is, because the README is refreshingly honest about it: "Yet Another LLM Node," written by Allan Saddi (asaddi) as "mainly an exercise in creating ComfyUI nodes." It doesn't load GGUF weights, it doesn't touch your VRAM, and it won't run a single token itself. It only speaks to OpenAI-compatible HTTP APIs. That's not a limitation you have to fight, though - llama.cpp, Ollama, and LM Studio all expose that same /v1 API, so a local model is just another endpoint to point at. Ollama even runs an OpenAI-compatible server by default.
How it works
The dropdown choices don't come from the node. They come from models.yaml in the pack's directory, and each entry is a full connection profile:
models:
- name: "[LOCAL] llama.cpp"
base_url: http://localhost:8080/v1
api_key: none
model: whatever
name is what shows in the dropdown; base_url is the endpoint; model is the model id sent to the API; api_key can be none (no auth, for local) or an env var via the os.environ/ prefix, like api_key: os.environ/OPENROUTER_API_KEY. Because profiles live in an external file, your keys never end up in exported workflow JSON or PNG metadata - that's the pack's whole security argument, and it's a good one. The node checks the file's mtime, so editing the YAML refreshes the dropdown without a restart.
One detail the code reveals that the README glosses over: if models.yaml doesn't exist, the node silently reads models.yaml.example instead. That's why a fresh install "just works" and shows the three [LOCAL] entries - you've been running on the example file this whole time. Copy it to models.yaml the moment you want anything else.
The inputs and output that matter
There's exactly one input - model, the dropdown of names from your YAML - and one output, llm_model, which wires into the pack's LLM Chat node. The example file ships placeholders (model: whatever for llama.cpp, changeme for the others) so a brand-new install pointed at a live llama.cpp server will error with "model not found" until you put a real model id in. First thing after installing: edit that file.
Installing it
ComfyUI Manager, searching for the pack title "ComfyUI-YALLM-node", is the easy path. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/asaddi/ComfyUI-YALLM-node
cd ComfyUI-YALLM-node
cp models.yaml.example models.yaml
pip install -r requirements.txt
That requirements.txt is just openai and pydantic - nothing heavy, nothing to download, because the model itself runs in your local server. Restart ComfyUI and the YALLM category appears.
Where people get burned
The classic: you install, update, restart, and the dropdown still shows only the three [LOCAL] entries. There is no hidden remote-provider list - whatever isn't in models.yaml (or providers.yaml, for the sibling node) simply doesn't exist as a choice. You have to add OpenRouter, Anthropic, whatever, by hand, and the README only ships them as commented-out examples. And since custom nodes are unsandboxed Python (the whole supply-chain lesson of the LLMVISION incident), it's worth a quick read of that repo before you clone - it's small, clean, and honest, but that habit costs you nothing.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | 3 options: [LOCAL] llama.cpp, [LOCAL] LM Studio, [LOCAL] Ollama |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| llm_model | LLMMODEL | — |