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 <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
This commit is contained in:
mudler's LocalAI [bot]
2026-07-31 09:18:51 +02:00
committed by GitHub
parent 94d5affcea
commit daab94134c
4 changed files with 214 additions and 0 deletions

48
ADOPTERS.md Normal file
View File

@@ -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
<!-- Keep alphabetical. Columns: Organisation | What for | Status -->
| 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.

View File

@@ -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."

View File

@@ -397,6 +397,35 @@
<span>Deutsch</span><span>Español</span><span>français</span><span>日本語</span>
<span>한국어</span><span>Português</span><span>Русский</span><span>中文</span>
</div>
<p class="kicker rv mt3">Who turns up around it</p>
<h3 class="eco__h rv">Engineers from these companies have put code in</h3>
<p class="eco__note rv">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
<a href="https://github.com/mudler/LocalAI/blob/master/ADOPTERS.md">ADOPTERS.md</a>.</p>
<ul class="eco eco--co rv">
{{- range .Site.Data.ecosystem.contributors.companies }}
<li><b>{{ .name }}</b><span>{{ .commits }} commit{{ if ne .commits 1 }}s{{ end }}{{ if gt .people 1 }}, {{ .people }} people{{ end }}</span></li>
{{- end }}
</ul>
<p class="eco__aside rv">Plus researchers at {{ delimit .Site.Data.ecosystem.contributors.academia ", " " and " }}.</p>
<h3 class="eco__h rv mt3">And these projects integrate it</h3>
<p class="eco__note rv">Each one references LocalAI in its own repository or documentation, so you can
verify any of them without taking our word for it.</p>
<div class="eco eco--int rv">
{{- range .Site.Data.ecosystem.integrations.projects }}
<a href="{{ .url }}"><b>{{ .name }}</b>{{ with .by }}<em>{{ . }}</em>{{ end }}<span>{{ .what }}</span></a>
{{- end }}
</div>
<h3 class="eco__h rv mt3">Written about elsewhere</h3>
<div class="eco eco--press rv">
{{- range .Site.Data.ecosystem.press.articles }}
<a href="{{ .url }}"><b>{{ .outlet }}</b><span>{{ .title }}</span><em>{{ .what }}</em></a>
{{- end }}
</div>
<p class="kicker rv mt3">What other people say</p>
<div class="headline">
<a class="hq rv" href="https://x.com/ggerganov/status/2065447087311917459">

View File

@@ -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}