DFlash pairing index for mesh-llm
Each pairing maps a target model's GGUF identity (architecture, executable layer count, width, expert count, optional family) to the DFlash draft mesh-llm uses by default. The draft is pinned by Hugging Face revision and SHA-256, and the pairing carries the default draft cap and the backends it is the default on.
Every pairing here was chosen from measured decode speed on DGX Spark (CUDA) and Apple Silicon (Metal). A pairing is the default on a backend only where it beat the model's previous default: native MTP where the model ships it, else no speculation.
Files
index/<sha256>.json: every index a mesh-llm release has pinned, named by the SHA-256 of its bytes. A release fetches the file its pin names frommainand uses it only if the bytes hash to the pin. These files are never changed or deleted, so old releases keep resolving.index.json: a copy of the newest index, for reading. No release reads it.
The source of truth is
mesh/crates/mesh-llm-skippy-adapter/data/dflash-pairings/
in mesh-llm. To change the pairings, edit index.json there, set DFLASH_PAIRING_INDEX_SHA256 to
its new hash, and merge. CI then publishes index/<sha256>.json, index.json and this README.
Pairings
| Match | Draft | Cap | Backends |
|---|---|---|---|
qwen35, 32 layers, 4096 wide |
AtomicChat/Qwen3.5-9B-DFlash-GGUF Qwen3.5-9B-DFlash.Q8_0.gguf |
15 | all |
qwen35, 64 layers, 5120 wide |
AtomicChat/Qwen3.6-27B-DFlash-GGUF Qwen3.6-27B-DFlash.Q8_0.gguf |
15 | all |
qwen35, 64 layers, 5120 wide, name carries Qwen3.8 |
z-lab/Qwen3.8-27B-DFlash2-GGUF Qwen3.8-27B-DFlash2-Q8_0.gguf |
7 | all |
qwen35moe, 40 layers, 2048 wide, 256 experts |
aminya/Qwen3.6-35B-A3B-DFlash2-GGUF Qwen3.6-35B-A3B-DFlash2-Q8_0.gguf |
7 | not Metal |
qwen35moe, 40 layers, 2048 wide, 256 experts |
Alittlehammmer/Qwen3.6-35B-A3B-DFlash-GGUF-llama.cpp Qwen3.6-35B-A3B-DFlash-Q8_0.gguf |
15 | Metal |
qwen3next, 48 layers, 2048 wide, 512 experts |
AtomicChat/Qwen3-Coder-Next-DFlash-GGUF Qwen3-Coder-Next-DFlash.Q8_0.gguf |
15 | Metal |
gemma4, 42 layers, 2560 wide, name carries Nemotron-3.5-Bolt |
unsloth/NVIDIA-Nemotron-3.5-Bolt-E4B-GGUF dflash-NVIDIA-Nemotron-3.5-Bolt-E4B-Q8_0.gguf |
7 | all |
nemotron_h_moe, 52 layers, 2688 wide, 128 experts, name carries Nemotron-3.5-Lightning |
magnitudedev/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4-DSpark-GGUF NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4-DSpark.gguf |
7 | not Metal |
laguna, 48 layers, 3072 wide, 256 experts |
poolside/Laguna-S-2.1-GGUF laguna-s-2.1-DFlash-BF16.gguf |
15 | not Metal |
deepseek4, 43 layers, 4096 wide, 256 experts, name carries DeepSeek-V4-Flash-0731 |
unsloth/DeepSeek-V4-Flash-0731-GGUF dspark-DeepSeek-V4-Flash-0731-Q8_0.gguf |
5 | not Metal |
The cap is further held to 6 on Metal. Layer packages can instead declare their draft in
generation.speculative_decoding.proposers (type: dflash); a package declaration takes precedence
over this index.