Instructions to use TessaCoil/K3-Stuff 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 TessaCoil/K3-Stuff 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 TessaCoil/K3-Stuff:Q8_0 # Run inference directly in the terminal: llama cli -hf TessaCoil/K3-Stuff:Q8_0
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf TessaCoil/K3-Stuff:Q8_0 # Run inference directly in the terminal: llama cli -hf TessaCoil/K3-Stuff: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 TessaCoil/K3-Stuff:Q8_0 # Run inference directly in the terminal: ./llama-cli -hf TessaCoil/K3-Stuff: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 TessaCoil/K3-Stuff:Q8_0 # Run inference directly in the terminal: ./build/bin/llama-cli -hf TessaCoil/K3-Stuff:Q8_0
Use Docker
docker model run hf.co/TessaCoil/K3-Stuff:Q8_0
- LM Studio
- Jan
- Ollama
How to use TessaCoil/K3-Stuff with Ollama:
ollama run hf.co/TessaCoil/K3-Stuff:Q8_0
- Unsloth Desktop
- Pi
How to use TessaCoil/K3-Stuff with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf TessaCoil/K3-Stuff: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": "TessaCoil/K3-Stuff:Q8_0" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use TessaCoil/K3-Stuff with Docker Model Runner:
docker model run hf.co/TessaCoil/K3-Stuff:Q8_0
- Lemonade
How to use TessaCoil/K3-Stuff with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull TessaCoil/K3-Stuff:Q8_0
Run and chat with the model
lemonade run user.K3-Stuff-Q8_0
List all available models
lemonade list
- Hermes Agent
How to use TessaCoil/K3-Stuff with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf TessaCoil/K3-Stuff: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 TessaCoil/K3-Stuff:Q8_0
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use TessaCoil/K3-Stuff with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf TessaCoil/K3-Stuff: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 "TessaCoil/K3-Stuff: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"
| # 29_dspark_isolate.sh — Minimal test: does DSpark spec work on K3 at all? | |
| # Try WITHOUT -fa on (FA is the most likely graph-breaker). 64in/64out, single probe. | |
| set -euo pipefail | |
| cd "$(dirname "$0")" | |
| source lib/common.sh | |
| source lib/server.sh | |
| BIN="/root/llama.cpp/build/bin/llama-server" | |
| MODEL="/root/models/Kimi-K3-GGUF/UD-Q4_K_XL/Kimi-K3-UD-Q4_K_XL-00001-of-00032.gguf" | |
| DRAFT="/root/models/k3-draft/draft.gguf" | |
| PROMPT_FILE="/root/k3-test/prompts/gen/coding_64tok.txt" | |
| PORT=8899 | |
| THREADS="${THREADS:-112}" | |
| PRED=64 | |
| LOG_ROOT="$(pwd)/logs" | |
| PROGRESS="$LOG_ROOT/progress.log" | |
| mkdir -p "$LOG_ROOT" | |
| log() { echo "[$(date +%H:%M:%S)] $*" | tee -a "$PROGRESS"; } | |
| PROMPT=$(cat "$PROMPT_FILE") | |
| stop_server "$PORT" 2>/dev/null || true | |
| sleep 2 | |
| # NO -fa on: let it auto (likely off). Draft on CPU. Default batch 512. | |
| log "### dspark-isolate: cmoe + dspark + FA-auto + t${THREADS} (NO explicit FA)" | |
| LLAMA_MMAP_NO_PREFETCH=1 \ | |
| "$BIN" \ | |
| --host 127.0.0.1 \ | |
| --port "$PORT" \ | |
| -m "$MODEL" \ | |
| -ngl 999 \ | |
| --tensor-split "0.3,1,1,1,1,1,1,1" \ | |
| --cpu-moe \ | |
| -t "$THREADS" \ | |
| -b 512 \ | |
| -ub 512 \ | |
| -np 1 \ | |
| -md "$DRAFT" \ | |
| -ngld 0 \ | |
| --spec-type draft-dspark \ | |
| > "$LOG_ROOT/server_iso.log" 2>&1 & | |
| SRV_PID=$! | |
| log "server[ISO]: pid=$SRV_PID, waiting for health…" | |
| READY=0 | |
| for i in $(seq 1 480); do | |
| if ! kill -0 "$SRV_PID" 2>/dev/null; then | |
| log "server[ISO]: DIED during load" | |
| tail -30 "$LOG_ROOT/server_iso.log" | tee -a "$PROGRESS" | |
| exit 1 | |
| fi | |
| HEALTH=$(curl -s -o /dev/null -w '%{http_code}' "http://127.0.0.1:$PORT/health" 2>/dev/null || echo "000") | |
| if [[ "$HEALTH" == "200" ]]; then | |
| log "server[ISO]: READY after ${i}s (pid $SRV_PID)" | |
| READY=1 | |
| break | |
| fi | |
| sleep 1 | |
| done | |
| if [[ "$READY" != "1" ]]; then | |
| log "server[ISO]: TIMEOUT" | |
| tail -20 "$LOG_ROOT/server_iso.log" | tee -a "$PROGRESS" | |
| exit 1 | |
| fi | |
| # Single probe; capture crash if any | |
| log "[iso_cold] starting…" | |
| T0=$(date +%s%N) | |
| RESULT=$(python3 -c " | |
| import urllib.request, json | |
| data = json.dumps({ | |
| 'prompt': $(python3 -c "import json; print(json.dumps(open('$PROMPT_FILE').read()))"), | |
| 'n_predict': $PRED, | |
| 'temperature': 0, | |
| 'top_k': 1, | |
| 'seed': 42 | |
| }).encode() | |
| req = urllib.request.Request('http://127.0.0.1:$PORT/completion', data=data, headers={'Content-Type': 'application/json'}) | |
| try: | |
| resp = urllib.request.urlopen(req, timeout=900) | |
| r = json.loads(resp.read()) | |
| t = r.get('timings', {}) | |
| print(f\"{t.get('prompt_per_second', 0)} {t.get('predicted_per_second', 0)}\") | |
| except Exception as e: | |
| print(f'ERROR {e}') | |
| " 2>&1) | |
| T1=$(date +%s%N) | |
| WALL=$(( (T1 - T0) / 1000000000 )) | |
| log "[iso_cold] wall=${WALL}s result=${RESULT}" | |
| # Check if server still alive | |
| if kill -0 "$SRV_PID" 2>/dev/null; then | |
| log "server[ISO]: still alive after probe" | |
| else | |
| log "server[ISO]: CRASHED during probe — last log:" | |
| tail -25 "$LOG_ROOT/server_iso.log" | grep -vE "New LWP|Thread debugging|host libthread" | tee -a "$PROGRESS" | |
| fi | |
| echo "$RESULT" | grep -q ERROR || { | |
| PP=$(echo "$RESULT" | awk '{print $1}') | |
| TG=$(echo "$RESULT" | awk '{print $2}') | |
| DISK=$(io_read_bytes 2>/dev/null || echo 0) | |
| echo -e "iso_cold\t0\t${WALL}\t0\t${PP}\t${TG}\t${DISK}" >> "$LOG_ROOT/metrics.tsv" | |
| } | |
| log "server[ISO]: stopping…" | |
| kill "$SRV_PID" 2>/dev/null || true | |
| sleep 3 | |
| kill -9 "$SRV_PID" 2>/dev/null || true | |
| log "### dspark-isolate DONE" | |
| date +%s > "$LOG_ROOT/k3_suite_status.txt" | |