Parable
Small local LLMs fine-tuned on genuine Claude Fable 5 + GPT-5.5 agent traces. GGUF-first, honest evals, published corpus.

Models
| Model | Base | Notes | Weights |
|---|---|---|---|
| Parable-Granite-4.1-3B | Granite 4.1 3B | v2: HumanEval 70.1 / 65.9, strict qual 25/34, zero transcript-artifact leakage | GGUF → |
| Parable-Qwen3-4B | Qwen3 4B | v2: every prompt answered (v1 returned nothing on 21%), HumanEval 73.2, mode-invariant | GGUF → |
| Parable-Granite-4.1-8B | Granite 4.1 8B | GGUF quants for local inference | GGUF → |
| Parable-Qwen3-8B | Qwen3 8B | GGUF quants for local inference | GGUF → |
ollama run parable/granite4.1-fable:3b# Python: llama-cpp-python, straight from Hugging Face
from llama_cpp import Llama
llm = Llama.from_pretrained(
repo_id="AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5-GGUF",
filename="*Q4_K_M.gguf",
n_ctx=8192,
)
out = llm.create_chat_completion(
messages=[{"role": "user", "content": "Plan the steps to debug a failing CI job."}]
)
print(out["choices"][0]["message"]["content"])Also on Ollama and ModelScope; the GGUF builds load straight into LM Studio and llama.cpp.
Benchmarks
Flagship 3B, v2 vs v1. Same harness, greedy decoding, fresh cache per weights:
| Benchmark | v1 | v2 |
|---|---|---|
| HumanEval | 62.8 | 70.1 |
| HumanEval+ | 57.9 | 65.9 |
| Strict 34-prompt coding qual | ~18/34 | 25/34 |
| Transcript-artifact leakage | 6/34 | 0/34 |
One trade made on purpose: raw function synthesis stays the base model's turf (81.7 HumanEval); v2 spends that capacity on agent behavior instead. Every number, including that one, is published.
Qwen3-4B, v2 vs v1 — same harness, thinking disabled on every row (the base is a hybrid-thinking model; unmatched modes flatter the fine-tune):
| Benchmark | Base | v1 | v2 |
|---|---|---|---|
| Prompts answered (34-prompt suite) | — | 27/34 | 34/34 |
| HumanEval | 76.8 | 72.0 | 73.2 |
| HumanEval+ | 71.3 | 68.3 | 67.1 |
The headline is the first row: v1 spent its whole token budget thinking on 7 of 34 ordinary prompts and returned nothing. v2 answers all 34 with 140× less reasoning text, at coding parity.

How they're made
- Completion-masked SFT - loss only on assistant completions, never on prompts or tool results.
- 30% replay mix - general instruction data replayed alongside traces to protect base capability.
- Benchmark-gated checkpoints - a checkpoint ships only if it clears the eval gate.
- Seed-averaged weights - final weights averaged across training seeds to reduce run variance.
- Published corpus - the full training corpus is public.
Training corpus: parable-corpus-v2 on Hugging Face →
Reproducibility
The full training corpus is public, both training seeds are published with their adapters and metrics, and every benchmark row — including the base models — is measured under the same harness with greedy decoding. Raw eval outputs ship alongside the weights, so every number on this page can be re-run and checked.