feat(homepage): split AI fleet into role-based groups on a dedicated AI tab

Move the ~22-service flat "AI Systems" group off the Main tab into a new
four-tab layout (Main / AI / Infrastructure / Toolchain). The AI tab sorts
the inference fleet by function into seven groups:

  AI - Inference        gen, char-rp, char-rp-reasoning, Granite summarizer
  AI - Eval & Retrieval Selene, Skywork Reward, Qwen3 rerank/embed, image-bench
  AI - Gateways & Chat  LiteLLM, Asset Engine, Gateway Chat, Open WebUI, ...
  AI - Speech (TTS)     Chatterbox Fast, Kokoro, mOrpheus
  AI - Audio Tools      Parakeet ASR, YT Voice Clipper
  AI - Image & Media    ComfyUI, Arbo
  AI - Dormant          stopped rollback seats + retired auditions

Relabel each stack's homepage.group so canonical stacks/ matches the live
containers on ana-ml2, ana-docker, and irv-ml1. Dormant stacks were refreshed
with `docker compose up --no-start` so they carry the new label while staying
stopped (compose-start rollback preserved). settings.yaml drives tab/order/
columns; services.yaml and README updated to the new scheme.
This commit is contained in:
2026-07-14 20:05:50 -07:00
parent 982c319d9f
commit 569e1af9ca
23 changed files with 113 additions and 50 deletions
+28 -14
View File
@@ -21,21 +21,32 @@ to the compose file and is gitignored.
## Layout convention
`settings.yaml` drives the group layout:
`settings.yaml` drives the group layout across four tabs:
```
Monitoring row x 3 fleet hubs (Beszel, Dozzle, Backrest, Uptime Kuma)
AI Systems row x 3 GPU inference services (llama-swap, vLLM embed/rerank)
Apps list user-facing apps (Gitea, Vaultwarden, Seafile, ...)
Media list Plex, Jellyfin
Games list Pterodactyl
UltraSeedbox row x 3 external bookmarks
Infra - ANA list Anaheim hardware + hypervisors + BMCs
Infra - NH3 list NH3 hardware + hypervisors
Infra - ESH list ESH home-lab hardware + hypervisors
Service Networking collapsed toolchain (Traefik, CrowdSec, Dockge, AdGuard, MQTT)
tab: Main
Notes / News / Monitoring / Apps / Media / Games / UltraSeedbox
tab: AI (the inference fleet, sorted by role)
AI - Inference LLM seats you call (gen, char-rp, char-rp-reasoning, summarizer)
AI - Eval & Retrieval judges, reward, rerank, embed, image-quality
AI - Gateways & Chat routing gateway, control plane, chat frontends
AI - Speech (TTS) text-to-speech engines
AI - Audio Tools speech-to-text + audio dataset tooling
AI - Image & Media image/video generation + pipelines
AI - Dormant stopped stacks (rollback seats, retired auditions)
tab: Infrastructure
Infra - ANA / NH3 / IRV / ESH hardware + hypervisors + BMCs, per site
tab: Toolchain
Service Networking / Toolchain plumbing, rarely clicked
```
The AI tab replaced the old single flat `AI Systems` group (2026-07-14): a
20+ service list read as one endless column, so it was split by function.
Group membership is the `homepage.group=AI - <role>` label on each compose
file; a label change only takes effect when the container is recreated
(`docker compose up -d <svc>`, or `up --no-start <svc>` to relabel a stopped
stack without starting it).
- **Manual entries** (this file) cover things without a Docker label:
firewalls, switches, NAS web UIs, BMCs, hypervisors, and the cross-site
hubs where direct IP:port URLs are stable.
@@ -49,15 +60,18 @@ Service Networking collapsed toolchain (Traefik, CrowdSec, Dockge, AdGuard, MQT
When deciding where a service lands, ask **function first**:
1. Does it watch or back up the fleet? -> `Monitoring`
2. Is it an inference / model service? -> `AI Systems`
2. Is it an inference / model service? -> the matching `AI - <role>` group
(Inference / Eval & Retrieval / Gateways & Chat / Speech (TTS) /
Audio Tools / Image & Media); a stopped-but-kept stack -> `AI - Dormant`
3. Is it a user-facing app? -> `Apps`
4. Is it media / games? -> `Media` or `Games`
5. Is it a piece of hardware or a hypervisor? -> `Infra - <site>`
6. Is it toolchain / plumbing (no human interaction on the golden path)? ->
`Service Networking`
Site-specific sub-grouping is only used for `Infra -` because the device
inventory maps cleanly to physical sites. App groups are function-only.
Site-specific sub-grouping is used for `Infra -` (device inventory maps to
physical sites) and role-based sub-grouping for `AI -` (the fleet is large
enough to warrant it). Other app groups are function-only.
## Deploying changes
+7 -4
View File
@@ -17,10 +17,13 @@
siteMonitor: http://10.0.50.45:3001
description: Uptime monitor (esh-docker-vm)
# AI Systems group is fully Docker-auto-discovered (llama-swap, vLLM Embed,
# vLLM Rerank — homepage.group=AI Systems on their compose files). Position
# and row×3 style for the group live in settings.yaml. Do not add entries
# here or they'll double up.
# The AI tab is fully Docker-auto-discovered. Each inference service carries
# a homepage.group=AI - <role> label on its compose file (AI - Inference,
# AI - Eval & Retrieval, AI - Gateways & Chat, AI - Speech (TTS),
# AI - Audio Tools, AI - Image & Media). Tab assignment, group order, and
# column counts live in settings.yaml. Do not add entries here or they'll
# double up. To move a service between AI groups, change the label on its
# compose file and recreate the container (labels only apply on recreate).
- Media:
- Plex:
+53 -7
View File
@@ -27,11 +27,23 @@ statusStyle: ""
# than plain link cards and the grid looks ragged.
useEqualHeights: true
# Function-first layout, three-tab split:
# Main - daily-use apps, inference, media, bookmarks
# Function-first layout, four-tab split:
# Main - daily-use apps, media, bookmarks, monitoring
# AI - the inference fleet, grouped by role (see below)
# Infrastructure - hardware, hypervisors, BMCs (per site)
# Toolchain - backend services running but rarely clicked
#
# The AI tab splits the fleet by function so a 20+ service list reads as
# sorted groups instead of one endless column. Group membership is set by
# the homepage.group=AI - <role> label on each service's compose file:
# AI - Inference LLM seats you call (gen, char-rp, char-rp-reasoning, summarizer)
# AI - Eval & Retrieval judges, reward, rerank, embed, image-quality
# AI - Gateways & Chat routing gateway, control plane, chat frontends
# AI - Speech (TTS) text-to-speech engines
# AI - Audio Tools speech-to-text + audio dataset tooling
# AI - Image & Media image/video generation + pipelines
# AI - Dormant stopped stacks (rollback seats, retired auditions)
#
# Row counts target ~4-per-row so dense groups (Apps, Service Networking)
# read as a grid instead of an endless column.
layout:
@@ -50,11 +62,6 @@ layout:
tab: Main
style: row
columns: 4
AI Systems:
icon: mdi-brain
tab: Main
style: row
columns: 4
Apps:
icon: mdi-apps
tab: Main
@@ -73,6 +80,45 @@ layout:
tab: Main
style: row
columns: 3
# --- AI tab: the inference fleet, ordered core-models -> support -> apps ---
AI - Inference:
icon: mdi-brain
tab: AI
style: row
columns: 4
AI - Eval & Retrieval:
icon: mdi-scale-balance
tab: AI
style: row
columns: 5
AI - Gateways & Chat:
icon: mdi-router-network
tab: AI
style: row
columns: 3
AI - Speech (TTS):
icon: mdi-account-voice
tab: AI
style: row
columns: 3
AI - Audio Tools:
icon: mdi-waveform
tab: AI
style: row
columns: 2
AI - Image & Media:
icon: mdi-image-multiple
tab: AI
style: row
columns: 2
# Stopped stacks kept for rollback / superseded seats / retired auditions.
# They stay 'created' (not running) via `docker compose up --no-start`, so
# they show here as offline cards and revive with `docker compose start`.
AI - Dormant:
icon: mdi-sleep
tab: AI
style: row
columns: 4
Infra - ANA:
icon: si-proxmox
tab: Infrastructure
+1 -1
View File
@@ -85,7 +85,7 @@ services:
networks:
- tnet
labels:
- homepage.group=AI Systems
- homepage.group=AI - Image & Media
- homepage.name=Arbo
- homepage.icon=mdi-image-multiple-outline
- homepage.description=Catalog-driven ComfyUI engine (irv-ml1)
+1 -1
View File
@@ -53,7 +53,7 @@ services:
retries: 3
start_period: 30s
labels:
- homepage.group=AI Systems
- homepage.group=AI - Gateways & Chat
- homepage.name=Asset Engine
- homepage.icon=mdi-tools
- homepage.description=Control plane over the PFI inference fleet
+2 -2
View File
@@ -88,7 +88,7 @@ services:
networks:
- tnet
labels:
- homepage.group=AI Systems
- homepage.group=AI - Inference
- homepage.name=char-rp (Magidonia-24B GGUF)
- homepage.icon=mdi-drama-masks
- homepage.description=Dark-romantasy RP prose seat, non-thinking (llama.cpp, ana-ml2 GPU 0)
@@ -169,7 +169,7 @@ services:
networks:
- tnet
labels:
- homepage.group=AI Systems
- homepage.group=AI - Dormant
- homepage.name=char-rp-reasoning (QwQ-32B RpR-v4 GGUF)
- homepage.icon=mdi-brain
- homepage.description=Dark-romantasy RP reasoning seat, managed CoT (llama.cpp, ana-ml2 GPU 0)
+1 -1
View File
@@ -67,7 +67,7 @@ services:
# warms torch.compile — give it a generous deadline.
start_period: 600s
labels:
- homepage.group=AI Systems
- homepage.group=AI - Speech (TTS)
- homepage.name=Chatterbox Turbo
- homepage.icon=mdi-account-music-outline
- homepage.description=Low-latency English TTS w/ voice cloning + paralinguistics (irv-ml1)
+1 -1
View File
@@ -86,7 +86,7 @@ services:
networks:
- tnet
labels:
- homepage.group=AI Systems
- homepage.group=AI - Image & Media
- homepage.name=ComfyUI
- homepage.icon=mdi-image-auto-adjust
- homepage.description=Node-based SD/Flux inference (irv-ml1)
+1 -1
View File
@@ -53,7 +53,7 @@ services:
# First boot pulls ~23 GB of model weights.
start_period: 300s
labels:
- homepage.group=AI Systems
- homepage.group=AI - Dormant
- homepage.name=CosyVoice
- homepage.icon=mdi-account-voice
- homepage.description=Expressive multilingual TTS + cloning (irv-ml1)
+1 -1
View File
@@ -98,7 +98,7 @@ services:
# checkpoint load. Generous deadline.
start_period: 900s
labels:
- homepage.group=AI Systems
- homepage.group=AI - Dormant
- homepage.name=Fish Audio S2-Pro
- homepage.icon=mdi-fish
- homepage.description=Most expressive open-source TTS — 15k+ paralinguistic tags, voice cloning, 80+ languages (irv-ml1)
+1 -1
View File
@@ -25,7 +25,7 @@ services:
networks:
- tnet
labels:
- homepage.group=AI Systems
- homepage.group=AI - Gateways & Chat
- homepage.name=Gateway Chat
- homepage.icon=mdi-chat-processing
- homepage.description=Light web chat for smoking LiteLLM gateway models (auto-discovery, system prompts, vision)
+1 -1
View File
@@ -56,7 +56,7 @@ services:
# CUDA warmup. Generous deadline to ride that out.
start_period: 600s
labels:
- homepage.group=AI Systems
- homepage.group=AI - Dormant
- homepage.name=IndexTTS-2
- homepage.icon=mdi-account-music
- homepage.description=Emotion-controllable TTS w/ voice cloning (irv-ml1)
+1 -1
View File
@@ -61,7 +61,7 @@ services:
retries: 3
start_period: 90s
labels:
- homepage.group=AI Systems
- homepage.group=AI - Speech (TTS)
- homepage.name=Kokoro
- homepage.icon=mdi-microphone-message
- homepage.description=Low-latency English TTS w/ streaming (irv-ml1)
+1 -1
View File
@@ -69,7 +69,7 @@ services:
networks:
- tnet
labels:
- homepage.group=AI Systems
- homepage.group=AI - Gateways & Chat
- homepage.name=LiteLLM Gateway
- homepage.icon=mdi-router-network
- homepage.description=vLLM request/response logging gateway (ana-docker)
+1 -1
View File
@@ -82,7 +82,7 @@ services:
retries: 3
start_period: 60s
labels:
- homepage.group=AI Systems
- homepage.group=AI - Speech (TTS)
- homepage.name=mOrpheus TTS
- homepage.icon=mdi-account-voice
- homepage.description=Uncensored Orpheus TTS (baddy + zero-shot clone), real-time, irv-ml1
+1 -1
View File
@@ -49,7 +49,7 @@ services:
# First boot: OmniVoice + Whisper ASR pre-warm + cloning every staged voice.
start_period: 1200s
labels:
- homepage.group=AI Systems
- homepage.group=AI - Dormant
- homepage.name=OmniVoice
- homepage.icon=mdi-account-voice
- homepage.description=Zero-shot multilingual voice-cloning TTS, OpenAI /v1/audio/speech (irv-ml1, 3090)
+1 -1
View File
@@ -46,7 +46,7 @@ services:
# First boot may include a ~400 MB model download.
start_period: 300s
labels:
- homepage.group=AI Systems
- homepage.group=AI - Audio Tools
- homepage.name=Parakeet ASR
- homepage.icon=mdi-microphone
- homepage.description=Parakeet-TDT speech-to-text via sherpa-onnx (irv-ml1)
+1 -1
View File
@@ -72,7 +72,7 @@ services:
networks:
- tnet
labels:
- homepage.group=AI Systems
- homepage.group=AI - Eval & Retrieval
- homepage.name=Qwen-Image-Bench (T2I judge, NVFP4)
- homepage.icon=mdi-image-check
- homepage.description=Qwen text-to-image quality judge (NVFP4, vision-intact) on ana-ml2 GPU 1
+2 -2
View File
@@ -121,7 +121,7 @@ services:
networks:
- tnet
labels:
- homepage.group=AI Systems
- homepage.group=AI - Inference
- homepage.name=Qwen3.6-27B AEON (NVFP4, vision) — gen
- homepage.icon=mdi-creation
- homepage.description=Uncensored Qwen3.6-27B multimodal NVFP4, the `gen` model (ana-ml2 GPU 0)
@@ -202,7 +202,7 @@ services:
networks:
- tnet
labels:
- homepage.group=AI Systems
- homepage.group=AI - Dormant
- homepage.name=Qwen3.6-27B AEON RP (NVFP4 + MTP) — char-rp
- homepage.icon=mdi-drama-masks
- homepage.description=Uncensored Qwen3.6-27B, native MTP single-seat RP (char-rp), ana-ml2 GPU 0
+1 -1
View File
@@ -96,7 +96,7 @@ services:
networks:
- tnet
labels:
- homepage.group=AI Systems
- homepage.group=AI - Dormant
- homepage.name=Qwopus3.5-122B-A10B (abliterated NVFP4, vision)
- homepage.icon=mdi-creation
- homepage.description=Kimi-distilled abliterated Qwen3.5-122B-A10B NVFP4, vision-intact, the `gen` model (ana-ml2 GPU 0)
+1 -1
View File
@@ -74,7 +74,7 @@ services:
networks:
- tnet
labels:
- homepage.group=AI Systems
- homepage.group=AI - Eval & Retrieval
- homepage.name=Selene 1 Mini 8B (judge, FP8)
- homepage.icon=mdi-gavel
- homepage.description=AtlaAI Selene 1 Mini Llama-3.1-8B judge (FP8) via vLLM (ana-ml2 GPU1)
+1 -1
View File
@@ -109,7 +109,7 @@ services:
retries: 3
start_period: 30s
labels:
- homepage.group=AI Systems
- homepage.group=AI - Gateways & Chat
- homepage.name=Skaldsong
- homepage.icon=mdi-book-edit-outline
- homepage.description=Wizard + reader surface for multi-agent storytelling (Bifrost consumer of Worldtree)
+4 -4
View File
@@ -77,7 +77,7 @@ services:
networks:
- tnet
labels:
- homepage.group=AI Systems
- homepage.group=AI - Eval & Retrieval
- homepage.name=vLLM Embed (Qwen3)
- homepage.icon=mdi-vector-arrange-below
- homepage.description=Qwen3 Embedding via vLLM (ana-ml2)
@@ -133,7 +133,7 @@ services:
networks:
- tnet
labels:
- homepage.group=AI Systems
- homepage.group=AI - Eval & Retrieval
- homepage.name=vLLM Rerank (Qwen3)
- homepage.icon=mdi-sort-variant
- homepage.description=Qwen3 Reranker via vLLM (ana-ml2)
@@ -191,7 +191,7 @@ services:
networks:
- tnet
labels:
- homepage.group=AI Systems
- homepage.group=AI - Eval & Retrieval
- homepage.name=vLLM Reward (Skywork)
- homepage.icon=mdi-scale-balance
- homepage.description=Skywork-Reward-V2 8B classifier via vLLM (ana-ml2)
@@ -266,7 +266,7 @@ services:
networks:
- tnet
labels:
- homepage.group=AI Systems
- homepage.group=AI - Inference
- homepage.name=vLLM Granite 4.1 8B (summarizer)
- homepage.icon=mdi-text-box-outline
- homepage.description=Granite 4.1 8B FP8 via vLLM (ana-ml2)