Docs / Change feeds
Model change feeds
The tracker reads every tracked open-weight model's config, tokenizer, chat template and generation defaults from the Hub's commit history and diffs them key by key. These feeds put that record where your automation already looks.
586 change advisories across the tracked models, regenerated after every daily tracker run from the same rows as /changes. The full catalogue: /changes-feeds. Data under CC BY 4.0, attribution "Neurarch model change record". Each command below was run on 2026-10-18.
1. Renovate: a pull request when a pinned model moves
Pin each model to a full 40-character commit, then extend the preset in renovate.json:
{
"extends": ["https://www.neurarch.com/changes-feeds/renovate/preset.json"]
}
Renovate then opens one pull request per model when its main moves, linking that model's change list. It matches these forms:
AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-8B-Base", revision="<40-char sha>")
vllm serve Qwen/Qwen3-8B-Base --revision <40-char sha>
python -m sglang.launch_server --model-path Qwen/Qwen3-8B-Base --revision <40-char sha>
# axolotl / TRL / LLaMA-Factory YAML
base_model: Qwen/Qwen3-8B-Base
model_revision: <40-char sha>
# anywhere else
# renovate: hf-model=Qwen/Qwen3-8B-Base
MODEL_SHA=<40-char sha>
The datasource behind it is one JSON file per model, every revision we have read listed as a release:
$ curl -s https://www.neurarch.com/changes-feeds/renovate/Qwen/Qwen3-8B-Base.json | jq '.releases | length'
A model we do not track answers 404, and Renovate skips it with a warning. To find unpinned downloads first, run npx neurarch pin-check . (CLI 0.3.0).
2. OSV advisories: one record per change
Every change is an OSV record with a GIT range introduced at the commit that made it, so "does my pinned revision carry this change" is a question OSV tooling already answers. Ids look like x_NXMC-2025-0102 and never move.
$ curl -s https://www.neurarch.com/changes-feeds/advisories/index.json \
| jq '.advisories[] | select(.model == "Qwen/Qwen3-8B-Base") | {id, kind, breaking, url}'
{
"id": "x_NXMC-2025-0102",
"kind": "template",
"breaking": true,
"url": "https://www.neurarch.com/changes-feeds/advisories/x_NXMC-2025-0102.json"
}
...
database_specific in each record carries the changed keys with before and after, which of memory, serving and the tokenizer they touch, and breaking. A change is breaking when a structural or weights key changed, a tokenizer key other than the per-call defaults changed, or rendering the chat template before and after on fixed conversations gave different text. Records say what a key does mechanically, never that something broke for anyone.
3. A badge for your README
A shields.io endpoint per model: how many tracked keys changed since the earliest revision we have read, orange when any change was breaking.
[](https://www.neurarch.com/changes-feeds/models/Qwen/Qwen3-8B-Base.html)
$ curl -s https://www.neurarch.com/changes-feeds/badge/Qwen/Qwen3-8B-Base.json
{
"schemaVersion": 1,
"label": "config changes",
"message": "2 since 2025-04-28 (2 breaking)",
"color": "orange",
"cacheSeconds": 21600
}
What the feeds do not cover
- Only models the tracker follows; a model that exists only as GGUF, or that is gated, is not read.
- Licence changes are not in these records (
impact.licenceis alwaysnull). - Most changes are fixes by the publisher. A change record is a fact about the files, not a claim of a bug.