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="ComfyUI/models/text_encoders/gemma-3-12b-it-q2_k.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:Q4_K_S # Run inference directly in the terminal: llama cli -hf saik0s/comfy_backup:Q4_K_S
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf saik0s/comfy_backup:Q4_K_S # Run inference directly in the terminal: llama cli -hf saik0s/comfy_backup:Q4_K_S
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:Q4_K_S # Run inference directly in the terminal: ./llama-cli -hf saik0s/comfy_backup:Q4_K_S
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:Q4_K_S # Run inference directly in the terminal: ./build/bin/llama-cli -hf saik0s/comfy_backup:Q4_K_S
Use Docker
docker model run hf.co/saik0s/comfy_backup:Q4_K_S
- LM Studio
- Jan
- Ollama
How to use saik0s/comfy_backup with Ollama:
ollama run hf.co/saik0s/comfy_backup:Q4_K_S
- 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:Q4_K_S
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:Q4_K_S" } ] } } }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:Q4_K_S
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:Q4_K_S
Run Hermes
hermes
- Atomic Chat new
- Docker Model Runner
How to use saik0s/comfy_backup with Docker Model Runner:
docker model run hf.co/saik0s/comfy_backup:Q4_K_S
- Lemonade
How to use saik0s/comfy_backup with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull saik0s/comfy_backup:Q4_K_S
Run and chat with the model
lemonade run user.comfy_backup-Q4_K_S
List all available models
lemonade list
| """ | |
| Tests for public ComfyAPI and ComfyAPISync functions. | |
| These tests verify that the public API methods work correctly in both sync and async contexts, | |
| ensuring that the sync wrapper generation (via get_type_hints() in async_to_sync.py) correctly | |
| handles string annotations from 'from __future__ import annotations'. | |
| """ | |
| import pytest | |
| import time | |
| import subprocess | |
| import torch | |
| from pytest import fixture | |
| from comfy_execution.graph_utils import GraphBuilder | |
| from tests.execution.test_execution import ComfyClient | |
| class TestPublicAPI: | |
| """Test suite for public ComfyAPI and ComfyAPISync methods.""" | |
| def _server(self, args_pytest): | |
| """Start ComfyUI server for testing.""" | |
| pargs = [ | |
| 'python', 'main.py', | |
| '--output-directory', args_pytest["output_dir"], | |
| '--listen', args_pytest["listen"], | |
| '--port', str(args_pytest["port"]), | |
| '--extra-model-paths-config', 'tests/execution/extra_model_paths.yaml', | |
| '--cpu', | |
| ] | |
| p = subprocess.Popen(pargs) | |
| yield | |
| p.kill() | |
| torch.cuda.empty_cache() | |
| def shared_client(self, args_pytest, _server): | |
| """Create shared client with connection retry.""" | |
| client = ComfyClient() | |
| n_tries = 5 | |
| for i in range(n_tries): | |
| time.sleep(4) | |
| try: | |
| client.connect(listen=args_pytest["listen"], port=args_pytest["port"]) | |
| break | |
| except ConnectionRefusedError: | |
| if i == n_tries - 1: | |
| raise | |
| yield client | |
| del client | |
| torch.cuda.empty_cache() | |
| def client(self, shared_client, request): | |
| """Set test name for each test.""" | |
| shared_client.set_test_name(f"public_api[{request.node.name}]") | |
| yield shared_client | |
| def builder(self, request): | |
| """Create GraphBuilder for each test.""" | |
| yield GraphBuilder(prefix=request.node.name) | |
| def test_sync_progress_update_executes(self, client: ComfyClient, builder: GraphBuilder): | |
| """Test that TestSyncProgressUpdate executes without errors. | |
| This test validates that api_sync.execution.set_progress() works correctly, | |
| which is the primary code path fixed by adding get_type_hints() to async_to_sync.py. | |
| """ | |
| g = builder | |
| image = g.node("StubImage", content="BLACK", height=256, width=256, batch_size=1) | |
| # Use TestSyncProgressUpdate with short sleep | |
| progress_node = g.node("TestSyncProgressUpdate", | |
| value=image.out(0), | |
| sleep_seconds=0.5) | |
| output = g.node("SaveImage", images=progress_node.out(0)) | |
| # Execute workflow | |
| result = client.run(g) | |
| # Verify execution | |
| assert result.did_run(progress_node), "Progress node should have executed" | |
| assert result.did_run(output), "Output node should have executed" | |
| # Verify output | |
| images = result.get_images(output) | |
| assert len(images) == 1, "Should have produced 1 image" | |
| def test_async_progress_update_executes(self, client: ComfyClient, builder: GraphBuilder): | |
| """Test that TestAsyncProgressUpdate executes without errors. | |
| This test validates that await api.execution.set_progress() works correctly | |
| in async contexts. | |
| """ | |
| g = builder | |
| image = g.node("StubImage", content="WHITE", height=256, width=256, batch_size=1) | |
| # Use TestAsyncProgressUpdate with short sleep | |
| progress_node = g.node("TestAsyncProgressUpdate", | |
| value=image.out(0), | |
| sleep_seconds=0.5) | |
| output = g.node("SaveImage", images=progress_node.out(0)) | |
| # Execute workflow | |
| result = client.run(g) | |
| # Verify execution | |
| assert result.did_run(progress_node), "Async progress node should have executed" | |
| assert result.did_run(output), "Output node should have executed" | |
| # Verify output | |
| images = result.get_images(output) | |
| assert len(images) == 1, "Should have produced 1 image" | |
| def test_sync_and_async_progress_together(self, client: ComfyClient, builder: GraphBuilder): | |
| """Test both sync and async progress updates in same workflow. | |
| This test ensures that both ComfyAPISync and ComfyAPI can coexist and work | |
| correctly in the same workflow execution. | |
| """ | |
| g = builder | |
| image1 = g.node("StubImage", content="BLACK", height=256, width=256, batch_size=1) | |
| image2 = g.node("StubImage", content="WHITE", height=256, width=256, batch_size=1) | |
| # Use both types of progress nodes | |
| sync_progress = g.node("TestSyncProgressUpdate", | |
| value=image1.out(0), | |
| sleep_seconds=0.3) | |
| async_progress = g.node("TestAsyncProgressUpdate", | |
| value=image2.out(0), | |
| sleep_seconds=0.3) | |
| # Create outputs | |
| output1 = g.node("SaveImage", images=sync_progress.out(0)) | |
| output2 = g.node("SaveImage", images=async_progress.out(0)) | |
| # Execute workflow | |
| result = client.run(g) | |
| # Both should execute successfully | |
| assert result.did_run(sync_progress), "Sync progress node should have executed" | |
| assert result.did_run(async_progress), "Async progress node should have executed" | |
| assert result.did_run(output1), "First output node should have executed" | |
| assert result.did_run(output2), "Second output node should have executed" | |
| # Verify outputs | |
| images1 = result.get_images(output1) | |
| images2 = result.get_images(output2) | |
| assert len(images1) == 1, "Should have produced 1 image from sync node" | |
| assert len(images2) == 1, "Should have produced 1 image from async node" | |