Instructions to use LuckyOda/comfyui-carbonara-bundle with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- llama-cpp-python
How to use LuckyOda/comfyui-carbonara-bundle with llama-cpp-python:
# !pip install llama-cpp-python from llama_cpp import Llama llm = Llama.from_pretrained( repo_id="LuckyOda/comfyui-carbonara-bundle", filename="models/text_encoders/qwen-4b-zimage-heretic-q8.gguf", )
llm.create_chat_completion( messages = "No input example has been defined for this model task." )
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use LuckyOda/comfyui-carbonara-bundle with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf LuckyOda/comfyui-carbonara-bundle # Run inference directly in the terminal: llama cli -hf LuckyOda/comfyui-carbonara-bundle
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf LuckyOda/comfyui-carbonara-bundle # Run inference directly in the terminal: llama cli -hf LuckyOda/comfyui-carbonara-bundle
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf LuckyOda/comfyui-carbonara-bundle # Run inference directly in the terminal: ./llama-cli -hf LuckyOda/comfyui-carbonara-bundle
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf LuckyOda/comfyui-carbonara-bundle # Run inference directly in the terminal: ./build/bin/llama-cli -hf LuckyOda/comfyui-carbonara-bundle
Use Docker
docker model run hf.co/LuckyOda/comfyui-carbonara-bundle
- LM Studio
- Jan
- Ollama
How to use LuckyOda/comfyui-carbonara-bundle with Ollama:
ollama run hf.co/LuckyOda/comfyui-carbonara-bundle
- Unsloth Studio
How to use LuckyOda/comfyui-carbonara-bundle with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for LuckyOda/comfyui-carbonara-bundle to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for LuckyOda/comfyui-carbonara-bundle to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for LuckyOda/comfyui-carbonara-bundle to start chatting
- Pi
How to use LuckyOda/comfyui-carbonara-bundle with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf LuckyOda/comfyui-carbonara-bundle
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "LuckyOda/comfyui-carbonara-bundle" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent new
How to use LuckyOda/comfyui-carbonara-bundle with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf LuckyOda/comfyui-carbonara-bundle
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default LuckyOda/comfyui-carbonara-bundle
Run Hermes
hermes
- Atomic Chat new
- OpenClaw new
How to use LuckyOda/comfyui-carbonara-bundle with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf LuckyOda/comfyui-carbonara-bundle
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "LuckyOda/comfyui-carbonara-bundle" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
- Docker Model Runner
How to use LuckyOda/comfyui-carbonara-bundle with Docker Model Runner:
docker model run hf.co/LuckyOda/comfyui-carbonara-bundle
- Lemonade
How to use LuckyOda/comfyui-carbonara-bundle with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull LuckyOda/comfyui-carbonara-bundle
Run and chat with the model
lemonade run user.comfyui-carbonara-bundle-{{QUANT_TAG}}List all available models
lemonade list
| # SPDX-License-Identifier: MIT | |
| # Copyright (C) 2025 ComfyUI-Multiband Contributors | |
| """NumPy file I/O for MULTIBAND_IMAGE.""" | |
| import os | |
| from typing import Dict, List, Any, Optional, Tuple | |
| import numpy as np | |
| def load_numpy(path: str, normalize: bool = True) -> Tuple[np.ndarray, Optional[List[str]], Dict[str, Any]]: | |
| """ | |
| Load a .npy file. | |
| Args: | |
| path: Path to .npy file | |
| normalize: Whether to normalize to [0, 1] range | |
| Returns: | |
| Tuple of (array, channel_names, metadata) | |
| channel_names and metadata are None for .npy files | |
| """ | |
| arr = np.load(path) | |
| if normalize and arr.max() > 1.0: | |
| arr = arr.astype(np.float32) / 255.0 if arr.max() <= 255 else arr.astype(np.float32) / arr.max() | |
| return arr, None, {} | |
| def save_numpy(path: str, arr: np.ndarray) -> str: | |
| """ | |
| Save array to .npy file. | |
| Args: | |
| path: Output path | |
| arr: Array to save | |
| Returns: | |
| Saved file path | |
| """ | |
| # Ensure .npy extension | |
| if not path.endswith('.npy'): | |
| path = path + '.npy' | |
| # Create directory if needed | |
| os.makedirs(os.path.dirname(path) or '.', exist_ok=True) | |
| np.save(path, arr) | |
| return path | |
| def load_npz(path: str, normalize: bool = True) -> Tuple[np.ndarray, Optional[List[str]], Dict[str, Any]]: | |
| """ | |
| Load a .npz file with optional channel_names and metadata. | |
| Expected keys: | |
| - 'samples': the main array (required) | |
| - 'channel_names': string array of channel names (optional) | |
| - Other keys become metadata | |
| Args: | |
| path: Path to .npz file | |
| normalize: Whether to normalize to [0, 1] range | |
| Returns: | |
| Tuple of (array, channel_names, metadata) | |
| """ | |
| data = np.load(path, allow_pickle=True) | |
| # Get samples array | |
| if 'samples' in data: | |
| arr = data['samples'] | |
| elif 'arr_0' in data: | |
| # Fallback for simple npz files | |
| arr = data['arr_0'] | |
| else: | |
| # Try first key | |
| keys = list(data.keys()) | |
| if not keys: | |
| raise ValueError(f"Empty npz file: {path}") | |
| arr = data[keys[0]] | |
| if normalize and arr.max() > 1.0: | |
| arr = arr.astype(np.float32) / 255.0 if arr.max() <= 255 else arr.astype(np.float32) / arr.max() | |
| # Get channel names | |
| channel_names = None | |
| if 'channel_names' in data: | |
| cn = data['channel_names'] | |
| if isinstance(cn, np.ndarray): | |
| channel_names = cn.tolist() | |
| else: | |
| channel_names = list(cn) | |
| # Get metadata (all other keys) | |
| metadata = {} | |
| exclude_keys = {'samples', 'arr_0', 'channel_names'} | |
| for key in data.keys(): | |
| if key not in exclude_keys: | |
| val = data[key] | |
| # Handle numpy arrays that might contain pickled dicts | |
| if isinstance(val, np.ndarray) and val.ndim == 0: | |
| val = val.item() | |
| metadata[key] = val | |
| return arr, channel_names, metadata | |
| def save_npz( | |
| path: str, | |
| arr: np.ndarray, | |
| channel_names: Optional[List[str]] = None, | |
| metadata: Optional[Dict[str, Any]] = None, | |
| compressed: bool = True | |
| ) -> str: | |
| """ | |
| Save array to .npz file with optional channel_names and metadata. | |
| Args: | |
| path: Output path | |
| arr: Array to save | |
| channel_names: Optional list of channel names | |
| metadata: Optional metadata dict | |
| compressed: Whether to use compression | |
| Returns: | |
| Saved file path | |
| """ | |
| # Ensure .npz extension | |
| if not path.endswith('.npz'): | |
| path = path + '.npz' | |
| # Create directory if needed | |
| os.makedirs(os.path.dirname(path) or '.', exist_ok=True) | |
| # Build save dict | |
| save_dict = {'samples': arr} | |
| if channel_names is not None: | |
| save_dict['channel_names'] = np.array(channel_names, dtype=object) | |
| if metadata: | |
| for key, val in metadata.items(): | |
| save_dict[key] = val | |
| # Save | |
| if compressed: | |
| np.savez_compressed(path, **save_dict) | |
| else: | |
| np.savez(path, **save_dict) | |
| return path | |