The 2026-10-09 wire aliases become the service names everywhere: systemd units, serve scripts, env files and FRANK_* variables, deploy-plan/deploy-remote service keys, container names, Prometheus job names + alert rules, Grafana dashboard queries, bats seams, runbook filenames, homepage/AGENTS lore, and historical prose. Rollback tags renamed in lockstep. Residue in the tree: zero. Retired frank-medium/small/npu names are history and stay. Known casualty: scripts/patches/*.patch context lines were rewritten; those retired-era vLLM-fork patches no longer apply byte-exact.
354 lines
32 KiB
HTML
354 lines
32 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Most Popular Self-Hosted AI Apps — June–September 2026</title>
|
||
<style>
|
||
:root {
|
||
--bg: #0d1117;
|
||
--bg-alt: #161b22;
|
||
--panel: #1c2128;
|
||
--border: #30363d;
|
||
--text: #e6edf3;
|
||
--text-dim: #8b949e;
|
||
--accent: #58a6ff;
|
||
--accent2: #3fb950;
|
||
--warn: #d29922;
|
||
--hot: #f85149;
|
||
--code-bg: #0d1117;
|
||
}
|
||
* { box-sizing: border-box; }
|
||
body {
|
||
margin: 0;
|
||
background: var(--bg);
|
||
color: var(--text);
|
||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
|
||
line-height: 1.6;
|
||
font-size: 15px;
|
||
}
|
||
.wrap { max-width: 1080px; margin: 0 auto; padding: 32px 24px 80px; }
|
||
header {
|
||
border-bottom: 1px solid var(--border);
|
||
padding-bottom: 24px;
|
||
margin-bottom: 32px;
|
||
}
|
||
h1 { font-size: 30px; margin: 0 0 8px; font-weight: 700; letter-spacing: -0.02em; }
|
||
.subtitle { color: var(--text-dim); font-size: 15px; margin: 0 0 16px; }
|
||
.meta { display: flex; flex-wrap: wrap; gap: 8px; }
|
||
.chip {
|
||
background: var(--panel); border: 1px solid var(--border);
|
||
border-radius: 20px; padding: 3px 12px; font-size: 12px; color: var(--text-dim);
|
||
}
|
||
.chip b { color: var(--text); font-weight: 600; }
|
||
h2 {
|
||
font-size: 21px; margin: 44px 0 16px; padding-bottom: 8px;
|
||
border-bottom: 1px solid var(--border); font-weight: 650; letter-spacing: -0.01em;
|
||
}
|
||
h3 { font-size: 16px; margin: 24px 0 8px; font-weight: 650; }
|
||
p { margin: 10px 0; }
|
||
a { color: var(--accent); text-decoration: none; }
|
||
a:hover { text-decoration: underline; }
|
||
code {
|
||
background: var(--code-bg); border: 1px solid var(--border);
|
||
border-radius: 4px; padding: 1px 6px; font-size: 13px;
|
||
font-family: "SF Mono", Monaco, Consolas, monospace;
|
||
}
|
||
.lede { font-size: 16px; color: var(--text); }
|
||
.lede b { color: var(--accent); }
|
||
/* Summary cards */
|
||
.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px; margin: 20px 0; }
|
||
.card {
|
||
background: var(--panel); border: 1px solid var(--border);
|
||
border-radius: 10px; padding: 16px 18px;
|
||
}
|
||
.card .num { font-size: 26px; font-weight: 700; color: var(--accent); letter-spacing: -0.02em; }
|
||
.card .lbl { font-size: 13px; color: var(--text-dim); margin-top: 4px; }
|
||
/* Table */
|
||
table { width: 100%; border-collapse: collapse; margin: 16px 0; font-size: 14px; }
|
||
th, td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--border); vertical-align: top; }
|
||
th { color: var(--text-dim); font-weight: 600; font-size: 12px; text-transform: uppercase; letter-spacing: 0.04em; }
|
||
tr:hover td { background: var(--bg-alt); }
|
||
.rank { color: var(--text-dim); font-weight: 700; width: 32px; }
|
||
.stars { font-variant-numeric: tabular-nums; font-weight: 600; text-align: right; white-space: nowrap; }
|
||
.cat { color: var(--text-dim); font-size: 13px; }
|
||
.lic { font-size: 12px; color: var(--text-dim); }
|
||
.rel { font-size: 12px; color: var(--text-dim); white-space: nowrap; }
|
||
/* Bar chart */
|
||
.chart { margin: 20px 0 8px; }
|
||
.bar-row { display: grid; grid-template-columns: 160px 1fr 70px; align-items: center; gap: 12px; margin: 5px 0; }
|
||
.bar-label { font-size: 13px; color: var(--text); text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
||
.bar-track { background: var(--bg-alt); border-radius: 4px; height: 20px; overflow: hidden; }
|
||
.bar-fill { height: 100%; border-radius: 4px; background: linear-gradient(90deg, #1f6feb, #58a6ff); }
|
||
.bar-val { font-size: 12px; color: var(--text-dim); font-variant-numeric: tabular-nums; }
|
||
/* App detail cards */
|
||
.app {
|
||
background: var(--panel); border: 1px solid var(--border);
|
||
border-radius: 10px; padding: 16px 20px; margin: 14px 0;
|
||
}
|
||
.app-head { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
|
||
.app-head h3 { margin: 0; font-size: 17px; }
|
||
.app-head .tag { font-size: 12px; color: var(--text-dim); }
|
||
.app-head .tag .st { color: var(--accent); font-weight: 600; }
|
||
.app p { margin: 8px 0 0; font-size: 14px; color: var(--text); }
|
||
.fit { display: inline-block; font-size: 11px; font-weight: 700; padding: 2px 10px; border-radius: 12px; margin-left: 8px; vertical-align: middle; }
|
||
.fit.exc { background: rgba(63,185,80,0.15); color: var(--accent2); border: 1px solid rgba(63,185,80,0.4); }
|
||
.fit.good { background: rgba(88,166,255,0.15); color: var(--accent); border: 1px solid rgba(88,166,255,0.4); }
|
||
.fit.ok { background: rgba(210,153,34,0.15); color: var(--warn); border: 1px solid rgba(210,153,34,0.4); }
|
||
.fit.iso { background: rgba(248,81,73,0.12); color: var(--hot); border: 1px solid rgba(248,81,73,0.4); }
|
||
/* Best practices */
|
||
ol.bp { counter-reset: bp; list-style: none; padding: 0; margin: 16px 0; }
|
||
ol.bp li {
|
||
counter-increment: bp; position: relative; padding: 12px 16px 12px 52px;
|
||
background: var(--panel); border: 1px solid var(--border);
|
||
border-radius: 8px; margin: 10px 0; font-size: 14px;
|
||
}
|
||
ol.bp li::before {
|
||
content: counter(bp); position: absolute; left: 14px; top: 12px;
|
||
width: 26px; height: 26px; border-radius: 50%;
|
||
background: var(--accent); color: #0d1117; font-weight: 700;
|
||
display: flex; align-items: center; justify-content: center; font-size: 14px;
|
||
}
|
||
ol.bp li b { color: var(--accent); }
|
||
.note {
|
||
background: rgba(88,166,255,0.08); border-left: 3px solid var(--accent);
|
||
padding: 12px 16px; border-radius: 0 6px 6px 0; margin: 16px 0; font-size: 14px;
|
||
}
|
||
.note.warn { background: rgba(210,153,34,0.08); border-left-color: var(--warn); }
|
||
footer {
|
||
margin-top: 48px; padding-top: 24px; border-top: 1px solid var(--border);
|
||
color: var(--text-dim); font-size: 13px;
|
||
}
|
||
footer a { color: var(--accent); }
|
||
.cite-list { columns: 2; column-gap: 32px; font-size: 13px; }
|
||
.cite-list li { margin: 4px 0; break-inside: avoid; }
|
||
@media (max-width: 640px) { .cite-list { columns: 1; } .bar-row { grid-template-columns: 110px 1fr 60px; } }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="wrap">
|
||
<header>
|
||
<h1>Most Popular Self-Hosted AI Apps</h1>
|
||
<p class="subtitle">Ranked landscape for the June–September 2026 window, with homelab fit and adoption best practices for a guard-chained Podman/Quadlet fleet.</p>
|
||
<div class="meta">
|
||
<span class="chip">Date <b>2026-09-22</b></span>
|
||
<span class="chip">Stars + licenses <b>GitHub API, 2026-09-22</b></span>
|
||
<span class="chip">Trend signal <b>release cadence, Jun–Sep 2026</b></span>
|
||
<span class="chip">Fleet <b>2× GPU servers + macOS mini</b></span>
|
||
</div>
|
||
</header>
|
||
|
||
<p class="lede">The self-hosted AI stack in mid-2026 consolidated into a few very large, very active projects, and the center of gravity shifted hard toward <b>agents</b> over the last quarter. Star counts are exact (GitHub API, 2026-09-22); "trending" is evidenced by release activity dated June–September 2026, since GitHub does not expose star-growth rate.</p>
|
||
|
||
<div class="cards">
|
||
<div class="card"><div class="num">390,235</div><div class="lbl">OpenClaw — most-starred, fastest-growing repo; 2.0 shipped 2026-09-01</div></div>
|
||
<div class="card"><div class="num">15</div><div class="lbl">apps ranked, all with Jun–Sep 2026 release activity</div></div>
|
||
<div class="card"><div class="num">5</div><div class="lbl">audio honorable mentions (TTS/STT)</div></div>
|
||
<div class="card"><div class="num">11</div><div class="lbl">adoption best practices for a guard-chained homelab</div></div>
|
||
</div>
|
||
|
||
<h2>Summary</h2>
|
||
<p><b>1. Agents are the category of 2026.</b> OpenClaw (390,235★, MIT) is the single most-starred self-hosted AI project and the fastest-growing repo on GitHub; it shipped a major <b>2.0 rewrite on 1 September 2026</b> (933 contributors, 16,000+ PRs). Nous Research's <b>Hermes Agent</b> (247,907★, MIT) is a close second and releases weekly. Both are model-agnostic orchestration layers that run on your own hardware and can point at local llama.cpp/vLLM/Ollama endpoints.</p>
|
||
<p><b>2. The inference + UI layer is mature and huge.</b> Ollama (181,444★), llama.cpp (129,149★), and vLLM (92,405★) are the runtimes; <b>Open WebUI</b> (152,784★) is the dominant chat UI; <b>ComfyUI</b> (134,407★, GPL-3.0) is the dominant image/video-gen GUI. All release frequently in the window.</p>
|
||
<p><b>3. RAG/agent-platforms and the audio stack round out the field.</b> Dify (156,835★), RAGFlow (91,138★), AnythingLLM (66,318★) for RAG/workflows; whisper.cpp (53,852★) + faster-whisper (25,512★) for STT; Chatterbox (26,515★), Piper (11,287★), Kokoro-82M (8,933★) for TTS; Unsloth (76,560★) for fine-tuning.</p>
|
||
<div class="note"><b>Strongest fits for this fleet:</b> Open WebUI (chat UI over the existing llama.cpp/vLLM endpoints), ComfyUI (image gen, already integrated with Open WebUI), Ollama (OpenAI-compatible runtime), Dify and RAGFlow (RAG/agent platforms), and whisper.cpp / Piper / Kokoro for a local voice stack. OpenClaw and Hermes are the highest-buzz new arrivals, well-suited to a homelab server, with the caveat that they are tool/shell-access agents and need the strongest isolation.</div>
|
||
|
||
<h2>Ranked List — Top 15 by Popularity</h2>
|
||
<div class="chart">
|
||
<div class="bar-row"><div class="bar-label">OpenClaw</div><div class="bar-track"><div class="bar-fill" style="width:100%"></div></div><div class="bar-val">390.2k</div></div>
|
||
<div class="bar-row"><div class="bar-label">Hermes Agent</div><div class="bar-track"><div class="bar-fill" style="width:63.5%"></div></div><div class="bar-val">247.9k</div></div>
|
||
<div class="bar-row"><div class="bar-label">Ollama</div><div class="bar-track"><div class="bar-fill" style="width:46.5%"></div></div><div class="bar-val">181.4k</div></div>
|
||
<div class="bar-row"><div class="bar-label">Dify</div><div class="bar-track"><div class="bar-fill" style="width:40.2%"></div></div><div class="bar-val">156.8k</div></div>
|
||
<div class="bar-row"><div class="bar-label">Open WebUI</div><div class="bar-track"><div class="bar-fill" style="width:39.2%"></div></div><div class="bar-val">152.8k</div></div>
|
||
<div class="bar-row"><div class="bar-label">ComfyUI</div><div class="bar-track"><div class="bar-fill" style="width:34.4%"></div></div><div class="bar-val">134.4k</div></div>
|
||
<div class="bar-row"><div class="bar-label">llama.cpp</div><div class="bar-track"><div class="bar-fill" style="width:33.1%"></div></div><div class="bar-val">129.1k</div></div>
|
||
<div class="bar-row"><div class="bar-label">vLLM</div><div class="bar-track"><div class="bar-fill" style="width:23.7%"></div></div><div class="bar-val">92.4k</div></div>
|
||
<div class="bar-row"><div class="bar-label">RAGFlow</div><div class="bar-track"><div class="bar-fill" style="width:23.4%"></div></div><div class="bar-val">91.1k</div></div>
|
||
<div class="bar-row"><div class="bar-label">LobeChat</div><div class="bar-track"><div class="bar-fill" style="width:21.2%"></div></div><div class="bar-val">82.7k</div></div>
|
||
<div class="bar-row"><div class="bar-label">Unsloth</div><div class="bar-track"><div class="bar-fill" style="width:19.6%"></div></div><div class="bar-val">76.6k</div></div>
|
||
<div class="bar-row"><div class="bar-label">AnythingLLM</div><div class="bar-track"><div class="bar-fill" style="width:17.0%"></div></div><div class="bar-val">66.3k</div></div>
|
||
<div class="bar-row"><div class="bar-label">whisper.cpp</div><div class="bar-track"><div class="bar-fill" style="width:13.8%"></div></div><div class="bar-val">53.9k</div></div>
|
||
<div class="bar-row"><div class="bar-label">LibreChat</div><div class="bar-track"><div class="bar-fill" style="width:11.4%"></div></div><div class="bar-val">44.6k</div></div>
|
||
<div class="bar-row"><div class="bar-label">Tabby</div><div class="bar-track"><div class="bar-fill" style="width:8.7%"></div></div><div class="bar-val">33.9k</div></div>
|
||
</div>
|
||
|
||
<table>
|
||
<thead><tr><th>#</th><th>App</th><th>Category</th><th style="text-align:right">Stars</th><th>License</th><th>Latest in window</th></tr></thead>
|
||
<tbody>
|
||
<tr><td class="rank">1</td><td><a href="https://github.com/openclaw/openclaw">OpenClaw</a></td><td class="cat">Agents</td><td class="stars">390,235</td><td class="lic">MIT</td><td class="rel">v2026.9.5 (09-19); 2.0 (09-01)</td></tr>
|
||
<tr><td class="rank">2</td><td><a href="https://github.com/NousResearch/hermes-agent">Hermes Agent</a></td><td class="cat">Agents</td><td class="stars">247,907</td><td class="lic">MIT</td><td class="rel">v2026.9.21 (09-21)</td></tr>
|
||
<tr><td class="rank">3</td><td><a href="https://github.com/ollama/ollama">Ollama</a></td><td class="cat">LLM runtime</td><td class="stars">181,444</td><td class="lic">MIT</td><td class="rel">active (pushed 09-21)</td></tr>
|
||
<tr><td class="rank">4</td><td><a href="https://github.com/langgenius/dify">Dify</a></td><td class="cat">Agent platform / RAG</td><td class="stars">156,835</td><td class="lic">Modified Apache-2.0</td><td class="rel">1.17.1 (09-10)</td></tr>
|
||
<tr><td class="rank">5</td><td><a href="https://github.com/open-webui/open-webui">Open WebUI</a></td><td class="cat">Chat UI</td><td class="stars">152,784</td><td class="lic">Open WebUI License (BSD-3)</td><td class="rel">v0.11.4 (09-21)</td></tr>
|
||
<tr><td class="rank">6</td><td><a href="https://github.com/Comfy-Org/ComfyUI">ComfyUI</a></td><td class="cat">Image / video gen</td><td class="stars">134,407</td><td class="lic">GPL-3.0</td><td class="rel">v0.37.0 (09-21)</td></tr>
|
||
<tr><td class="rank">7</td><td><a href="https://github.com/ggml-org/llama.cpp">llama.cpp</a></td><td class="cat">LLM runtime</td><td class="stars">129,149</td><td class="lic">MIT</td><td class="rel">active (pushed 09-22)</td></tr>
|
||
<tr><td class="rank">8</td><td><a href="https://github.com/vllm-project/vllm">vLLM</a></td><td class="cat">LLM inference engine</td><td class="stars">92,405</td><td class="lic">Apache-2.0</td><td class="rel">active (pushed 09-22)</td></tr>
|
||
<tr><td class="rank">9</td><td><a href="https://github.com/infiniflow/ragflow">RAGFlow</a></td><td class="cat">RAG engine</td><td class="stars">91,138</td><td class="lic">Apache-2.0</td><td class="rel">v0.27.2 (09-10)</td></tr>
|
||
<tr><td class="rank">10</td><td><a href="https://github.com/lobehub/lobehub">LobeChat</a></td><td class="cat">Chat UI / agent ops</td><td class="stars">82,748</td><td class="lic">LobeHub Community License</td><td class="rel">active (pushed 09-22)</td></tr>
|
||
<tr><td class="rank">11</td><td><a href="https://github.com/unslothai/unsloth">Unsloth</a></td><td class="cat">Fine-tuning</td><td class="stars">76,560</td><td class="lic">Apache-2.0</td><td class="rel">active (pushed 09-22)</td></tr>
|
||
<tr><td class="rank">12</td><td><a href="https://github.com/Mintplex-Labs/anything-llm">AnythingLLM</a></td><td class="cat">RAG / local agent</td><td class="stars">66,318</td><td class="lic">MIT</td><td class="rel">active (pushed 09-21)</td></tr>
|
||
<tr><td class="rank">13</td><td><a href="https://github.com/ggml-org/whisper.cpp">whisper.cpp</a></td><td class="cat">Speech-to-text</td><td class="stars">53,852</td><td class="lic">MIT</td><td class="rel">active (pushed 09-22)</td></tr>
|
||
<tr><td class="rank">14</td><td><a href="https://github.com/danny-avila/LibreChat">LibreChat</a></td><td class="cat">Chat UI</td><td class="stars">44,608</td><td class="lic">MIT</td><td class="rel">active (pushed 09-22)</td></tr>
|
||
<tr><td class="rank">15</td><td><a href="https://github.com/TabbyML/tabby">Tabby</a></td><td class="cat">AI coding assistant</td><td class="stars">33,889</td><td class="lic">Apache-2.0 (ee/ separate)</td><td class="rel">last push 2026-06-30</td></tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<h2>Per-App Breakdown</h2>
|
||
|
||
<div class="app">
|
||
<div class="app-head"><h3>OpenClaw <span class="fit iso">ISOLATE</span></h3><span class="tag"><span class="st">390,235★</span> · MIT · Agents</span></div>
|
||
<p>Self-hosted personal AI agent / orchestration layer (not a model). Connects to cloud APIs, subscriptions, API providers, and <b>local models</b>; drives files, browser, terminal/shell, and messaging channels. 2.0 rebuilt the browser app as the primary interface, added shared cloud sessions, simplified onboarding. Node 24 (22.14+) + Docker; minimal footprint for API-based LLMs (2 vCPU / 2–4 GB RAM). <b>Caveat:</b> community reaction to 2.0 was mixed — migration problems, broken gateways, lost automations, model-auth issues (InfoQ). Tool/shell-access agent → strongest isolation.</p>
|
||
</div>
|
||
|
||
<div class="app">
|
||
<div class="app-head"><h3>Hermes Agent <span class="fit iso">ISOLATE</span></h3><span class="tag"><span class="st">247,907★</span> · MIT · Agents</span></div>
|
||
<p>Nous Research's personal agent, centered on persistent memory and cross-platform messaging (Mac, iOS, web, voice, email, Telegram, Slack). Model-agnostic; Docker/Podman; config in <code>~/.hermes/config.yaml</code>. Releases weekly. Tool-access agent → isolate. Already on this fleet (see [[Hermes]] in the vault).</p>
|
||
</div>
|
||
|
||
<div class="app">
|
||
<div class="app-head"><h3>Ollama <span class="fit exc">EXCELLENT</span></h3><span class="tag"><span class="st">181,444★</span> · MIT · LLM runtime</span></div>
|
||
<p>The de-facto standard local LLM runtime; OpenAI-compatible API (default <code>:11434</code>) that nearly every app in this list consumes. The default provider for JobSync, Resume Matcher, AnythingLLM, and more. The easiest way to expose local models to other containers.</p>
|
||
</div>
|
||
|
||
<div class="app">
|
||
<div class="app-head"><h3>Dify <span class="fit good">GOOD</span></h3><span class="tag"><span class="st">156,835★</span> · Modified Apache-2.0 · Agent platform / RAG</span></div>
|
||
<p>Full LLMOps/agent platform: prompt IDE, RAG pipeline, agent/workflow builder, model management. <code>docker compose</code> full stack. Modified Apache-2.0: commercial use allowed, but <b>multi-tenant operation requires a commercial license</b> (one tenant = one workspace) — fine for a single-workspace homelab.</p>
|
||
</div>
|
||
|
||
<div class="app">
|
||
<div class="app-head"><h3>Open WebUI <span class="fit exc">EXCELLENT</span></h3><span class="tag"><span class="st">152,784★</span> · Open WebUI License (BSD-3) · Chat UI</span></div>
|
||
<p>The dominant ChatGPT-style chat UI: multi-user auth, model switching, tools, pipelines, RAG, image gen (ComfyUI as engine), agents. Single container; connect to Ollama / llama.cpp / vLLM via base-URL. Already this fleet's chat frontend, wired to ComfyUI for image gen.</p>
|
||
</div>
|
||
|
||
<div class="app">
|
||
<div class="app-head"><h3>ComfyUI <span class="fit exc">EXCELLENT</span></h3><span class="tag"><span class="st">134,407★</span> · GPL-3.0 · Image / video gen</span></div>
|
||
<p>Node-based image <i>and</i> video generation (SD/SDXL/Flux/LLaDA/Qwen-Image). The most popular local image-gen frontend in 2026. Repo moved to the <code>Comfy-Org</code> org. Already running on this fleet (Qwen-Image 2.1 GGUF) and wired as the Open WebUI image engine.</p>
|
||
</div>
|
||
|
||
<div class="app">
|
||
<div class="app-head"><h3>llama.cpp <span class="fit exc">EXCELLENT</span></h3><span class="tag"><span class="st">129,149★</span> · MIT · LLM runtime</span></div>
|
||
<p>The reference GGUF inference engine; <code>llama-server</code> exposes an OpenAI-compatible endpoint. Backbone of this fleet's frank-zealot/frank-dragoon endpoints. Runs on CPU, CUDA, ROCm, Vulkan, Metal.</p>
|
||
</div>
|
||
|
||
<div class="app">
|
||
<div class="app-head"><h3>vLLM <span class="fit exc">EXCELLENT</span></h3><span class="tag"><span class="st">92,405★</span> · Apache-2.0 · LLM inference engine</span></div>
|
||
<p>High-throughput PagedAttention serving with an OpenAI-compatible API; the multi-GPU option (frank-medium runs vLLM tensor-parallel across two R9700s).</p>
|
||
</div>
|
||
|
||
<div class="app">
|
||
<div class="app-head"><h3>RAGFlow <span class="fit good">GOOD</span></h3><span class="tag"><span class="st">91,138★</span> · Apache-2.0 · RAG engine</span></div>
|
||
<p>RAG engine with deep document understanding (PDFs, spreadsheets, scans) and source citations. <code>docker compose</code> full stack; runs fully against local models (Ollama). Budget disk for the document index.</p>
|
||
</div>
|
||
|
||
<div class="app">
|
||
<div class="app-head"><h3>LobeChat <span class="fit good">GOOD</span></h3><span class="tag"><span class="st">82,748★</span> · LobeHub Community License · Chat UI / agent ops</span></div>
|
||
<p>Polished chat UI grown into an agent-operations layer (plugins, agents, scheduled tasks). LobeHub Community License: commercial use allowed, but <b>distributing a derivative requires a commercial license</b>.</p>
|
||
</div>
|
||
|
||
<div class="app">
|
||
<div class="app-head"><h3>Unsloth <span class="fit ok">ONE-OFF</span></h3><span class="tag"><span class="st">76,560★</span> · Apache-2.0 · Fine-tuning</span></div>
|
||
<p>The leading open-source fine-tuning library (LoRA/QLoRA/SFT) + GGUF quantization + a local run/train UI. GPU required; a batch job, not a long-running service. Run transiently on a GPU server, then serve the resulting GGUF via llama.cpp.</p>
|
||
</div>
|
||
|
||
<div class="app">
|
||
<div class="app-head"><h3>AnythingLLM <span class="fit good">GOOD</span></h3><span class="tag"><span class="st">66,318★</span> · MIT · RAG / local agent</span></div>
|
||
<p>Local-first RAG + agent workspace: document ingestion, chat over your data, agent mode, multi-user. Ollama first-class. Single container, low footprint — a good local RAG entry point.</p>
|
||
</div>
|
||
|
||
<div class="app">
|
||
<div class="app-head"><h3>whisper.cpp <span class="fit good">GOOD</span></h3><span class="tag"><span class="st">53,852★</span> · MIT · Speech-to-text</span></div>
|
||
<p>OpenAI Whisper in C/C++; lightweight fully-local STT on CPU / Metal / CUDA; <code>whisper-server</code> for an HTTP API. No cloud, no telemetry. Put it behind Caddy for a LAN transcription API.</p>
|
||
</div>
|
||
|
||
<div class="app">
|
||
<div class="app-head"><h3>LibreChat <span class="fit good">GOOD</span></h3><span class="tag"><span class="st">44,608★</span> · MIT · Chat UI</span></div>
|
||
<p>Multi-provider, multi-user chat UI with agents, MCP, and actions. <code>docker compose</code> (app + MongoDB + Redis).</p>
|
||
</div>
|
||
|
||
<div class="app">
|
||
<div class="app-head"><h3>Tabby <span class="fit good">GOOD</span></h3><span class="tag"><span class="st">33,889★</span> · Apache-2.0 (ee/ separate) · AI coding assistant</span></div>
|
||
<p>Self-hosted AI coding assistant (Copilot-style) against your own models. Apache-2.0 core; <code>ee/</code> directory under a separate enterprise license. Last push 2026-06-30 (quieter since).</p>
|
||
</div>
|
||
|
||
<h3>Audio honorable mentions (TTS/STT)</h3>
|
||
<table>
|
||
<thead><tr><th>App</th><th>Category</th><th style="text-align:right">Stars</th><th>License</th></tr></thead>
|
||
<tbody>
|
||
<tr><td><a href="https://github.com/resemble-ai/chatterbox">Chatterbox</a></td><td class="cat">TTS</td><td class="stars">26,515</td><td class="lic">MIT</td></tr>
|
||
<tr><td><a href="https://github.com/SYSTRAN/faster-whisper">faster-whisper</a></td><td class="cat">STT</td><td class="stars">25,512</td><td class="lic">MIT</td></tr>
|
||
<tr><td><a href="https://github.com/rhasspy/piper">Piper TTS</a></td><td class="cat">TTS</td><td class="stars">11,287</td><td class="lic">MIT</td></tr>
|
||
<tr><td><a href="https://github.com/hexgrad/kokoro">Kokoro-82M</a></td><td class="cat">TTS</td><td class="stars">8,933</td><td class="lic">Apache-2.0</td></tr>
|
||
<tr><td><a href="https://github.com/MisoLabsAI/MisoTTS">MisoTTS</a></td><td class="cat">TTS</td><td class="stars">3,239</td><td class="lic">Modified MIT</td></tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<h2>Homelab Fit (Podman/Quadlet + Caddy + local LLM endpoints)</h2>
|
||
<table>
|
||
<thead><tr><th>App</th><th>Fit</th><th>Notes for this fleet</th></tr></thead>
|
||
<tbody>
|
||
<tr><td><b>Open WebUI</b></td><td><span class="fit exc">EXCELLENT</span></td><td class="cat">Single container; point at existing llama.cpp/vLLM/Ollama via base-URL. Already the fleet's chat frontend.</td></tr>
|
||
<tr><td><b>ComfyUI</b></td><td><span class="fit exc">EXCELLENT</span></td><td class="cat">GPU container (already running for Qwen-Image 2.1 GGUF). Serves the Open WebUI image-gen path.</td></tr>
|
||
<tr><td><b>Ollama</b></td><td><span class="fit exc">EXCELLENT</span></td><td class="cat">Easiest OpenAI-compatible runtime for the other apps; expose on LAN / <code>host.containers.internal</code>.</td></tr>
|
||
<tr><td><b>Dify</b></td><td><span class="fit good">GOOD</span></td><td class="cat">compose → Quadlet. Multi-tenant restriction moot for single-workspace. Heavier stack (DB + Redis + vector store).</td></tr>
|
||
<tr><td><b>RAGFlow</b></td><td><span class="fit good">GOOD</span></td><td class="cat">compose → Quadlet. Runs fully against local models. Budget disk for the document index.</td></tr>
|
||
<tr><td><b>AnythingLLM</b></td><td><span class="fit good">GOOD</span></td><td class="cat">Single container, Ollama-first, low footprint. Good local RAG entry point.</td></tr>
|
||
<tr><td><b>LibreChat</b></td><td><span class="fit good">GOOD</span></td><td class="cat">compose (app + Mongo + Redis) → Quadlet. Multi-user, MCP/agents.</td></tr>
|
||
<tr><td><b>LobeChat</b></td><td><span class="fit good">GOOD</span></td><td class="cat">Single Postgres-backed container. Watch the Community License if redistributing a derivative.</td></tr>
|
||
<tr><td><b>whisper.cpp / faster-whisper</b></td><td><span class="fit good">GOOD</span></td><td class="cat">Lightweight STT; <code>whisper-server</code> behind Caddy for a LAN transcription API. CPU-fine.</td></tr>
|
||
<tr><td><b>Piper / Kokoro / Chatterbox</b></td><td><span class="fit good">GOOD</span></td><td class="cat">Local TTS; pair with whisper.cpp for a fully-local voice loop. Chatterbox wants a GPU; Piper/Kokoro run on CPU.</td></tr>
|
||
<tr><td><b>Tabby</b></td><td><span class="fit good">GOOD</span></td><td class="cat">compose → Quadlet; self-hosted coding assistant against local models.</td></tr>
|
||
<tr><td><b>Unsloth</b></td><td><span class="fit ok">ONE-OFF</span></td><td class="cat">Fine-tuning is a batch job, not a service. Run transiently, then serve the GGUF via llama.cpp.</td></tr>
|
||
<tr><td><b>OpenClaw / Hermes</b></td><td><span class="fit iso">ISOLATE</span></td><td class="cat">Node.js / container agent pointing at local LLMs. Highest buzz, but tool/shell access — non-root, restricted network, vetted skills, behind the guard chain.</td></tr>
|
||
</tbody>
|
||
</table>
|
||
<div class="note warn"><b>GPU co-tenancy note:</b> ComfyUI, vLLM, Unsloth, and Chatterbox all want VRAM. Size new containers against the existing LLM endpoints' held VRAM to avoid OOMing a production endpoint. The macOS mini is a natural home for the low-footprint, CPU-friendly apps (Open WebUI, AnythingLLM, whisper.cpp, Piper/Kokoro, LibreChat, LobeChat) via Metal-backed llama.cpp/Ollama.</div>
|
||
|
||
<h2>Best Practices — Adopting a New App Into a Guard-Chained Homelab</h2>
|
||
<ol class="bp">
|
||
<li><b>Route everything through the existing guard chain.</b> Put the app behind Caddy under the same Anubis+Authentik chain the fleet runs. Do not expose a new port directly; use the published-port cutover gate (confirm the port is free before starting, or pasta's bind fails and the failure hides behind <code>Restart=on-failure</code>).</li>
|
||
<li><b>Enable app-native auth and add SSO on top.</b> Turn on the app's built-in multi-user auth <i>and</i> gate it with Authentik SSO at the proxy. Defense in depth: the app's session + the outpost's claim-based auth.</li>
|
||
<li><b>Prefer local endpoints for the AI; keep PII on-prem.</b> Point RAG/chat/agent apps at local llama.cpp/vLLM/Ollama (base-URL override) so prompts and documents never leave the LAN. Reach the host runtime via <code>host.containers.internal</code>, not <code>localhost</code>.</li>
|
||
<li><b>Use Quadlet for boot persistence.</b> Convert every compose/<code>docker run</code> to Quadlet units. Remember the anonymous-volume trap — use named volumes for all app data.</li>
|
||
<li><b>Pin image tags and track release notes.</b> The window's clearest lesson: <b>OpenClaw 2.0 (2026-09-01) caused migration problems, broken gateways, and lost automations for some users.</b> Pin tags, read release notes, stage upgrades (test on the mini / a spare server first).</li>
|
||
<li><b>Isolate agents aggressively.</b> OpenClaw and Hermes have tool/shell/browser access. Non-root, restricted network, vetted skills/plugins only (supply-chain risk), full logging of tool execution.</li>
|
||
<li><b>Treat ingested content as untrusted (prompt injection).</b> RAG and agent apps ingest documents/web pages. Keep a human review step before any action; scope agent tool access to the minimum.</li>
|
||
<li><b>Protect the secrets the app stores.</b> API keys in env vars (or a vault), never committed. For apps that encrypt stored keys, set the encryption key <i>before</i> adding keys, never change it after.</li>
|
||
<li><b>Budget VRAM and co-tenancy.</b> Measure a new GPU container's VRAM against the endpoints already resident on the card.</li>
|
||
<li><b>Back up the data volumes.</b> Snapshot the app's data volume; agents store memory/state that is expensive to rebuild.</li>
|
||
<li><b>Mind the license.</b> ComfyUI is GPL-3.0; Dify and LobeChat are modified-Apache with multi-tenant / derivative restrictions; Tabby has an <code>ee/</code> directory. Fine for a single-workspace, non-redistributed homelab, but note them before derivative work.</li>
|
||
</ol>
|
||
|
||
<footer>
|
||
<p><b>Methodology & caveat on numbers:</b> Star counts and licenses were pulled directly from the GitHub API and each repo's LICENSE file on <b>2026-09-22</b> (exact values, not rounded). "Trending in the last 3 months" is evidenced by <b>release activity dated June–September 2026</b> (GitHub releases API) and press/community coverage, <i>not</i> by 3-month star deltas — GitHub does not expose star-growth rate, so cumulative star count is the popularity proxy and release cadence is the trend signal. Every numeric claim cites its source.</p>
|
||
<h3 style="color:var(--text-dim);font-size:13px;text-transform:uppercase;letter-spacing:0.04em;margin-top:24px">Sources</h3>
|
||
<ul class="cite-list">
|
||
<li><a href="https://github.com/openclaw/openclaw">OpenClaw</a> (MIT, 390,235★)</li>
|
||
<li><a href="https://github.com/NousResearch/hermes-agent">Hermes Agent</a> (MIT, 247,907★)</li>
|
||
<li><a href="https://github.com/ollama/ollama">Ollama</a> (MIT, 181,444★)</li>
|
||
<li><a href="https://github.com/langgenius/dify">Dify</a> (Modified Apache-2.0, 156,835★)</li>
|
||
<li><a href="https://github.com/open-webui/open-webui">Open WebUI</a> (152,784★)</li>
|
||
<li><a href="https://github.com/Comfy-Org/ComfyUI">ComfyUI</a> (GPL-3.0, 134,407★)</li>
|
||
<li><a href="https://github.com/ggml-org/llama.cpp">llama.cpp</a> (MIT, 129,149★)</li>
|
||
<li><a href="https://github.com/vllm-project/vllm">vLLM</a> (Apache-2.0, 92,405★)</li>
|
||
<li><a href="https://github.com/infiniflow/ragflow">RAGFlow</a> (Apache-2.0, 91,138★)</li>
|
||
<li><a href="https://github.com/lobehub/lobehub">LobeChat</a> (82,748★)</li>
|
||
<li><a href="https://github.com/unslothai/unsloth">Unsloth</a> (Apache-2.0, 76,560★)</li>
|
||
<li><a href="https://github.com/Mintplex-Labs/anything-llm">AnythingLLM</a> (MIT, 66,318★)</li>
|
||
<li><a href="https://github.com/ggml-org/whisper.cpp">whisper.cpp</a> (MIT, 53,852★)</li>
|
||
<li><a href="https://github.com/danny-avila/LibreChat">LibreChat</a> (MIT, 44,608★)</li>
|
||
<li><a href="https://github.com/TabbyML/tabby">Tabby</a> (Apache-2.0 + ee/, 33,889★)</li>
|
||
<li><a href="https://github.com/resemble-ai/chatterbox">Chatterbox</a> (MIT, 26,515★)</li>
|
||
<li><a href="https://github.com/SYSTRAN/faster-whisper">faster-whisper</a> (MIT, 25,512★)</li>
|
||
<li><a href="https://github.com/rhasspy/piper">Piper TTS</a> (MIT, 11,287★)</li>
|
||
<li><a href="https://github.com/hexgrad/kokoro">Kokoro-82M</a> (Apache-2.0, 8,933★)</li>
|
||
<li><a href="https://github.com/MisoLabsAI/MisoTTS">MisoTTS</a> (Modified MIT, 3,239★)</li>
|
||
<li>OpenClaw 2.0 release: <a href="https://www.infoq.com/news/2026/09/openclaw-2-release/">InfoQ</a></li>
|
||
<li>OpenClaw self-hosted architecture: <a href="https://hostkey.com/blog/208-what-is-openclaw-complete-self-hosted-ai-agent-guide/">hostkey.com</a></li>
|
||
<li>Release cadence: GitHub releases API, 2026-09-22</li>
|
||
</ul>
|
||
<p style="margin-top:20px">Companion markdown: <a href="Most%20Popular%20Self-Hosted%20AI%20Apps.md">Most Popular Self-Hosted AI Apps.md</a> · Part of the <a href="index.md">Research</a> section.</p>
|
||
</footer>
|
||
</div>
|
||
</body>
|
||
</html>
|