Files
serverAppConfigs/serverAppConfigs-docs/Research/popular-self-hosted-ai-apps.html
T
Frank 87721ab0fe rename frank-small → frank-secondary (Dankclaw llama.cpp :7771)
Cross-cutting rename of the current llama.cpp endpoint on the RTX 3090
(port 7771) from frank-small to frank-secondary:

- Service trio: scripts/{frank-small.env,frank-small.service,
  serve-frank-small.sh,download-frank-small.sh} → frank-secondary.*
- Test: tests/frank_small_unit.bats → tests/frank_secondary_unit.bats
- Runbooks: serverAppConfigs-docs/LLM/frank-small-*.md →
  frank-secondary-*.md (9 files); the FreeToken runbook stays
  freetoken-frank-small.md (it documents the retired CUDA-era service)
- Identifiers: FRANK_SMALL→FRANK_SECONDARY, llm_small→llm_secondary,
  LLM_SMALL_*→LLM_SECONDARY_*, deploy_llm_small→deploy_llm_secondary
- Historical references to the OLD frank-small (FreeToken/CUDA on the
  3090, and the Dankserver service that became frank-medium) are
  preserved verbatim — they describe what the service was called
  at the time.
2026-10-06 15:37:13 -07:00

354 lines
32 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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-secondary/frank-large 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 &amp; 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>