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 feature flags functionality.""" | |
| import pytest | |
| from comfy_api.feature_flags import ( | |
| get_connection_feature, | |
| supports_feature, | |
| get_server_features, | |
| CLI_FEATURE_FLAG_REGISTRY, | |
| SERVER_FEATURE_FLAGS, | |
| _coerce_flag_value, | |
| _parse_cli_feature_flags, | |
| ) | |
| class TestFeatureFlags: | |
| """Test suite for feature flags functions.""" | |
| def test_get_server_features_returns_copy(self): | |
| """Test that get_server_features returns a copy of the server flags.""" | |
| features = get_server_features() | |
| # Verify it's a copy by modifying it | |
| features["test_flag"] = True | |
| # Original should be unchanged | |
| assert "test_flag" not in SERVER_FEATURE_FLAGS | |
| def test_get_server_features_contains_expected_flags(self): | |
| """Test that server features contain expected flags.""" | |
| features = get_server_features() | |
| assert "supports_preview_metadata" in features | |
| assert features["supports_preview_metadata"] is True | |
| assert "max_upload_size" in features | |
| assert isinstance(features["max_upload_size"], (int, float)) | |
| def test_get_connection_feature_with_missing_sid(self): | |
| """Test getting feature for non-existent session ID.""" | |
| sockets_metadata = {} | |
| result = get_connection_feature(sockets_metadata, "missing_sid", "some_feature") | |
| assert result is False # Default value | |
| def test_get_connection_feature_with_custom_default(self): | |
| """Test getting feature with custom default value.""" | |
| sockets_metadata = {} | |
| result = get_connection_feature( | |
| sockets_metadata, "missing_sid", "some_feature", default="custom_default" | |
| ) | |
| assert result == "custom_default" | |
| def test_get_connection_feature_with_feature_flags(self): | |
| """Test getting feature from connection with feature flags.""" | |
| sockets_metadata = { | |
| "sid1": { | |
| "feature_flags": { | |
| "supports_preview_metadata": True, | |
| "custom_feature": "value", | |
| }, | |
| } | |
| } | |
| result = get_connection_feature(sockets_metadata, "sid1", "supports_preview_metadata") | |
| assert result is True | |
| result = get_connection_feature(sockets_metadata, "sid1", "custom_feature") | |
| assert result == "value" | |
| def test_get_connection_feature_missing_feature(self): | |
| """Test getting non-existent feature from connection.""" | |
| sockets_metadata = { | |
| "sid1": {"feature_flags": {"existing_feature": True}} | |
| } | |
| result = get_connection_feature(sockets_metadata, "sid1", "missing_feature") | |
| assert result is False | |
| def test_supports_feature_returns_boolean(self): | |
| """Test that supports_feature always returns boolean.""" | |
| sockets_metadata = { | |
| "sid1": { | |
| "feature_flags": { | |
| "bool_feature": True, | |
| "string_feature": "value", | |
| "none_feature": None, | |
| }, | |
| } | |
| } | |
| # True boolean feature | |
| assert supports_feature(sockets_metadata, "sid1", "bool_feature") is True | |
| # Non-boolean values should return False | |
| assert supports_feature(sockets_metadata, "sid1", "string_feature") is False | |
| assert supports_feature(sockets_metadata, "sid1", "none_feature") is False | |
| assert supports_feature(sockets_metadata, "sid1", "missing_feature") is False | |
| def test_supports_feature_with_missing_connection(self): | |
| """Test supports_feature with missing connection.""" | |
| sockets_metadata = {} | |
| assert supports_feature(sockets_metadata, "missing_sid", "any_feature") is False | |
| def test_empty_feature_flags_dict(self): | |
| """Test connection with empty feature flags dictionary.""" | |
| sockets_metadata = {"sid1": {"feature_flags": {}}} | |
| result = get_connection_feature(sockets_metadata, "sid1", "any_feature") | |
| assert result is False | |
| assert supports_feature(sockets_metadata, "sid1", "any_feature") is False | |
| class TestCoerceFlagValue: | |
| """Test suite for _coerce_flag_value.""" | |
| def test_registered_bool_true(self): | |
| assert _coerce_flag_value("show_signin_button", "true") is True | |
| assert _coerce_flag_value("show_signin_button", "True") is True | |
| def test_registered_bool_false(self): | |
| assert _coerce_flag_value("show_signin_button", "false") is False | |
| assert _coerce_flag_value("show_signin_button", "FALSE") is False | |
| def test_unregistered_key_stays_string(self): | |
| assert _coerce_flag_value("unknown_flag", "true") == "true" | |
| assert _coerce_flag_value("unknown_flag", "42") == "42" | |
| def test_bool_typo_raises(self): | |
| """Strict bool: typos like 'ture' or 'yes' must raise so the flag can be dropped.""" | |
| with pytest.raises(ValueError): | |
| _coerce_flag_value("show_signin_button", "ture") | |
| with pytest.raises(ValueError): | |
| _coerce_flag_value("show_signin_button", "yes") | |
| with pytest.raises(ValueError): | |
| _coerce_flag_value("show_signin_button", "1") | |
| with pytest.raises(ValueError): | |
| _coerce_flag_value("show_signin_button", "") | |
| def test_failed_int_coercion_raises(self, monkeypatch): | |
| """Malformed values for typed flags must raise; caller decides what to do.""" | |
| monkeypatch.setitem( | |
| CLI_FEATURE_FLAG_REGISTRY, | |
| "test_int_flag", | |
| {"type": "int", "default": 0, "description": "test"}, | |
| ) | |
| with pytest.raises(ValueError): | |
| _coerce_flag_value("test_int_flag", "not_a_number") | |
| class TestParseCliFeatureFlags: | |
| """Test suite for _parse_cli_feature_flags.""" | |
| def test_single_flag(self, monkeypatch): | |
| monkeypatch.setattr("comfy_api.feature_flags.args", type("Args", (), {"feature_flag": ["show_signin_button=true"]})()) | |
| result = _parse_cli_feature_flags() | |
| assert result == {"show_signin_button": True} | |
| def test_missing_equals_defaults_to_true(self, monkeypatch): | |
| """Bare flag without '=' is treated as the string 'true' (and coerced if registered).""" | |
| monkeypatch.setattr("comfy_api.feature_flags.args", type("Args", (), {"feature_flag": ["show_signin_button", "valid=1"]})()) | |
| result = _parse_cli_feature_flags() | |
| assert result == {"show_signin_button": True, "valid": "1"} | |
| def test_empty_key_skipped(self, monkeypatch): | |
| monkeypatch.setattr("comfy_api.feature_flags.args", type("Args", (), {"feature_flag": ["=value", "valid=1"]})()) | |
| result = _parse_cli_feature_flags() | |
| assert result == {"valid": "1"} | |
| def test_invalid_bool_value_dropped(self, monkeypatch, caplog): | |
| """A typo'd bool value must be dropped entirely, not silently set to False | |
| and not stored as a raw string. A warning must be logged.""" | |
| monkeypatch.setattr( | |
| "comfy_api.feature_flags.args", | |
| type("Args", (), {"feature_flag": ["show_signin_button=ture", "valid=1"]})(), | |
| ) | |
| with caplog.at_level("WARNING"): | |
| result = _parse_cli_feature_flags() | |
| assert result == {"valid": "1"} | |
| assert "show_signin_button" not in result | |
| assert any("show_signin_button" in r.message and "drop" in r.message.lower() for r in caplog.records) | |
| class TestCliFeatureFlagRegistry: | |
| """Test suite for the CLI feature flag registry.""" | |
| def test_registry_entries_have_required_fields(self): | |
| for key, info in CLI_FEATURE_FLAG_REGISTRY.items(): | |
| assert "type" in info, f"{key} missing 'type'" | |
| assert "default" in info, f"{key} missing 'default'" | |
| assert "description" in info, f"{key} missing 'description'" | |