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:
+28
-14
@@ -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
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -53,7 +53,7 @@ services:
|
||||
# First boot pulls ~2–3 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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user