--- # https://gethomepage.dev/latest/configs/settings title: ... all my base ... theme: dark # `color:` only accepts Homepage's built-in Tailwind ramps, and none of them is # the Skyfall Sea ramp. slate is the nearest cool neutral and acts as the base # under conf/custom.css, which is where the real palette lives. color: slate # Background — generated locally, not stock art. Arbo (irv-ml1:8201) rendered # it from the `t2i-ui-background` workflow: abstract full-bleed, no subject, # aurora blue->cyan->green on near-black, which is the one decorative motif # Australis Skyfall permits and its "cool temperature always" imagery rule. # Job 13f0891f4e42, seed 26, flux2-klein-9b, 2048x1152. # # Served from /app/public/images via the read-only mount in compose.yaml — # NOT from the config dir, which Homepage will not serve static files out of. # # ⚠️ opacity is the load-bearing number, not decoration. Skyfall's rule is that # the aurora motif never sits behind body text; this dashboard breaks that on # purpose, so the image has to stay far enough back that card contrast never # suffers. The render is considerably brighter than the "mostly empty" brief, # which is exactly what this dials out. Raise it and the cards start fighting # the ribbon. background: image: /images/skyfall-aurora.webp blur: sm saturate: 90 brightness: 90 opacity: 30 headerStyle: boxedWidgets providers: openweathermap: openweathermapapikey weatherapi: weatherapiapikey quicklaunch: searchDescriptions: true hideInternetSearch: true showSearchSuggestions: true hideVisitURL: true showStats: false statusStyle: "" # Force all cards in a row to match the tallest card's height. Without # this, widget-bearing cards (Plex stats, Traefik metrics) stand taller # than plain link cards and the grid looks ragged. useEqualHeights: true # 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 - 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) # # AI TAB ORDER IS BY CLICKABILITY, NOT BY IMPORTANCE (operator, 2026-08-18). # Groups render in the order they appear in this block, so the top of the tab # is prime real estate and it should hold the things you actually open in a # browser — chat frontends, ComfyUI, the control plane. Most of the model # seats below them are vLLM API endpoints whose href is a `/docs` page: they # are worth SEEING (status at a glance) but not worth reaching for, so they # sink. Order is therefore: # interactive UIs -> mixed -> API-only seats -> dormant # If you add an AI group, place it by asking "would I click this?", not by # how central the service is to the fleet. # # COLUMN COUNTS ARE NOT A STYLE CHOICE — they are the member count. # `columns: N` lays the group out N-per-row and leaves the remainder of the # last row as dead space. A 1-member group at columns:4 renders one card and # three empty cells, which is what made this dashboard look ragged before # 2026-08-18. Rule: set columns to the member count, or to the divisor that # leaves the smallest remainder. Re-check when a group gains or loses a # service — `GET /api/services` prints the live per-group counts. # # EVERY GROUP NEEDS A `tab:` — including bookmark groups. A group with no tab # assignment renders on ALL FOUR TABS. That is how UltraSeedbox ended up # repeated at the bottom of every tab (fixed 2026-08-18); it is Homepage # behaviour, not a bug, and it will happen again to the next group added # without a tab. layout: Notes: icon: mdi-note-text-outline tab: Main style: row columns: 1 News: icon: mdi-rss tab: Main style: row columns: 2 Monitoring: icon: mdi-chart-line tab: Main style: row columns: 4 Apps: icon: mdi-apps tab: Main style: row columns: 4 # 2 wide, not 3 — Plex and Jellyfin carry stat-block widgets that get # squeezed to unreadable at 4-across, and 4 members / 3 columns orphaned # Jellyfin onto a row of its own. Media: icon: mdi-play-box-multiple tab: Main style: row columns: 2 Games: icon: mdi-gamepad-square tab: Main style: row columns: 1 # Bookmarks. Listed here for the tab pin above all else — without it this # group appears on every tab. `style: row` also turns the eight entries # from full-width stacked bars into a compact grid. UltraSeedbox: icon: mdi-download-network tab: Main style: row columns: 4 # --- AI tab: ordered interactive -> API-only -> dormant (see note above) --- # Things you open: chat frontends, the control plane, the LiteLLM UI. AI - Gateways & Chat: icon: mdi-router-network tab: AI style: row columns: 4 # ComfyUI is a full node editor and Arbo has a real UI — both get clicked. AI - Image & Media: icon: mdi-image-multiple tab: AI style: row columns: 2 # Mixed: YT Voice Clipper has an audition console, Parakeet is an API. AI - Audio Tools: icon: mdi-waveform tab: AI style: row columns: 2 # Below here: model seats whose href is a vLLM `/docs` page. Status at a # glance is the whole value; you consume these through the gateway, not by # clicking them. 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 - Speech (TTS): icon: mdi-account-voice tab: AI style: row columns: 4 # 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 style: row columns: 4 Infra - NH3: icon: si-proxmox tab: Infrastructure style: row columns: 3 Infra - IRV: icon: mdi-brain tab: Infrastructure style: row columns: 2 Infra - ESH: icon: si-proxmox tab: Infrastructure style: row columns: 4 Service Networking: icon: mdi-transit-connection-variant tab: Toolchain style: row columns: 4 Toolchain: icon: mdi-toolbox tab: Toolchain style: row columns: 4