The 2026-10-09 wire aliases become the service names everywhere: systemd units, serve scripts, env files and FRANK_* variables, deploy-plan/deploy-remote service keys, container names, Prometheus job names + alert rules, Grafana dashboard queries, bats seams, runbook filenames, homepage/AGENTS lore, and historical prose. Rollback tags renamed in lockstep. Residue in the tree: zero. Retired frank-medium/small/npu names are history and stay. Known casualty: scripts/patches/*.patch context lines were rewritten; those retired-era vLLM-fork patches no longer apply byte-exact.
5.3 KiB
type, title, description, tags, timestamp
| type | title | description | tags | timestamp | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| reference | stock llama.cpp Qwen3.8-27B UD-Q8_K_XL (DFlash2) on Dankclaw (frank-dragoon) | The RETIRED frank-dragoon runbook (2026-09-21 → 2026-09-28; replaced by frank-dragoon-gufo-qwen38-27b, and the rollback target) — the stock llama.cpp prebuilt (unsloth b11030, ROCm gfx1151) serving unsloth/Qwen3.8-27B-GGUF:UD-Q8_K_XL (27B dense, 31.46 GiB) with the z-lab DFlash2 Q4_K_M drafter (depth 4) and q8_0 KV on the Dankclaw Strix Halo iGPU: the prebuilt runtime, the full-window/one-stream shape, the DFlash2 spec method, the Qwen-Sharp template, the payload, the client contract, and the failure modes worth knowing. |
|
2026-09-21 |
frank-dragoon — stock llama.cpp Qwen3.8-27B UD-Q8_K_XL (DFlash2)
RETIRED 2026-09-28, replaced by frank-dragoon-gufo-qwen38-27b (the gufo engine, same weights, same port and alias); the prebuilt is intact on disk as the rollback target. ACTIVE from 2026-09-21, when it replaced frank-dragoon-kairic-edge-qwen38-27b (Kairic Edge IU4 W4A4) and frank-dragoon-unsloth-qwen38-flash-next (the Flash-Next MoE it preceded).
Identity
- Endpoint:
frank-dragoonat192.168.0.143:7770(Dankclaw). - Runtime: stock llama.cpp — the unsloth
b11030prebuilt (/home/dank/GitPackages/unsloth-llama-b11030/llama-server), ROCm gfx1151. A mainline build, not a fork: it supports theqwen3_5architecture and the DFlash2 drafter (llama_model_qwen35,llama_model_dflash,common_speculative_impl_draft_dflash). - Service shape: root systemd unit
scripts/frank-dragoon.service(User=dank), launched byscripts/serve-frank-dragoon.shwith tunables fromscripts/frank-dragoon.env.
Shape
- Model:
unsloth/Qwen3.8-27B-GGUF:UD-Q8_K_XL— a 27B dense model, 31.46 GiB GGUF (sha256-verified byscripts/download-frank-dragoon.sh). - Context: one stream, full 262,144 tokens (the model's native window),
PARALLEL_SLOTS=1. - Placement: all layers on the iGPU (
--n-gpu-layers 999). The 27B dense weights (31.46 GiB) + the DFlash2 drafter (1.14 GiB) + q8_0 KV (~8.6 GiB) + compute buffers fit the iGPU's GTT aperture (~114 GiB).
Spec method
DFlash2 (a block-diffusion drafter) at depth 4. The drafter is the z-lab
Qwen3.8-27B-DFlash2-Q4_K_M (1.14 GiB), loaded via --model-draft with
--spec-type draft-dflash and --spec-draft-device ROCm0. It has a sliding
window of 2048, so its draft KV is small (~40 MiB). Greedy verification
(--temp 0 --top-p 1.0 --top-k 0 --min-p 0.0) is required.
KV
q8_0 (--cache-type-k q8_0 --cache-type-v q8_0), ~8.6 GiB at 262k. The
unsloth b11030 build does not support fp8 KV (allowed: f32/f16/bf16/q8_0/
q4_0/q4_1/iq4_nl/q5_0/q5_1); q8_0 is the highest-precision 8-bit option.
Template
The Qwen-Sharp v22.4.0 template is pinned via --chat-template-file
(dankserver/frank-medium/qwen-sharp-v22.4.0.jinja) with --jinja and
--chat-template-kwargs '{"preserve_thinking":true}'. Without
--chat-template-file the binary falls back to the built-in peg-native
template, which produces a ~73,600-token prompt for a ~250-token request.
preserve_thinking keeps prior thinking blocks across turns for multi-turn
agents. The template gates reasoning_effort to {xhigh, medium, low} — the
harness folds its levels onto that set in models.yml (reasoningEffortMap).
Payload
scripts/download-frank-dragoon.sh fetches the main GGUF and the DFlash2
drafter, each verified against its declared byte count + sha256
(--verify-only re-checks). The serve script refuses to start if the binary,
the main GGUF, or the drafter is missing.
Client contract
- Alias:
frank-dragoon(theidat/v1/models). - Reasoning: extracted to
reasoning_content(--reasoning auto,--reasoning-format deepseek, unlimited budget). - Tools: supported (
--jinjais pinned). - Vision: none — text-only (no mmproj), matching the prior frank-dragoon.
- Sampling: greedy by default; a client that sends a temperature gets its
own, and the harness applies per-model overrides from
models.yml.
Failure modes worth knowing
- Model load is slow (minutes cold). Health returns 503 while loading; do
not kill the process.
deploy.shwaits up to 20 minutes (LLM_WAIT). --ngl(double-dash) is invalid in b11030 — use--n-gpu-layers(the serve script uses the long form).- The 8-bit UD-Q8_K_XL decodes ~17 t/s vs the prior 4-bit Kairic Edge IU4 at ~22 t/s — the ~23 % larger weight size (31.46 vs 26 GiB) explains the gap; it is not a regression.
- DFlash2 draft acceptance is text-variety-dependent (0.85 on a trivial one-word answer, 0.519 on a varied explanatory prompt) — do not read a single-request acceptance as the steady state.
Rollback
Payload and runtime for frank-dragoon-kairic-edge-qwen38-27b (Kairic Edge IU4 W4A4) remain intact on disk. See frank-dragoon-unsloth-qwen38-flash-next for the Flash-Next predecessor it replaced on 2026-09-21.
Citations
- unsloth prebuilts: https://huggingface.co/unsloth
- Model: https://huggingface.co/unsloth/Qwen3.8-27B-GGUF
- DFlash2 drafter: https://huggingface.co/z-lab
- Serve script:
scripts/serve-frank-dragoon.sh; tunables:scripts/frank-dragoon.env