Instructions to use void0x14/echo 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 void0x14/echo 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 void0x14/echo:Q4_K_M # Run inference directly in the terminal: llama cli -hf void0x14/echo:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf void0x14/echo:Q4_K_M # Run inference directly in the terminal: llama cli -hf void0x14/echo:Q4_K_M
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 void0x14/echo:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf void0x14/echo:Q4_K_M
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 void0x14/echo:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf void0x14/echo:Q4_K_M
Use Docker
docker model run hf.co/void0x14/echo:Q4_K_M
- LM Studio
- Jan
- Ollama
How to use void0x14/echo with Ollama:
ollama run hf.co/void0x14/echo:Q4_K_M
- Unsloth Desktop
- Pi
How to use void0x14/echo with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf void0x14/echo:Q4_K_M
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": "void0x14/echo:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use void0x14/echo with Docker Model Runner:
docker model run hf.co/void0x14/echo:Q4_K_M
- Lemonade
How to use void0x14/echo with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull void0x14/echo:Q4_K_M
Run and chat with the model
lemonade run user.echo-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use void0x14/echo with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf void0x14/echo:Q4_K_M
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 void0x14/echo:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use void0x14/echo with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf void0x14/echo:Q4_K_M
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 "void0x14/echo:Q4_K_M" \ --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"
File size: 2,887 Bytes
598b018 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | import sys, traceback
print("STEP 0: imports", flush=True)
import torch
from transformers import Qwen3_5ForConditionalGeneration, AutoTokenizer, Qwen3VLProcessor, Qwen2VLImageProcessor, Qwen3VLVideoProcessor
MODEL_DIR = "/home/void0x14/Documents/echo/MVP/artifacts/qwen35-distilled-n4-multimodal"
print("STEP 1: tokenizer", flush=True)
tok = AutoTokenizer.from_pretrained(MODEL_DIR)
print(" image_token_id:", getattr(tok, "image_token_id", None), flush=True)
print(" video_token_id:", getattr(tok, "video_token_id", None), flush=True)
print(" pad:", tok.pad_token, flush=True)
print("STEP 2: image processor", flush=True)
img_pp = Qwen2VLImageProcessor.from_pretrained(MODEL_DIR)
print("STEP 3: video processor", flush=True)
try:
vid_pp = Qwen3VLVideoProcessor.from_pretrained(MODEL_DIR)
print(" video processor OK", flush=True)
except Exception as e:
print(" video processor FAIL:", type(e).__name__, str(e)[:200], flush=True)
vid_pp = None
print("STEP 4: processor bypass", flush=True)
from transformers import AutoConfig
cfg = AutoConfig.from_pretrained(MODEL_DIR)
print(" cfg image_token_id:", cfg.image_token_id, flush=True)
proc = Qwen3VLProcessor.__new__(Qwen3VLProcessor)
proc.image_token = "<|image_pad|>"
proc.video_token = "<|video_pad|>"
proc.vision_start_token = "<|vision_start|>"
proc.vision_end_token = "<|vision_end|>"
proc.image_token_id = cfg.image_token_id
proc.video_token_id = cfg.video_token_id
proc.vision_start_token_id = cfg.vision_start_token_id
proc.vision_end_token_id = cfg.vision_end_token_id
proc.tokenizer = tok
proc.image_processor = img_pp
proc.video_processor = vid_pp
proc.chat_template = tok.chat_template
print(" processor bypass OK", flush=True)
print("TOKEN SABITLERI KURULDU", flush=True)
print("STEP 5: load model", flush=True)
model = Qwen3_5ForConditionalGeneration.from_pretrained(MODEL_DIR, torch_dtype=torch.float32)
model.eval()
print(" model loaded", flush=True)
print("STEP 6: build inputs", flush=True)
import numpy as np
from PIL import Image
img = Image.new("RGB", (224, 224), (120, 60, 200))
messages = [{"role": "user", "content": [{"type": "image"}, {"type": "text", "text": "Bu resimde ne var?"}]}]
text = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
print(" chat text:", text[:120], flush=True)
inputs = proc(text=[text], images=[img], return_tensors="pt")
print(" input keys:", list(inputs.keys()), flush=True)
print(" input_ids shape:", inputs["input_ids"].shape, flush=True)
print(" pixel_values shape:", inputs["pixel_values"].shape, flush=True)
print("STEP 7: forward", flush=True)
with torch.no_grad():
out = model(**inputs)
print("LOGITS:", tuple(out.logits.shape), flush=True)
pred = out.logits[0, -1].argmax().item()
print(" last token pred:", pred, tok.decode([pred])[:50], flush=True)
print("MULTIMODAL FORWARD OK", flush=True) |