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"
| # K3 Rental Test β Prep Report (2026-08-25) | |
| Offline preparation for `k3-rental-test-plan.md` Β§3 pre-flight. **Verdict: ready to | |
| rent, with two deltas to internalize first (Β§3 below).** | |
| ## 1. Pre-flight checklist β verified | |
| | Plan Β§3 item | Status | Evidence | | |
| |---|---|---| | |
| | K3 artifacts downloadable | β direct GGUF path, no conversion phase | [unsloth/Kimi-K3-GGUF](https://huggingface.co/unsloth/Kimi-K3-GGUF): **UD-Q4_K_XL = 32 shards, 1508.7 GB** (~49 GB/shard), matching the plan's 1.5 TB assumption. Also IQ1_S 594 GB / IQ2_XXS 711 GB / Q8_K_XL 1560 GB (=lossless). Optional `mmproj-BF16.gguf` for vision. Official weights: [moonshotai/Kimi-K3](https://huggingface.co/moonshotai/Kimi-K3). | | |
| | Runtime KDA support | β llama.cpp **mainline** | [PR #26185 "model: add Kimi-K3 text model"](https://github.com/ggml-org/llama.cpp/pull/26185) merged 2026-08-15, first released in [b10448](https://github.com/ggml-org/llama.cpp/releases/tag/b10448). KDA + Gated-MLA + AttnRes + latent-MoE + SiTU all implemented; MXFP4 experts repacked **losslessly** (no dequantβBF16 hours). Vision needs [unsloth fork PR #48](https://github.com/unslothai/llama.cpp/pull/48) β text-only plan β mainline OK. Pinned in `config.env`: `d222767` (2026-08-25 master). | | |
| | Smoke model staged | β | [Qwen/Qwen3-30B-A3B-GGUF](https://huggingface.co/Qwen/Qwen3-30B-A3B-GGUF) `Q4_K_M` (~18.6 GB). | | |
| | Scripts repo | β | `k3-test/` β see README. `bash -n` clean; flags verified against pinned source. | | |
| | Plan + review HTML accessible | β | in `/Users/danielleensign/prog/chat/` β rsync with the repo. | | |
| | Rental offers live | β can't verify offline | Vast offer IDs are ephemeral & need an API key β **day-of check via the web console** (Β§4 below). | | |
| ### Flags verified in llama.cpp source @ d222767 | |
| `--cpu-moe` (`-cmoe`), `--n-cpu-moe N` (`-ncmoe`), `-ot "<regex>=<buffer>"` (**first | |
| matching pattern wins**; buffer names `CPU`, `CUDA0..3`), `--numa distribute`, | |
| `--load-mode mmap|mlock|dio|none`, prompt-lookup spec via `--lookup-cache-static / | |
| --lookup-cache-dynamic`, `--single-turn`, `--no-conversation`. | |
| Expert tensor naming confirmed in `src/llama-arch.cpp`: | |
| `blk.N.ffn_{gate,up,down}_exps.weight` β the pattern `.ffn_(up|gate|down)_exps.=CPU` | |
| is exactly what `--cpu-moe` injects internally. | |
| ### config.json (replaces plan's estimates) | |
| 93 layers = 69 KDA + 24 Gated-MLA (full-attn layers 4,8,β¦,92,93); hidden 7168; | |
| 96 heads; MLA kv_lora_rank 512, q_lora_rank 1536; **896 routed experts** (moe_ff 3072, | |
| latent-compressed) + 2 shared; vocab 163840; ctx 1 048 576; AttnRes block size 12; | |
| KDA gate_lower_bound β5.0. | |
| ## 2. Budget re-check | |
| Q4 download at the box's measured 6.4 Gbps β **32β39 min β $1.30** @ $2.278/hr β on plan. | |
| Disk need 1508.7 + 18.6 + logs β 1.56 TB < 2.74 TB β fine with the plan's headroom. | |
| ## 3. β Two deltas from the plan to internalize BEFORE renting | |
| **(a) Trunk VRAM reality.** UD-Q4_K_XL keeps the dense trunk mostly **Q8_0** (Unsloth: | |
| "the remaining tensors β¦ are Q8_0"). Dense trunk β 56B params β **~55β60 GB**, which | |
| **does not fit 2Γ24 GB**. On the rental the default is trunk split across **3 GPUs** | |
| (`TSPLIT=1,1,1`, leaving GPU 3 for E6), with E0b/E0c measuring the 2-GPU / 1-GPU | |
| CPU-spill penalty. On the **home build (1Γ3090)** the trunk cannot be VRAM-resident at | |
| all: ~35 GB of trunk lives in RAM and is re-read every token (CPU side total then | |
| ~50β60 GB/token β ~2.5β3.5 tok/s at 150β180 GB/s, *below* the plan's 5β6 prediction), | |
| unless the trunk is separately re-quantized (Q4 trunk β 29 GB β still >24 GB; Q3 | |
| borderline). **The rental test must quantify this spill penalty (E0) β it is now the | |
| home build's central unknown.** | |
| **(b) "RAM-resident" is physically impossible on the rental** (1508.7 GB model vs | |
| ~612 GB RAM+VRAM) β but that's fine: mmap page-cache streaming **is** the | |
| reference-4-bit-streaming architecture. The experiments map plan-terms onto kernel | |
| reality: | |
| - E1 "experts fully RAM-resident" β E1b **warm page cache** (hot set resident); E1a | |
| cold = SSD streaming for the same workload. The pair measures plan E1+E2. | |
| - E3 "prefetch OFF" β `--load-mode dio` (every expert read hits NVMe β no llama.cpp | |
| expert-prefetch engine exists; readahead knob `read_ahead_kb 128β4096` is E2's "ON"). | |
| - E4 cache-size sweep β **RAM filler** (`/dev/shm`) shrinks effective page cache to | |
| emulate 200/320/450-expert hot sets. | |
| - E8: llama.cpp has **no router top-k override** for kimi-k3 @ d222767 β script probes | |
| and logs UNSUPPORTED rather than failing. (Can patch `llm-graph` if it matters β | |
| ~5 lines; decide on-box.) | |
| - Hot-set arithmetic: expert mass β 1449 GB Γ· 896 β **1.6 GB/expert** β ~490 GB usable | |
| RAM caches **~300 experts**, slightly under the plan's 320β360. E4 measures the knee | |
| directly, so plan Β§6's hit-rate criteria still apply. | |
| ## 4. Day-of-rental checklist (cannot be done offline) | |
| 1. Open vast.ai console β verify offer **#18138411** live; else fallbacks in plan Β§2 | |
| (#43104468 β #12239073). Reject anything <1 Gbps down. | |
| 2. `rsync -a k3-test/ root@box: && ssh`, `tmux new -s k3`, `./run_all.sh`. | |
| 3. Watch download rate for 15 min (`tail -f logs/download_k3.log`); | |
| <2 Gbps effective β kill, re-rent #43104468 (plan Β§7). | |
| 4. After experiments: `./30_teardown.sh`, pull tarball off-box (7.6 Gbps up), | |
| **destroy instance in the console**. | |
| ## 5. Sources | |
| - llama.cpp K3 model support: <https://github.com/ggml-org/llama.cpp/commit/ad1de39e0708e3ced9c71bb3c82d93a2c046a73f> | |
| - Release b10448: <https://github.com/ggml-org/llama.cpp/releases/tag/b10448> | |
| - Unsloth GGUF repo + sizes: <https://huggingface.co/unsloth/Kimi-K3-GGUF> | |
| - Unsloth run guide (quant table, fork note): <https://unsloth.ai/docs/models/kimi-k3> | |
| - Official repo: <https://huggingface.co/moonshotai/Kimi-K3> / <https://github.com/MoonshotAI/Kimi-K3> | |
| - K3 tech report: arXiv:2607.24653 Β· NeMo arch notes: <https://docs.nvidia.com/nemo/automodel/model-coverage/large-language-models/moonshotai/kimi-k3> | |