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
| def is_link(obj): | |
| if not isinstance(obj, list): | |
| return False | |
| if len(obj) != 2: | |
| return False | |
| if not isinstance(obj[0], str): | |
| return False | |
| if not isinstance(obj[1], int) and not isinstance(obj[1], float): | |
| return False | |
| return True | |
| # The GraphBuilder is just a utility class that outputs graphs in the form expected by the ComfyUI back-end | |
| class GraphBuilder: | |
| _default_prefix_root = "" | |
| _default_prefix_call_index = 0 | |
| _default_prefix_graph_index = 0 | |
| def __init__(self, prefix = None): | |
| if prefix is None: | |
| self.prefix = GraphBuilder.alloc_prefix() | |
| else: | |
| self.prefix = prefix | |
| self.nodes = {} | |
| self.id_gen = 1 | |
| def set_default_prefix(cls, prefix_root, call_index, graph_index = 0): | |
| cls._default_prefix_root = prefix_root | |
| cls._default_prefix_call_index = call_index | |
| cls._default_prefix_graph_index = graph_index | |
| def alloc_prefix(cls, root=None, call_index=None, graph_index=None): | |
| if root is None: | |
| root = GraphBuilder._default_prefix_root | |
| if call_index is None: | |
| call_index = GraphBuilder._default_prefix_call_index | |
| if graph_index is None: | |
| graph_index = GraphBuilder._default_prefix_graph_index | |
| result = f"{root}.{call_index}.{graph_index}." | |
| GraphBuilder._default_prefix_graph_index += 1 | |
| return result | |
| def node(self, class_type, id=None, **kwargs): | |
| if id is None: | |
| id = str(self.id_gen) | |
| self.id_gen += 1 | |
| id = self.prefix + id | |
| if id in self.nodes: | |
| return self.nodes[id] | |
| node = Node(id, class_type, kwargs) | |
| self.nodes[id] = node | |
| return node | |
| def lookup_node(self, id): | |
| id = self.prefix + id | |
| return self.nodes.get(id) | |
| def finalize(self): | |
| output = {} | |
| for node_id, node in self.nodes.items(): | |
| output[node_id] = node.serialize() | |
| return output | |
| def replace_node_output(self, node_id, index, new_value): | |
| node_id = self.prefix + node_id | |
| to_remove = [] | |
| for node in self.nodes.values(): | |
| for key, value in node.inputs.items(): | |
| if is_link(value) and value[0] == node_id and value[1] == index: | |
| if new_value is None: | |
| to_remove.append((node, key)) | |
| else: | |
| node.inputs[key] = new_value | |
| for node, key in to_remove: | |
| del node.inputs[key] | |
| def remove_node(self, id): | |
| id = self.prefix + id | |
| del self.nodes[id] | |
| class Node: | |
| def __init__(self, id, class_type, inputs): | |
| self.id = id | |
| self.class_type = class_type | |
| self.inputs = inputs | |
| self.override_display_id = None | |
| def out(self, index): | |
| return [self.id, index] | |
| def set_input(self, key, value): | |
| if value is None: | |
| if key in self.inputs: | |
| del self.inputs[key] | |
| else: | |
| self.inputs[key] = value | |
| def get_input(self, key): | |
| return self.inputs.get(key) | |
| def set_override_display_id(self, override_display_id): | |
| self.override_display_id = override_display_id | |
| def serialize(self): | |
| serialized = { | |
| "class_type": self.class_type, | |
| "inputs": self.inputs | |
| } | |
| if self.override_display_id is not None: | |
| serialized["override_display_id"] = self.override_display_id | |
| return serialized | |
| def add_graph_prefix(graph, outputs, prefix): | |
| # Change the node IDs and any internal links | |
| new_graph = {} | |
| for node_id, node_info in graph.items(): | |
| # Make sure the added nodes have unique IDs | |
| new_node_id = prefix + node_id | |
| new_node = { "class_type": node_info["class_type"], "inputs": {} } | |
| for input_name, input_value in node_info.get("inputs", {}).items(): | |
| if is_link(input_value): | |
| new_node["inputs"][input_name] = [prefix + input_value[0], input_value[1]] | |
| else: | |
| new_node["inputs"][input_name] = input_value | |
| new_graph[new_node_id] = new_node | |
| # Change the node IDs in the outputs | |
| new_outputs = [] | |
| for n in range(len(outputs)): | |
| output = outputs[n] | |
| if is_link(output): | |
| new_outputs.append([prefix + output[0], output[1]]) | |
| else: | |
| new_outputs.append(output) | |
| return new_graph, tuple(new_outputs) | |
| class ExecutionBlocker: | |
| """ | |
| Return this from a node and any users will be blocked with the given error message. | |
| If the message is None, execution will be blocked silently instead. | |
| Generally, you should avoid using this functionality unless absolutely necessary. Whenever it's | |
| possible, a lazy input will be more efficient and have a better user experience. | |
| This functionality is useful in two cases: | |
| 1. You want to conditionally prevent an output node from executing. (Particularly a built-in node | |
| like SaveImage. For your own output nodes, I would recommend just adding a BOOL input and using | |
| lazy evaluation to let it conditionally disable itself.) | |
| 2. You have a node with multiple possible outputs, some of which are invalid and should not be used. | |
| (I would recommend not making nodes like this in the future -- instead, make multiple nodes with | |
| different outputs. Unfortunately, there are several popular existing nodes using this pattern.) | |
| """ | |
| def __init__(self, message): | |
| self.message = message | |