ComfyUI Extension: ComfyUI-GGUF-FX
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.
ComfyUI nodes for running GGUF quantized Qwen2.5-VL models using llama.cpp
Looking for a different extension?
Custom Nodes (14)
- 🔧 GGUF Model Manager
- 🖥️ Local Text Model Loader
- 🤖 Multi-Image Analysis
- 🤖 Multi-Image Comparison
- 🤖 Nexa Model Selector
- 🤖 Nexa Service Status
- 🤖 Nexa Text Generation
- 🌐 Remote Text Model Selector
- 🤖 System Prompt Config
- 🤖 Text Generation
- 🤖 Vision Language Generation
- 🤖 Vision Language (Transformers)
- 🤖 Vision Model Loader
- 🤖 Vision Model Loader (Transformers)
README
ComfyUI-GGUF-FX
Complete GGUF model support for ComfyUI with local and Nexa SDK inference modes.
🌟 Features
Two Inference Modes
- Text Generation (Local) - Direct GGUF model loading using llama-cpp-python
- Nexa SDK - Managed models via Nexa SDK service
Key Features
- ✅ Simple configuration - Minimal parameters, maximum functionality
- ✅ Auto model detection - Nexa SDK automatically lists downloaded models
- ✅ Thinking mode support (DeepSeek-R1, Qwen3-Thinking)
- ✅ Stop sequences - Prevent over-generation
- ✅ Paragraph merging - Clean single-paragraph output
- ✅ Detailed logging - Debug-friendly console output
- ✅ Device optimization (CUDA, MPS, CPU)
📦 Installation
1. Install ComfyUI Custom Node
cd ComfyUI/custom_nodes
git clone https://github.com/weekii/ComfyUI-GGUF-FX.git
cd ComfyUI-GGUF-FX
pip install -r requirements.txt
2. For Nexa SDK Mode (Optional)
# Install Nexa SDK
pip install nexaai
# Start Nexa service
nexa serve
The service will be available at http://127.0.0.1:11434
🚀 Quick Start
Using Text Generation (Local GGUF)
Recommended for local GGUF files
[Text Model Loader]
├─ model: Select your GGUF file
└─ device: cuda/cpu/mps
↓
[Text Generation]
├─ max_tokens: 256 ← Recommended for single paragraph
├─ temperature: 0.7
├─ top_p: 0.8
├─ top_k: 40
├─ repetition_penalty: 1.1
├─ enable_thinking: False
└─ prompt: "Your prompt here"
↓
Output: context, thinking
Features:
- ✅ Direct file access
- ✅ No service required
- ✅ Fast and simple
- ✅ Stop sequences prevent over-generation
- ✅ Automatic paragraph merging
Using Nexa SDK Mode
Recommended for Nexa SDK ecosystem
Step 1: Download Model
# Download a model using Nexa CLI
nexa pull mradermacher/Huihui-Qwen3-4B-Instruct-2507-abliterated-GGUF:Q8_0 --model-type llm
# Check downloaded models
nexa list
Step 2: Use in ComfyUI
[Nexa Model Selector]
├─ base_url: http://127.0.0.1:11434
├─ refresh_models: ☐
└─ system_prompt: (optional)
↓
[Nexa SDK Text Generation]
├─ preset_model: Select from dropdown (auto-populated)
├─ max_tokens: 256
├─ temperature: 0.7
└─ prompt: "Your prompt here"
↓
Output: context, thinking
Features:
- ✅ Centralized model management
- ✅ Auto-populated model list
- ✅ Supports
nexa pullworkflow
📋 Available Nodes
Text Generation Nodes (Local GGUF)
🔷 Text Model Loader
Load GGUF models from /workspace/ComfyUI/models/LLM/GGUF/
Parameters:
model: Select from available GGUF filesdevice: cuda/cpu/mpsn_ctx: Context window (default: 8192)n_gpu_layers: GPU layers (-1 for all)
Output:
model: Model configuration
🔷 Text Generation
Generate text with loaded GGUF model
Parameters:
model: From Text Model Loadermax_tokens: Maximum tokens (1-8192, recommended: 256)temperature: Temperature (0.0-2.0)top_p: Top-p sampling (0.0-1.0)top_k: Top-k sampling (0-100)repetition_penalty: Repetition penalty (1.0-2.0)enable_thinking: Enable thinking modeprompt: Input prompt (at bottom for easy editing)
Outputs:
context: Generated textthinking: Thinking process (if enabled)
Features:
- ✅ Stop sequences:
["User:", "System:", "\n\n\n", "\n\n##", "\n\nNote:", "\n\nThis "] - ✅ Automatic paragraph merging for single-paragraph prompts
- ✅ Detailed console logging
Nexa SDK Nodes
🔷 Nexa Model Selector
Configure Nexa SDK service
Parameters:
base_url: Service URL (default:http://127.0.0.1:11434)refresh_models: Refresh model listsystem_prompt: System prompt (optional)
Output:
model_config: Configuration for Text Generation
🔷 Nexa SDK Text Generation
Generate text using Nexa SDK
Parameters:
model_config: From Model Selectorpreset_model: Select from dropdown (auto-populated fromnexa list)custom_model: Custom model ID (format:author/model:quant)auto_download: Auto-download if missingmax_tokens: Maximum tokens (recommended: 256)temperature,top_p,top_k,repetition_penalty: Generation parametersenable_thinking: Enable thinking modeprompt: Input prompt (at bottom)
Outputs:
context: Generated textthinking: Thinking process (if enabled)
Preset Models:
DavidAU/Qwen3-8B-64k-Josiefied-Uncensored-HORROR-Max-GGUF:Q6_Kmradermacher/Huihui-Qwen3-4B-Instruct-2507-abliterated-GGUF:Q8_0prithivMLmods/Qwen3-4B-2507-abliterated-GGUF:Q8_0
🔷 Nexa Service Status
Check Nexa SDK service status
Parameters:
base_url: Service URLrefresh: Refresh model list
Output:
status: Service status and model list
🎯 Best Practices
For Single-Paragraph Output
System Prompt:
You are an expert prompt generator. Output ONLY in English.
**CRITICAL: Output EXACTLY ONE continuous paragraph. Maximum 400 words.**
Parameters:
max_tokens: 256 ← Key setting!
temperature: 0.7
top_p: 0.8
top_k: 20
Why max_tokens=256?
- ✅ Prevents over-generation
- ✅ Model completes task without extra commentary
- ✅ Reduces from ~2700 chars (11 paragraphs) to ~1300 chars (1 paragraph)
For Multi-Turn Conversations
Include history directly in prompt:
User: Hello
Assistant: Hi! How can I help?
User: Tell me a joke
No need for separate conversation history parameter.
💭 Thinking Mode
Automatically extracts thinking process from models like DeepSeek-R1 and Qwen3-Thinking.
Supported Tags:
<think>...</think>(DeepSeek-R1, Qwen3)<thinking>...</thinking>[THINKING]...[/THINKING]
Usage:
[Text Generation]
├─ enable_thinking: True
└─ prompt: "Explain your reasoning"
↓
Outputs:
├─ context: Final answer (thinking tags removed)
└─ thinking: Extracted thinking process
Disable Thinking:
- Set
enable_thinking: False - Or add
no_thinkto system prompt
📊 Mode Comparison
| Feature | Text Generation (Local) | Nexa SDK |
|---------|------------------------|----------|
| Setup | Copy GGUF file | nexa pull |
| Service | Not required | Requires nexa serve |
| Model Management | Manual | CLI (nexa list, nexa pull) |
| Use Case | Local files, production | Nexa ecosystem, shared models |
| Speed | Fast | Fast (via service) |
| Flexibility | Any GGUF file | Only nexa pull models |
Recommendation:
- Use Text Generation for local GGUF files
- Use Nexa SDK if you're already using Nexa ecosystem
🐛 Troubleshooting
Output Too Long (Multiple Paragraphs)
Problem: Model generates 11 paragraphs instead of 1
Solution:
- Reduce max_tokens from 512 to 256
- Strengthen system prompt: Add "EXACTLY ONE paragraph"
- Stop sequences are already configured
Nexa Service Not Available
Problem: ❌ Nexa SDK service is not available
Solution:
- Start service:
nexa serve - Check:
curl http://127.0.0.1:11434/v1/models - Verify URL in node
Model Not in Dropdown
Problem: Downloaded model doesn't appear in Nexa SDK dropdown
Solution:
- Check:
nexa list - Click "refresh_models" in Nexa Model Selector
- Restart ComfyUI
0B Entries in nexa list
Problem: nexa list shows 0B entries
Solution:
# Clean up invalid entries
rm -rf ~/.cache/nexa.ai/nexa_sdk/models/local
rm -rf ~/.cache/nexa.ai/nexa_sdk/models/workspace
find ~/.cache/nexa.ai/nexa_sdk/models -name "*.lock" -delete
# Verify
nexa list
📁 Directory Structure
ComfyUI-GGUF-FX/
├── README.md # This file
├── NEXA_SDK_GUIDE.md # Detailed Nexa SDK guide
├── requirements.txt # Dependencies
├── __init__.py # Node registration
├── config/
│ └── paths.py # Path configuration
├── core/
│ ├── inference_engine.py # GGUF inference engine
│ ├── model_loader.py # Model loader
│ └── inference/
│ ├── nexa_engine.py # Nexa SDK engine
│ └── transformers_engine.py # Transformers engine
├── nodes/
│ ├── text_node.py # Text Generation nodes
│ ├── nexa_text_node.py # Nexa SDK nodes
│ ├── vision_node.py # Vision nodes
│ └── system_prompt_node.py # System prompt config
└── utils/
├── device_optimizer.py # Device optimization
└── system_prompts.py # System prompt presets
🔄 Recent Updates
v2.2 (2025-10-29)
- ✅ Simplified Nexa Model Selector - Removed unused
models_dirandmodel_source - ✅ Removed unused outputs - Cleaner node interface
- ✅ Moved prompt to bottom - Better UX for long prompts
- ✅ Removed conversation_history - Use prompt directly
- ✅ Stop sequences - Prevent over-generation
- ✅ Paragraph merging - Clean single-paragraph output
- ✅ Dynamic model list - Auto-populated from Nexa SDK API
- ✅ Detailed logging - Debug-friendly console output
v2.1
- ✅ Nexa SDK integration
- ✅ Preset model list
- ✅ Thinking mode support
v2.0
- ✅ GGUF mode with llama-cpp-python
- ✅ ComfyUI /models/LLM integration
📝 Requirements
llama-cpp-python>=0.2.0
transformers>=4.30.0
torch>=2.0.0
Pillow>=9.0.0
requests>=2.25.0
nexaai # Optional, for Nexa SDK mode
🤝 Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
📄 License
MIT License - see LICENSE file for details
🔗 Links
- GitHub: https://github.com/weekii/ComfyUI-GGUF-FX
- Nexa SDK: https://github.com/NexaAI/nexa-sdk
- Nexa SDK Guide: NEXA_SDK_GUIDE.md
- ComfyUI: https://github.com/comfyanonymous/ComfyUI
👤 Author
weekii weekii2024@gmail.com
🙏 Acknowledgments
- ComfyUI team for the amazing framework
- Nexa AI for the SDK
- HuggingFace for model hosting
- llama.cpp team for GGUF support
Status: ✅ Production Ready
Version: 2.2
Last Updated: 2025-10-29
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.