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"
Download MVP/test_multimodal_forward.py from void0x14/echo: direct link, hf CLI and curl.
- Browser
- Download file 2.89 kB
-
https://huggingface.co/void0x14/echo/resolve/main/MVP/test_multimodal_forward.py
- Command line
-
hf download hf://void0x14/echo/MVP/test_multimodal_forward.py
-
curl -L -o test_multimodal_forward.py https://huggingface.co/void0x14/echo/resolve/main/MVP/test_multimodal_forward.py
2.89 kB
| 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) |