Instructions to use hipinis/20260718 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use hipinis/20260718 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 hipinis/20260718:Q8_0 # Run inference directly in the terminal: llama cli -hf hipinis/20260718:Q8_0
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf hipinis/20260718:Q8_0 # Run inference directly in the terminal: llama cli -hf hipinis/20260718: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 hipinis/20260718:Q8_0 # Run inference directly in the terminal: ./llama-cli -hf hipinis/20260718: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 hipinis/20260718:Q8_0 # Run inference directly in the terminal: ./build/bin/llama-cli -hf hipinis/20260718:Q8_0
Use Docker
docker model run hf.co/hipinis/20260718:Q8_0
- Llama new
- LM Studio
- Jan
- Ollama
How to use hipinis/20260718 with Ollama:
ollama run hf.co/hipinis/20260718:Q8_0
- Unsloth Desktop
- Pi
How to use hipinis/20260718 with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf hipinis/20260718:Q8_0
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "hipinis/20260718:Q8_0" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use hipinis/20260718 with Docker Model Runner:
docker model run hf.co/hipinis/20260718:Q8_0
- Lemonade
How to use hipinis/20260718 with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull hipinis/20260718:Q8_0
Run and chat with the model
lemonade run user.20260718-Q8_0
List all available models
lemonade list
- Hermes Agent
How to use hipinis/20260718 with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf hipinis/20260718: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 hipinis/20260718:Q8_0
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use hipinis/20260718 with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf hipinis/20260718: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 "hipinis/20260718: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"
Download custom_nodes/ComfyUI-Custom-Scripts/py/text_files.py from hipinis/20260718: direct link, hf CLI and curl.
- Browser
- Download file 6.55 kB
-
https://huggingface.co/hipinis/20260718/resolve/main/custom_nodes/ComfyUI-Custom-Scripts/py/text_files.py
- Command line
-
hf download hf://hipinis/20260718/custom_nodes/ComfyUI-Custom-Scripts/py/text_files.py
-
curl -L -o text_files.py https://huggingface.co/hipinis/20260718/resolve/main/custom_nodes/ComfyUI-Custom-Scripts/py/text_files.py
6.55 kB
| import os | |
| import folder_paths | |
| import json | |
| from server import PromptServer | |
| import glob | |
| from aiohttp import web | |
| def get_allowed_dirs(): | |
| dir = os.path.abspath(os.path.join(__file__, "../../user")) | |
| file = os.path.join(dir, "text_file_dirs.json") | |
| with open(file, "r") as f: | |
| return json.loads(f.read()) | |
| def get_valid_dirs(): | |
| return get_allowed_dirs().keys() | |
| def get_dir_from_name(name): | |
| dirs = get_allowed_dirs() | |
| if name not in dirs: | |
| raise KeyError(name + " dir not found") | |
| path = dirs[name] | |
| path = path.replace("$input", folder_paths.get_input_directory()) | |
| path = path.replace("$output", folder_paths.get_output_directory()) | |
| path = path.replace("$temp", folder_paths.get_temp_directory()) | |
| return path | |
| def is_child_dir(parent_path, child_path): | |
| parent_path = os.path.abspath(parent_path) | |
| child_path = os.path.abspath(child_path) | |
| return os.path.commonpath([parent_path]) == os.path.commonpath([parent_path, child_path]) | |
| def get_real_path(dir): | |
| dir = dir.replace("/**/", "/") | |
| dir = os.path.abspath(dir) | |
| dir = os.path.split(dir)[0] | |
| return dir | |
| async def get_files(request): | |
| name = request.match_info["name"] | |
| dir = get_dir_from_name(name) | |
| recursive = "/**/" in dir | |
| # Ugh cant use root_path on glob... lazy hack.. | |
| pre = get_real_path(dir) | |
| files = list(map(lambda t: os.path.relpath(t, pre), | |
| glob.glob(dir, recursive=recursive))) | |
| if len(files) == 0: | |
| files = ["[none]"] | |
| return web.json_response(files) | |
| def get_file(root_dir, file): | |
| if file == "[none]" or not file or not file.strip(): | |
| raise ValueError("No file") | |
| root_dir = get_dir_from_name(root_dir) | |
| root_dir = get_real_path(root_dir) | |
| if not os.path.exists(root_dir): | |
| os.mkdir(root_dir) | |
| full_path = os.path.join(root_dir, file) | |
| file_dir = os.path.dirname(full_path) | |
| if file_dir and not os.path.exists(file_dir): | |
| os.makedirs(file_dir, exist_ok=True) | |
| if not is_child_dir(root_dir, full_path): | |
| raise ReferenceError() | |
| return full_path | |
| class TextFileNode: | |
| RETURN_TYPES = ("STRING",) | |
| CATEGORY = "utils" | |
| def VALIDATE_INPUTS(self, root_dir, file, **kwargs): | |
| if file == "[none]" or not file or not file.strip(): | |
| return True | |
| get_file(root_dir, file) | |
| return True | |
| def load_text(self, **kwargs): | |
| self.file = get_file(kwargs["root_dir"], kwargs["file"]) | |
| with open(self.file, "r") as f: | |
| return (f.read(), ) | |
| class LoadText(TextFileNode): | |
| def IS_CHANGED(self, **kwargs): | |
| return os.path.getmtime(self.file) | |
| def INPUT_TYPES(s): | |
| return { | |
| "required": { | |
| "root_dir": (list(get_valid_dirs()), {}), | |
| "file": (["[none]"], { | |
| "pysssss.binding": [{ | |
| "source": "root_dir", | |
| "callback": [{ | |
| "type": "set", | |
| "target": "$this.disabled", | |
| "value": True | |
| }, { | |
| "type": "fetch", | |
| "url": "/pysssss/text-file/{$source.value}", | |
| "then": [{ | |
| "type": "set", | |
| "target": "$this.options.values", | |
| "value": "$result" | |
| }, { | |
| "type": "validate-combo" | |
| }, { | |
| "type": "set", | |
| "target": "$this.disabled", | |
| "value": False | |
| }] | |
| }], | |
| }] | |
| }) | |
| }, | |
| } | |
| FUNCTION = "load_text" | |
| class SaveText(TextFileNode): | |
| OUTPUT_NODE = True | |
| def IS_CHANGED(self, **kwargs): | |
| return float("nan") | |
| def INPUT_TYPES(s): | |
| return { | |
| "required": { | |
| "root_dir": (list(get_valid_dirs()), {}), | |
| "file": ("STRING", {"default": "file.txt"}), | |
| "append": (["append", "overwrite", "new only"], {}), | |
| "insert": ("BOOLEAN", { | |
| "default": True, "label_on": "new line", "label_off": "none", | |
| "pysssss.binding": [{ | |
| "source": "append", | |
| "callback": [{ | |
| "type": "if", | |
| "condition": [{ | |
| "left": "$source.value", | |
| "op": "eq", | |
| "right": '"append"' | |
| }], | |
| "true": [{ | |
| "type": "set", | |
| "target": "$this.disabled", | |
| "value": False | |
| }], | |
| "false": [{ | |
| "type": "set", | |
| "target": "$this.disabled", | |
| "value": True | |
| }], | |
| }] | |
| }] | |
| }), | |
| "text": ("STRING", {"forceInput": True, "multiline": True}) | |
| }, | |
| } | |
| FUNCTION = "write_text" | |
| def write_text(self, **kwargs): | |
| self.file = get_file(kwargs["root_dir"], kwargs["file"]) | |
| if kwargs["append"] == "new only" and os.path.exists(self.file): | |
| raise FileExistsError( | |
| self.file + " already exists and 'new only' is selected.") | |
| with open(self.file, "a+" if kwargs["append"] == "append" else "w") as f: | |
| is_append = f.tell() != 0 | |
| if is_append and kwargs["insert"]: | |
| f.write("\n") | |
| f.write(kwargs["text"]) | |
| return super().load_text(**kwargs) | |
| NODE_CLASS_MAPPINGS = { | |
| "LoadText|pysssss": LoadText, | |
| "SaveText|pysssss": SaveText, | |
| } | |
| NODE_DISPLAY_NAME_MAPPINGS = { | |
| "LoadText|pysssss": "Load Text 🐍", | |
| "SaveText|pysssss": "Save Text 🐍", | |
| } | |