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}