๐ง VRGDG General GGUF ๐ง
A local LLM inside ComfyUI that writes your scene prompts
- image1
- image2
- image3
- image4
- image5
- image6
- image7
- image8
- image9
- image10
- image11
- image12
- image13
- image14
- image15
- image16
- image17
- image18
- image19
- image20
- image21
- image22
- image23
- image24
- text
- used_model
- status
The VRGameDevGirl music video workflow doesn't ask you to write 40 scene prompts by hand - a local LLM writes them, and VRGDG General GGUF is that LLM. It's a llama.cpp-based GGUF text-generation node with built-in task presets so the model knows whether it's writing an image prompt, a video prompt, or a training caption. No API, no key, no cloud. If it can fit in your VRAM, it runs entirely on your machine.
How it works. Pick a model_preset - it ships with unsloth/gemma-4-26B-A4B-it-GGUF and a "supergemma" community repack as options, or set custom_model_id to point at any local .gguf file, folder of GGUFs, or Hugging Face repo id. gguf_filename disambiguates when a repo has multiple quant files - and you'll want to use it, because GGUF repos are quant ladders (Q4 through Q8 and friends). The node then runs the model through llama.cpp with a task_preset telling it what kind of output to produce: text_to_image, text_to_video, image_to_video, image_edit, or captioner_training - each one carries its own instruction block. custom lets you write your own instructions from scratch. user_input is where your actual creative direction goes.
The vision side. Set image_count to a number up to 24 and that many optional image inputs appear; for vision-capable GGUF models you'll also want mmproj_filename - the multimodal projector - or the model can't actually see the images. That's how the workflow's "here's my reference character, write scenes that keep her consistent" trick works: the LLM looks at your frames and writes prompts that stay on-model.
The knobs that matter. For a beginner, the defaults are fine: temperature 0.6, top_p 0.95, max_new_tokens 800. n_ctx (8192 default) is the context window. n_gpu_layers defaults to 99, which just means "offload everything"; on a 12GB card you may want to drop it and let llama.cpp split across CPU and GPU. download_if_missing will fetch a missing GGUF into ComfyUI/models/LLM/GGUF - handy, but a 15GB+ download without warning isn't fun, so keep an eye on it. unload_after_run frees the model from cache when you're done - worth turning on if this node shares VRAM with your video generation.
Outputs. text is the generated prompt - the one you wire into your sampler's positive prompt. used_model tells you which file actually loaded (the lifesaver when a preset points at something you don't have), and status reports what happened.
Installing. The pack:
cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl
Then install requirements - this node needs llama-cpp-python, which is the one dependency that actually fights back on Windows portable installs. If pip install llama-cpp-python refuses to build, grab a prebuilt wheel for your Python version rather than forcing a compile. On the author's own workflow requirements, you also want FFmpeg in PATH for the surrounding video steps.
Where people get burned. The "gemma-4-26B-A4B" preset is an active-parameter model - 26B total, ~4B active - so it runs far smaller than its name implies, but the A4B naming still confuses people into thinking it's a toy. It's not. Second: if you swap models, change both the repo preset and gguf_filename; leaving a stale filename is the classic "loaded a 40GB repo file I never wanted" move. And if the node outputs gibberish or refuses images, check mmproj_filename first - a vision model without its projector is a model that can't see.
Inputs (44)
| Name | Type | Default | Description |
|---|---|---|---|
| model_preset | COMBO | unsloth/gemma-4-26B-A4B-it-GGUF | Choose a GGUF repo preset. Use custom_model_id for a local .gguf file, folder, or another Hugging Face repo id. |
| custom_model_id | STRING | Optional override. Can be a local .gguf file path, a local folder containing GGUF files, or a Hugging Face repo id. | |
| gguf_filename | STRING | Optional GGUF filename to use inside the repo/folder. Strongly recommended when a repo has multiple quant files. | |
| mmproj_filename | STRING | Optional multimodal projector filename (.gguf). Required for image-aware GGUF models like Gemma 4 vision GGUFs. | |
| task_preset | COMBO | text_to_image | Select a task preset with built-in instructions. |
| custom_instructions | STRING | Used only when task_preset is custom. Enter your own full instruction block. | |
| user_input | STRING | Your task details and creative direction for the selected preset. | |
| trigger_word | STRING | Optional LoRA/training trigger token. Used only by Captioner preset. | |
| image_count | INT | 00โ24 | How many optional image inputs to show on the node. |
| download_if_missing | BOOLEAN | false | If enabled, a missing GGUF file can be downloaded to ComfyUI/models/LLM/GGUF. |
| advanced | BOOLEAN | false | Show advanced GGUF runtime controls such as context, GPU layers, threads, sampler, and token limits. |
| unload_after_run | BOOLEAN | false | If enabled, unload the GGUF model from cache after this run to free RAM/VRAM. |
| hf_token | STRING | Optional Hugging Face access token for private or gated repos. | |
| n_ctx | INT | 8192512โ131072 | GGUF context window. |
| n_gpu_layers | INT | 99-1โ200 | How many layers to offload to GPU. Use -1 to offload all supported layers. |
| n_threads | INT | 81โ128 | CPU threads used by llama.cpp. |
| chat_format | STRING | Optional llama.cpp chat format override. Leave blank to use the model default. | |
| temperature | FLOAT | 0.600โ2 | Higher = more creative variation, lower = more deterministic output. |
| top_p | FLOAT | 0.950โ1 | Nucleus sampling cutoff. |
| max_new_tokens | INT | 80032โ32000 | Maximum number of output tokens. |
| image1opt | IMAGE | Optional reference image input. | |
| image2opt | IMAGE | Optional reference image input. | |
| image3opt | IMAGE | Optional reference image input. | |
| image4opt | IMAGE | Optional reference image input. | |
| image5opt | IMAGE | Optional reference image input. | |
| image6opt | IMAGE | Optional reference image input. | |
| image7opt | IMAGE | Optional reference image input. | |
| image8opt | IMAGE | Optional reference image input. | |
| image9opt | IMAGE | Optional reference image input. | |
| image10opt | IMAGE | Optional reference image input. | |
| image11opt | IMAGE | Optional reference image input. | |
| image12opt | IMAGE | Optional reference image input. | |
| image13opt | IMAGE | Optional reference image input. | |
| image14opt | IMAGE | Optional reference image input. | |
| image15opt | IMAGE | Optional reference image input. | |
| image16opt | IMAGE | Optional reference image input. | |
| image17opt | IMAGE | Optional reference image input. | |
| image18opt | IMAGE | Optional reference image input. | |
| image19opt | IMAGE | Optional reference image input. | |
| image20opt | IMAGE | Optional reference image input. | |
| image21opt | IMAGE | Optional reference image input. | |
| image22opt | IMAGE | Optional reference image input. | |
| image23opt | IMAGE | Optional reference image input. | |
| image24opt | IMAGE | Optional reference image input. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| text | STRING | โ |
| used_model | STRING | โ |
| status | STRING | โ |