Instructions to use saik0s/comfy_backup with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- llama-cpp-python
How to use saik0s/comfy_backup with llama-cpp-python:
# !pip install llama-cpp-python from llama_cpp import Llama llm = Llama.from_pretrained( repo_id="saik0s/comfy_backup", filename="models/text_encoders/Qwen3VL-8B-Uncensored-HauhauCS-Aggressive-Q8_0.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 saik0s/comfy_backup 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 saik0s/comfy_backup:Q8_0 # Run inference directly in the terminal: llama cli -hf saik0s/comfy_backup:Q8_0
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf saik0s/comfy_backup:Q8_0 # Run inference directly in the terminal: llama cli -hf saik0s/comfy_backup:Q8_0
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 saik0s/comfy_backup:Q8_0 # Run inference directly in the terminal: ./llama-cli -hf saik0s/comfy_backup:Q8_0
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 saik0s/comfy_backup:Q8_0 # Run inference directly in the terminal: ./build/bin/llama-cli -hf saik0s/comfy_backup:Q8_0
Use Docker
docker model run hf.co/saik0s/comfy_backup:Q8_0
- LM Studio
- Jan
- Ollama
How to use saik0s/comfy_backup with Ollama:
ollama run hf.co/saik0s/comfy_backup:Q8_0
- Unsloth Studio
How to use saik0s/comfy_backup 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 saik0s/comfy_backup 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 saik0s/comfy_backup to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for saik0s/comfy_backup to start chatting
- Pi
How to use saik0s/comfy_backup with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf saik0s/comfy_backup:Q8_0
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": "saik0s/comfy_backup:Q8_0" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent new
How to use saik0s/comfy_backup with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf saik0s/comfy_backup:Q8_0
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 saik0s/comfy_backup:Q8_0
Run Hermes
hermes
- Atomic Chat new
- OpenClaw new
How to use saik0s/comfy_backup with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf saik0s/comfy_backup:Q8_0
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 "saik0s/comfy_backup:Q8_0" \ --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 saik0s/comfy_backup with Docker Model Runner:
docker model run hf.co/saik0s/comfy_backup:Q8_0
- Lemonade
How to use saik0s/comfy_backup with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull saik0s/comfy_backup:Q8_0
Run and chat with the model
lemonade run user.comfy_backup-Q8_0
List all available models
lemonade list
| import type { | |
| LLink, | |
| LGraph, | |
| LGraphCanvas, | |
| LGraphNode as TLGraphNode, | |
| IContextMenuOptions, | |
| ContextMenu, | |
| IContextMenuValue, | |
| Size, | |
| ISerialisedNode, | |
| Point, | |
| } from "@comfyorg/frontend"; | |
| import {app} from "scripts/app.js"; | |
| import {addConnectionLayoutSupport} from "./utils.js"; | |
| import {wait} from "rgthree/common/shared_utils.js"; | |
| import {ComfyWidgets} from "scripts/widgets.js"; | |
| import {BaseCollectorNode} from "./base_node_collector.js"; | |
| import {NodeTypesString} from "./constants.js"; | |
| /** | |
| * The Collector Node. Takes any number of inputs as connections for nodes and collects them into | |
| * one outputs. The next node will decide what to do with them. | |
| * | |
| * Currently only works with the Fast Muter, Fast Bypasser, and Fast Actions Button. | |
| */ | |
| class CollectorNode extends BaseCollectorNode { | |
| static override type = NodeTypesString.NODE_COLLECTOR; | |
| static override title = NodeTypesString.NODE_COLLECTOR; | |
| override comfyClass = NodeTypesString.NODE_COLLECTOR; | |
| constructor(title = CollectorNode.title) { | |
| super(title); | |
| this.onConstructed(); | |
| } | |
| override onConstructed(): boolean { | |
| this.addOutput("Output", "*"); | |
| return super.onConstructed(); | |
| } | |
| } | |
| /** Legacy "Combiner" */ | |
| class CombinerNode extends CollectorNode { | |
| static legacyType = "Node Combiner (rgthree)"; | |
| static override title = "‼️ Node Combiner [DEPRECATED]"; | |
| constructor(title = CombinerNode.title) { | |
| super(title); | |
| const note = ComfyWidgets["STRING"]( | |
| this, | |
| "last_seed", | |
| ["STRING", {multiline: true}], | |
| app, | |
| ).widget; | |
| note.inputEl!.value = | |
| 'The Node Combiner has been renamed to Node Collector. You can right-click and select "Update to Node Collector" to attempt to automatically update.'; | |
| note.inputEl!.readOnly = true; | |
| note.inputEl!.style.backgroundColor = "#332222"; | |
| note.inputEl!.style.fontWeight = "bold"; | |
| note.inputEl!.style.fontStyle = "italic"; | |
| note.inputEl!.style.opacity = "0.8"; | |
| this.getExtraMenuOptions = ( | |
| canvas: LGraphCanvas, | |
| options: (IContextMenuValue<unknown> | null)[], | |
| ): (IContextMenuValue<unknown> | null)[] => { | |
| options.splice(options.length - 1, 0, { | |
| content: "‼️ Update to Node Collector", | |
| callback: ( | |
| _value: IContextMenuValue, | |
| _options: IContextMenuOptions, | |
| _event: MouseEvent, | |
| _parentMenu: ContextMenu | undefined, | |
| _node: TLGraphNode, | |
| ) => { | |
| updateCombinerToCollector(this); | |
| }, | |
| }); | |
| return []; | |
| }; | |
| } | |
| override configure(info: ISerialisedNode) { | |
| super.configure(info); | |
| if (this.title != CombinerNode.title && !this.title.startsWith("‼️")) { | |
| this.title = "‼️ " + this.title; | |
| } | |
| } | |
| } | |
| /** | |
| * Updates a Node Combiner to a Node Collector. | |
| */ | |
| async function updateCombinerToCollector(node: TLGraphNode) { | |
| if (node.type === CombinerNode.legacyType) { | |
| // Create a new CollectorNode. | |
| const newNode = new CollectorNode(); | |
| if (node.title != CombinerNode.title) { | |
| newNode.title = node.title.replace("‼️ ", ""); | |
| } | |
| // Port the position, size, and properties from the old node. | |
| newNode.pos = [...node.pos] as Point; | |
| newNode.size = [...node.size] as Size; | |
| newNode.properties = {...node.properties}; | |
| // We now collect the links data, inputs and outputs, of the old node since these will be | |
| // lost when we remove it. | |
| const links: any[] = []; | |
| const graph = (node.graph || app.graph); | |
| for (const [index, output] of node.outputs.entries()) { | |
| for (const linkId of output.links || []) { | |
| const link: LLink = graph.links[linkId]!; | |
| if (!link) continue; | |
| const targetNode = graph.getNodeById(link.target_id); | |
| links.push({node: newNode, slot: index, targetNode, targetSlot: link.target_slot}); | |
| } | |
| } | |
| for (const [index, input] of node.inputs.entries()) { | |
| const linkId = input.link; | |
| if (linkId) { | |
| const link: LLink = graph.links[linkId]!; | |
| const originNode = graph.getNodeById(link.origin_id); | |
| links.push({ | |
| node: originNode, | |
| slot: link.origin_slot, | |
| targetNode: newNode, | |
| targetSlot: index, | |
| }); | |
| } | |
| } | |
| // Add the new node, remove the old node. | |
| graph.add(newNode); | |
| await wait(); | |
| // Now go through and connect the other nodes up as they were. | |
| for (const link of links) { | |
| link.node.connect(link.slot, link.targetNode, link.targetSlot); | |
| } | |
| await wait(); | |
| graph.remove(node); | |
| } | |
| } | |
| app.registerExtension({ | |
| name: "rgthree.NodeCollector", | |
| registerCustomNodes() { | |
| addConnectionLayoutSupport(CollectorNode, app, [ | |
| ["Left", "Right"], | |
| ["Right", "Left"], | |
| ]); | |
| LiteGraph.registerNodeType(CollectorNode.title, CollectorNode); | |
| CollectorNode.category = CollectorNode._category; | |
| }, | |
| }); | |
| app.registerExtension({ | |
| name: "rgthree.NodeCombiner", | |
| registerCustomNodes() { | |
| addConnectionLayoutSupport(CombinerNode, app, [ | |
| ["Left", "Right"], | |
| ["Right", "Left"], | |
| ]); | |
| LiteGraph.registerNodeType(CombinerNode.legacyType, CombinerNode); | |
| CombinerNode.category = CombinerNode._category; | |
| }, | |
| }); | |