🪶 Parable-Granite-8B — trained on genuine Claude Fable 5 agent traces
The strongest Parable. Planning, tool use, and <think> reasoning distilled from real Claude Fable 5 and GPT-5.5 agent sessions — 70% lower held-out test loss than its base, and past the 0.71 mark the 9B-class incumbent reports on this data family.
~6 GB of RAM is all you need. The Q4 build fits comfortably on an ordinary laptop or a mid-range GPU.
One command and you have a private, offline reasoning model on your machine:
ollama run hf.co/AnkitAI/Parable-Granite-4.1-8B-Claude-Fable-5-GGUF:Q4_K_M
Parable-Granite-4.1-8B is an ibm-granite/granite-4.1-8b fine-tune trained on real multi-step agent sessions: planning, tool use, and <think> reasoning captured from actual Claude Fable 5 and GPT-5.5 agent work, not synthetic Q&A. It is the largest release in the Parable series.
Announcements
🔮 v2 is coming. The 3B just got the v2 treatment (13× corpus, rebuilt recipe) — the same upgrade lands here next. Same links, in-place.
📦 Full family. This 8B is the largest Parable. Also available: 3B Granite, 8B Qwen, 4B Qwen — same recipe, no matter your hardware. Everything lives in the Parable collection.
Ollama (shorter command via the Parable namespace, or pull directly from this repo):
bash
1ollama run parable/granite4.1-fable:8b
2# or straight from this repo:3ollama run hf.co/AnkitAI/Parable-Granite-4.1-8B-Claude-Fable-5-GGUF:Q4_K_M
llama.cpp:
bash
1llama-cli -m Parable-Granite-4.1-8B-Claude-Fable-5-GGUF-Q4_K_M.gguf --jinja \2 -p "Write a bash one-liner to find the 10 largest files in a directory tree."
1from llama_cpp import Llama
23llm = Llama.from_pretrained(4 repo_id="AnkitAI/Parable-Granite-4.1-8B-Claude-Fable-5-GGUF",5 filename="*Q4_K_M.gguf", n_ctx=8192,6)7out = llm.create_chat_completion(8 messages=[{"role":"user","content":"Write a Python function that retries an HTTP request with exponential backoff."}],9 max_tokens=3000, temperature=0.7,10)11print(out["choices"][0]["message"]["content"])
Thinking mode
Every answer opens with a <think>...</think> reasoning block before the final answer — a behavior this fine-tune adds to Granite. llama.cpp's --jinja chat mode separates it automatically; strip it before showing replies to end users.
Sampling: temperature 0.7, top_p 0.95, and budget max_tokens generously (at least 2500) — trace-trained models think at length before answering.
Evaluation
Held-out evals across the Parable family
Held-out test split, identical evaluation code and context length for base and fine-tune:
Metric
Base Granite-4.1-8B
Parable
Δ
Test loss
2.030
0.617
−70%
Qualitative review (34 coding/terminal/debugging prompts, strictly graded by mentally executing every answer): 20/34 fully correct, 32/34 correct or partially correct. We publish these numbers because strict qualitative grading is rare in this niche; judge accordingly.
For reference, the strongest published fine-tune on this data family (a 9B) reports 0.71 validation loss. Cross-repo numbers are indicative only: splits, tokenizers, and context lengths differ (ours is measured at 1,024 tokens).
Function calling (BFCL V3, AST subset)
Measured 2026-07-29: bfcl-eval at gorilla main, prompting mode, Q4_K_M
GGUFs served by llama.cpp on a T4, base and Parable under the identical
harness. Categories: simple_python / multiple / parallel /
parallel_multiple (400/200/200/200 items). Raw generations and score
files: parable-v2-artifacts
under verify/bfcl/.
DNF. The run hit its 3-hour GPU budget: this chat variant's think
blocks push most responses to the 4,096-token per-request cap, about 35
GPU-hours of decode for the full suite at T4 speed, so it cannot
complete under the same budget every other row got. We report that
rather than tightening the token cap for one model. For function-calling harnesses, use the base model; the 3B sibling's
card shows the measured pattern on these categories.
Training data
Glint-Research/Fable-5-traces: 4.4k real Claude Fable 5 coding-agent session traces with <think> reasoning and tool calls (AGPL-3.0)
Every example passed a quality gate (schema validation, secrets scrub, length filtering) before training. QLoRA fine-tune (NF4, sequence length 1024) trained on a single 16 GB GPU, quantized with llama.cpp.
Good to know
Trained for agent work: on ops-style prompts it sometimes (2/34 in our eval) responds with structured tool-call JSON rather than prose. Useful inside agent harnesses; in plain chat, re-prompt or lower the temperature.
Fine-tuned at 1,024-token sequences; the base model's native 128K-token context remains fully available, so long sessions work, with the fine-tuned behavior strongest in the opening turns.
As a fine-tune it inherits Granite-4.1-8B's base behaviors and knowledge cutoff. As with any local model, treat generated commands and code as drafts to review.
Base & license
Weights: Apache-2.0 (inherited from ibm-granite/granite-4.1-8b). Training data: Fable-5-traces AGPL-3.0, gpt5.5-terminal MIT — because those traces originate from third-party assistants, the providers' terms may apply to downstream training and distillation. If you plan to build on this model commercially, confirm your use aligns with those terms.
The recipe, evaluation methodology and failure analysis behind this model are
documented in the tech report:
Aglawe, A. (2026). Agent-Trace Fine-Tuning of Small Language Models under
Constrained Compute. Zenodo. doi:10.5281/zenodo.21676407
bibtex
1@misc{aglawe2026agenttrace,
2 author = {Aglawe, Ankit},
3 title = {Agent-Trace Fine-Tuning of Small Language Models under Constrained Compute},
4 year = {2026},
5 publisher = {Zenodo},
6 doi = {10.5281/zenodo.21676407},
7 url = {https://doi.org/10.5281/zenodo.21676407}
8}