From daab94134c220d5ace6cd6eb04caa8f92fcb1241 Mon Sep 17 00:00:00 2001 From: "mudler's LocalAI [bot]" <139863280+localai-bot@users.noreply.github.com> Date: Fri, 31 Jul 2026 09:18:51 +0200 Subject: [PATCH] feat(website): add an ecosystem band, and an ADOPTERS file to back it (#11248) Adds the "who turns up around this project" section, split into three lists because the evidence behind each one is a different strength and collapsing them into a single logo wall would overclaim. Contributors 21 companies whose engineers have commits here. Evidence is the commit history plus the employer on that person's public GitHub profile, so it is a claim about the person. Commit counts are shown next to each name, including the ones that are a single patch, because hiding that would be the whole problem. Integrations six projects that reference LocalAI in their own repository or documentation, which anyone can verify without asking us. Press four SUSE Communities articles about running LocalAI. Names are set in type rather than fetched as logos. A logo reads as endorsement, and a one-line typo fix from somebody who happens to work at a large company does not support that, quite apart from what their trademark policy says about it. ADOPTERS.md is the mechanism for the stronger claim. An organisation that wants to be listed as a user opens a pull request adding itself, which is both the evidence and the permission, and is publicly auditable afterwards. The file says plainly what the website does and does not claim, so the next person to ask "can we add some big names" has the answer in the repository. Assisted-by: Claude Code:claude-opus-5 [Bash] [Edit] [Write] [WebSearch] Signed-off-by: Ettore Di Giacinto Co-authored-by: Ettore Di Giacinto --- ADOPTERS.md | 48 ++++++++++++++++++ website/data/ecosystem.yaml | 97 +++++++++++++++++++++++++++++++++++++ website/layouts/index.html | 29 +++++++++++ website/static/css/site.css | 40 +++++++++++++++ 4 files changed, 214 insertions(+) create mode 100644 ADOPTERS.md create mode 100644 website/data/ecosystem.yaml diff --git a/ADOPTERS.md b/ADOPTERS.md new file mode 100644 index 000000000..08169038c --- /dev/null +++ b/ADOPTERS.md @@ -0,0 +1,48 @@ +# Adopters + +Organisations running LocalAI, listed by the people who run it. + +If your organisation uses LocalAI and you are happy to say so publicly, open a +pull request adding a row to the table below. That pull request is how we know +we have permission to list you, which is why we do not add anybody ourselves. + +You do not need to be a large company, and you do not need to disclose anything +sensitive. A sentence on what you use it for is more useful to other readers +than a logo. + +## How to add yourself + +1. Add a row to the table, in alphabetical order. +2. Use your organisation's usual name and a link to your site. +3. Say briefly what you use LocalAI for, and whether it is in production. +4. Open the pull request from an account that makes it plausible you speak for + the organisation, or say in the description who you are. We may ask. + +To be removed, open a pull request deleting your row, or email +[info@localai.io](mailto:info@localai.io). We will not ask why. + +## Who is using LocalAI + + + +| Organisation | What they use it for | Status | +|---|---|---| +| _Your organisation here_ | | | + +## What this list is not + +This is not a list of everyone who has ever starred the repository, and it is +not a list of the employers of people who have contributed a patch. Both of +those are easy to scrape and neither means what a logo wall implies. + +The website shows two separate things, both of which are checkable without +anybody's permission: + +- **Engineers from these companies have contributed code.** Evidence is the + commit history plus the employer on that person's public GitHub profile. It + is a claim about a person, not about their employer. +- **These projects integrate LocalAI.** Evidence is a reference to LocalAI in + that project's own repository or documentation. + +Those two lists live in [`website/data/ecosystem.yaml`](website/data/ecosystem.yaml). +This file is the third, stronger thing: organisations that chose to say so. diff --git a/website/data/ecosystem.yaml b/website/data/ecosystem.yaml new file mode 100644 index 000000000..76068c28f --- /dev/null +++ b/website/data/ecosystem.yaml @@ -0,0 +1,97 @@ +# Who shows up around LocalAI, and the evidence for each claim. +# +# Three lists, three different strengths of evidence. Keep them separate: a +# person fixing a typo is not their employer adopting the project, and saying +# so invites a takedown request. +# +# contributors someone with commits in this repository whose public GitHub +# profile names that employer. Evidence is the commit history +# plus a self-declared field, so the claim is about the person. +# integrations the other project's own repository or documentation +# references LocalAI. Checkable by anyone, needs no permission. +# press somebody else published a piece about LocalAI. +# +# Companies that want to say they use LocalAI add themselves to ADOPTERS.md at +# the repository root. That pull request is the permission, which is why the +# adopters list is kept apart from this file. +# +# Refreshed on 2026-07-31. Contribution counts are from the GitHub API. + +contributors: + note: "Engineers whose public profile names these employers have commits in the repository." + companies: + - { name: "Microsoft", people: 3, commits: 20 } + - { name: "Spectro Cloud", people: 3, commits: 11 } + - { name: "VictoriaMetrics", people: 1, commits: 5 } + - { name: "Acronis", people: 1, commits: 5 } + - { name: "BearingPoint", people: 1, commits: 4 } + - { name: "Zendesk", people: 1, commits: 3 } + - { name: "Nextcloud", people: 1, commits: 2 } + - { name: "Scaleway", people: 1, commits: 2 } + - { name: "Kubermatic", people: 1, commits: 2 } + - { name: "Avanade", people: 1, commits: 2 } + - { name: "IBM", people: 1, commits: 1 } + - { name: "Ableton", people: 1, commits: 1 } + - { name: "Atlassian", people: 1, commits: 1 } + - { name: "TikTok", people: 1, commits: 1 } + - { name: "CockroachDB", people: 1, commits: 1 } + - { name: "MediaTek", people: 1, commits: 1 } + - { name: "Samsung SDS", people: 1, commits: 1 } + - { name: "Ant Group", people: 1, commits: 1 } + - { name: "Deloitte", people: 1, commits: 1 } + - { name: "solo.io", people: 1, commits: 1 } + - { name: "Qonto", people: 1, commits: 1 } + academia: + - MIT + - University of Edinburgh + - RMIT + - Rochester Institute of Technology + - University of Miami + - USC + +integrations: + note: "These projects reference LocalAI in their own repository or documentation." + projects: + - name: AnythingLLM + by: Mintplex Labs + url: https://github.com/Mintplex-Labs/anything-llm + what: "Runs LocalAI as a model provider for its chat and document workspaces." + - name: langchain4j + url: https://github.com/langchain4j/langchain4j + what: "Ships a LocalAI module, so JVM applications can target it directly." + - name: LangChain + url: https://python.langchain.com/docs/integrations/providers/localai/ + what: "Documents LocalAI as a provider in the Python integrations." + - name: Flowise + by: FlowiseAI + url: https://github.com/FlowiseAI/Flowise + what: "Offers LocalAI as a node for chat and embeddings in its visual builder." + - name: AIKit + by: Sertac Ozercan + url: https://github.com/sozercan/aikit + what: "Builds fine-tuned models into images that serve through LocalAI." + - name: Kairos + url: https://github.com/kairos-io/kairos + what: "Ships LocalAI as part of its immutable Linux distribution." + +press: + note: "Written about LocalAI, by people who do not work on it." + articles: + - outlet: SUSE + title: "Running AI locally" + author: "Christian Huller" + date: "2025-11-24" + url: https://www.suse.com/c/running-ai-locally/ + what: "Deploying LocalAI on openSUSE, then driving it from VS Code." + - outlet: SUSE + title: "Adding own documents to your local AI using RAG" + url: https://www.suse.com/c/adding-own-documents-to-your-local-ai-using-rag/ + what: "Retrieval over your own documents, on top of LocalAI." + - outlet: SUSE + title: "Local AI and Confluence" + url: https://www.suse.com/c/local-ai-and-confluence/ + what: "Putting a Confluence space behind a local model." + - outlet: SUSE + title: "Introduction to AI training with openSUSE" + url: https://www.suse.com/c/introduction-to-ai-training-with-opensuse/ + what: "Training a LoRA and serving it through LocalAI." diff --git a/website/layouts/index.html b/website/layouts/index.html index 2de376e4f..6dd4aae92 100644 --- a/website/layouts/index.html +++ b/website/layouts/index.html @@ -397,6 +397,35 @@ DeutschEspañolfrançais日本語 한국어PortuguêsРусский中文 +

Who turns up around it

+

Engineers from these companies have put code in

+

Every name below is a person with commits in the repository whose public profile + names that employer. It is a claim about them, not about their employer, and the commit history is + there if you want to check it. Organisations that want to say they use LocalAI add themselves to + ADOPTERS.md.

+ +

Plus researchers at {{ delimit .Site.Data.ecosystem.contributors.academia ", " " and " }}.

+ +

And these projects integrate it

+

Each one references LocalAI in its own repository or documentation, so you can + verify any of them without taking our word for it.

+
+ {{- range .Site.Data.ecosystem.integrations.projects }} + {{ .name }}{{ with .by }}{{ . }}{{ end }}{{ .what }} + {{- end }} +
+ +

Written about elsewhere

+
+ {{- range .Site.Data.ecosystem.press.articles }} + {{ .outlet }}{{ .title }}{{ .what }} + {{- end }} +
+

What other people say

diff --git a/website/static/css/site.css b/website/static/css/site.css index 134ab4186..cb61e4fff 100644 --- a/website/static/css/site.css +++ b/website/static/css/site.css @@ -432,3 +432,43 @@ footer{background:var(--deep);border-top:1px solid var(--line2);padding:3rem 0 4 .rv,.fd{opacity:1;transform:none}.hero h1 u b{transform:none} .bars i,.sz i{transform:scaleX(1)} } + +/* ---- Ecosystem band ---------------------------------------------------- + Three lists, three strengths of evidence, kept visually distinct so a + contributor's employer never reads as a customer logo. Names are set in + type rather than fetched as logos: no trademark question, and it matches + the rest of the page. */ +.eco__h{font-size:clamp(1.25rem,2.3vw,1.7rem);margin-top:1.1rem} +.eco__note{color:var(--dim);font-size:.92rem;max-width:66ch;margin-top:.7rem} +.eco__note a{color:var(--cyan);text-decoration:underline;text-underline-offset:.2rem} +.eco__aside{color:var(--faint);font-size:.85rem;margin-top:1rem;max-width:66ch} + +.eco{list-style:none;padding:0;margin:1.4rem 0 0} +.eco--co{display:flex;flex-wrap:wrap;gap:.5rem} +.eco--co li{display:flex;align-items:baseline;gap:.5rem;padding:.5rem .8rem;border-radius:999px; + border:1px solid var(--line);background:rgba(255,255,255,.028);transition:border-color .22s,background .22s} +.eco--co li:hover{border-color:rgba(95,205,228,.5);background:rgba(95,205,228,.07)} +.eco--co b{font-size:.9rem;font-weight:600;color:var(--ink)} +.eco--co span{font-family:'Geist Mono',monospace;font-size:.6rem;color:var(--faint);white-space:nowrap} + +.eco--int{display:grid;gap:.8rem} +@media(min-width:700px){.eco--int{grid-template-columns:repeat(2,1fr)}} +@media(min-width:1020px){.eco--int{grid-template-columns:repeat(3,1fr)}} +.eco--int a{display:flex;flex-direction:column;gap:.3rem;padding:1.05rem 1.1rem;border-radius:10px; + border:1px solid var(--line);background:rgba(255,255,255,.028); + transition:transform .26s cubic-bezier(.16,1,.3,1),border-color .26s} +.eco--int a:hover{transform:translateY(-3px);border-color:rgba(95,205,228,.55)} +.eco--int b{font-size:1rem;color:var(--ink)} +.eco--int em{font-family:'Geist Mono',monospace;font-size:.6rem;font-style:normal;color:var(--cyan)} +.eco--int span{color:var(--dim);font-size:.85rem} + +.eco--press{display:grid;gap:.8rem} +@media(min-width:760px){.eco--press{grid-template-columns:repeat(2,1fr)}} +.eco--press a{display:grid;gap:.25rem;padding:.95rem 1.05rem;border-radius:10px; + border:1px solid var(--line);border-left:2px solid var(--cyan);background:rgba(255,255,255,.028); + transition:background .22s} +.eco--press a:hover{background:rgba(95,205,228,.07)} +.eco--press b{font-family:'Geist Mono',monospace;font-size:.62rem;letter-spacing:.12em; + text-transform:uppercase;color:var(--cyan)} +.eco--press span{color:var(--ink);font-size:.94rem} +.eco--press em{color:var(--faint);font-size:.82rem;font-style:normal}