You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore(website): derive the counters from data, refresh them weekly
The star, fork, contributor and release counts were typed into the templates
by hand, so they only moved when somebody remembered. They had already
drifted: stars read 48,042 against 48,067, forks 4,314 against 4,320, and
contributors 224 against 225.
They move to website/data/stats.yaml, which .github/ci/refresh-site-counters.sh
rewrites from the GitHub API, run weekly by a new workflow. The contributors
and releases endpoints never report a total, so the script asks for one item
per page and reads the count out of the Link header. It refuses to write a
zero or a non-number, which is what a rate-limited or failed call looks like,
and the workflow commits only when a number actually moved. The Discord count
has no API behind it, so the script reads the existing value back and carries
it through.
The engine count was wrong in a second way. The hero said 18, the section
heading said "Eighteen engines", the timeline said "Nineteen engines of our
own", and the /engines/ page derived 19 from the data file. All of them now
derive from that same file, so they cannot disagree again.
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Assisted-by: Claude Code:claude-opus-5[1m]
<h2class="rv mt1" style="max-width:22ch">Eighteen engines, written from scratch.</h2>
167
+
<h2class="rv mt1" style="max-width:22ch">{{ len .Site.Data.engines.engines }} engines, written from scratch.</h2>
168
168
<pclass="lede rv mt2">Most backends wrap somebody else's engine. These do not. They exist because the thing we needed was a 9 GB Python install, or closed, or nobody had built it yet. Each one is a binary and a GGUF file, checked against the reference implementation in CI.</p>
169
169
170
170
<divclass="spot rv">
@@ -247,7 +247,7 @@ <h4>vllm.cpp</h4>
247
247
<videosrc="/media/vllm-race.mp4" mutedloopplaysinlinepreload="none" data-lazyaria-label="vllm.cpp ahead of vLLM at every concurrency level"></video>
<pclass="rv mt2"><aclass="btn btn--o" href="/engines/">All {{ len .Site.Data.engines.engines }} engines →</a></p>
251
251
</div>
252
252
</section>
253
253
@@ -363,14 +363,14 @@ <h2 class="rv mt1" style="max-width:16ch">An agent you can drop on any box you S
363
363
<h2class="rv mt1" style="max-width:22ch">Forty-eight thousand stars, and still shipping every week.</h2>
364
364
<divclass="trend rv">
365
365
<imgsrc="/img/trendshift.svg" alt="LocalAI on Trendshift">
366
-
<p>LocalAI has been <b>trending on GitHub</b> repeatedly since it launched, and it is one of the most starred self-hosted AI projects there is. <b>224 people</b> have contributed code, <b>3,187</b> are in the Discord, and the README is kept translated into <b>eight languages</b> because the users are everywhere.</p>
366
+
<p>LocalAI has been <b>trending on GitHub</b> repeatedly since it launched, and it is one of the most starred self-hosted AI projects there is. <b>{{ lang.FormatNumberCustom 0 .Site.Data.stats.contributors }} people</b> have contributed code, <b>{{ lang.FormatNumberCustom 0 .Site.Data.stats.discord }}</b> are in the Discord, and the README is kept translated into <b>eight languages</b> because the users are everywhere.</p>
0 commit comments