Files
serverAppConfigs/shared/homepage/services.json
T
Frank 203b0be145 homepage: Protoss rename + fused Model Information component
The model cards become the StarCraft trio: frank-large -> frank-dragoon,
frank-primary -> frank-archon, frank-secondary -> frank-zealot (family
names only; endpoint/API ids unchanged). The three cards fuse into one
Model Information component: per-unit Protoss accent colours and hex-
clipped unit art, 15px type, clickable StarCraft unit-voice quotations
(original .ogg files from the fandom wiki, served from /sfx/), supervision
notes (dragoon/archon safe for autonomous use, zealot tight supervision),
compaction-model recommendation for frank-zealot, and uncensored-model
legal notes rendered as hover tooltips instead of wall text. docs.html
carries the same renames plus api-id mapping.

App-card updates: Seerr, Calibre-Web, RomM, Jellyfin set to WIP: DOWN
with Open links removed (new wip "down" badge state); Copyparty notes it
serves all other media apps content including WIP apps; Gitea and Plex
noted as needing logins separate from SSO; SearXNG noted as obfuscated,
not anonymous (upstream API keys tie to Frank).

Plumbing: Caddy @data allowlist grew /sfx/*; deploy_homepage copies sfx/;
homepage_config.bats pins the new probe names, the component fields,
art/voice-file presence, and the wip-down schema.
2026-10-08 02:40:45 -07:00

458 lines
13 KiB
JSON

[
{
"name": "SearXNG",
"category": "user",
"section": "Web Apps",
"description": "AI-free, VPN-routed search engine, fully hosted on Frank's server. Your searches are obfuscated, not anonymous: upstream API keys are tied to Frank's identity.",
"url": "http://search.franksdank.cloud",
"docs": "",
"probe": "127.0.0.1:8081",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "OpenWebUI",
"category": "user",
"section": "AI",
"description": "AI Chat/Search interface",
"url": "http://ai.franksdank.cloud",
"docs": "",
"probe": "127.0.0.1:3005",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "Gitea",
"category": "user",
"section": "Web Apps",
"description": "Git code hosting and review platform. Needs its own login, separate from the dankcloud single sign-on (ask Frank).",
"url": "http://gitea.franksdank.cloud",
"docs": "",
"probe": "127.0.0.1:3000",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "Calibre-Web",
"category": "user",
"section": "Media Library Apps",
"description": "E-book library. Work in progress: not open to family users yet.",
"url": "",
"docs": "",
"probe": "192.168.0.235:8083",
"method": "http",
"wip": "down",
"showLink": false
},
{
"name": "RomM",
"category": "user",
"section": "Media Library Apps",
"description": "ROM and emulator library. Work in progress: not open to family users yet.",
"url": "",
"docs": "",
"probe": "192.168.0.235:8085",
"method": "http",
"wip": "down",
"showLink": false
},
{
"name": "Copyparty",
"category": "user",
"section": "Web Apps",
"description": "Direct downloads from Frank's server. Everything the other media apps hold — including the work-in-progress ones (Calibre-Web, RomM, Seerr) — is available here.",
"url": "http://files.franksdank.cloud",
"docs": "",
"probe": "192.168.0.235:3923",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "Plex",
"category": "user",
"section": "Media Library Apps",
"description": "Closed source media server with apps for everything. Needs its own Plex login, separate from the dankcloud single sign-on (ask Frank).",
"url": "http://plex.franksdank.cloud/web/index.html",
"docs": "",
"probe": "192.168.0.235:32400",
"method": "tcp",
"wip": false,
"showLink": true
},
{
"name": "Jellyfin",
"category": "user",
"section": "Media Library Apps",
"description": "Open source media server. Work in progress: not open to family users yet.",
"url": "",
"docs": "",
"probe": "192.168.0.235:8096",
"method": "http",
"wip": "down",
"showLink": false
},
{
"name": "Seerr",
"category": "user",
"section": "Media Library Apps",
"description": "Download requests. Work in progress: not open to family users yet.",
"url": "",
"docs": "",
"probe": "127.0.0.1:5055",
"method": "http",
"wip": "down",
"showLink": false
},
{
"name": "Marreta",
"category": "user",
"section": "Web Apps",
"description": "Clean, ad-free article reader. Paste any URL, get just the article.",
"url": "http://marreta.franksdank.cloud",
"docs": "",
"probe": "127.0.0.1:8082",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "Sonarr",
"category": "admin",
"section": "Media Library Apps",
"description": "TV series library and automation.",
"url": "http://192.168.0.112:8989",
"docs": "",
"probe": "192.168.0.112:8989",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "Hermes",
"category": "admin",
"section": "AI",
"description": "The agent gateway.",
"url": "http://hermes.franksdank.cloud",
"docs": "",
"probe": "127.0.0.1:8787",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "Hermes dashboard",
"category": "admin",
"section": "AI",
"description": "Agent management UI (config, API keys, sessions).",
"url": "http://hermesadmin.franksdank.cloud",
"docs": "",
"probe": "192.168.0.143:9119",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "Grafana",
"category": "admin",
"section": "Observability",
"description": "Dashboards.",
"url": "http://grafana.franksdank.cloud",
"docs": "",
"probe": "127.0.0.1:3002",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "Prometheus",
"category": "admin",
"section": "Observability",
"description": "Metrics collection.",
"url": "http://prometheus.franksdank.cloud",
"docs": "",
"probe": "127.0.0.1:9090",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "Loki",
"category": "admin",
"section": "Observability",
"description": "Log storage.",
"url": "http://loki.franksdank.cloud",
"docs": "",
"probe": "127.0.0.1:3100",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "node-exporter",
"category": "admin",
"section": "Observability",
"description": "Host metrics.",
"url": "",
"docs": "",
"probe": "127.0.0.1:9100",
"method": "http",
"wip": false,
"showLink": false
},
{
"name": "alloy",
"category": "admin",
"section": "Observability",
"description": "Log shipping.",
"url": "",
"docs": "",
"probe": "127.0.0.1:12345",
"method": "http",
"wip": false,
"showLink": false
},
{
"name": "alertmanager",
"category": "admin",
"section": "Observability",
"description": "Alert delivery to Signal.",
"url": "",
"docs": "",
"probe": "127.0.0.1:9093",
"method": "http",
"wip": false,
"showLink": false
},
{
"name": "Caddy",
"category": "admin",
"section": "Infrastructure",
"description": "The reverse proxy.",
"url": "",
"docs": "",
"probe": "127.0.0.1:80",
"method": "http",
"wip": false,
"showLink": false
},
{
"name": "Pi-hole",
"category": "admin",
"section": "Infrastructure",
"description": "LAN DNS + ad blocking.",
"url": "http://pihole.franksdank.cloud",
"docs": "",
"probe": "192.168.0.143:8083",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "Gluetun",
"category": "admin",
"section": "Infrastructure",
"description": "The outbound VPN tunnel.",
"url": "",
"docs": "",
"probe": "127.0.0.1:51820",
"method": "tcp",
"wip": "closed",
"showLink": false
},
{
"name": "frank-dragoon",
"category": "user",
"section": "AI",
"model": {
"unit": "dragoon",
"role": "Frank's deep reasoning model",
"tagline": "I have returned — make use of me.",
"sfx": ["dragoon-returned.ogg", "dragoon-makeuse.ogg"],
"equiv": "Equivalent to Claude Sonnet 5 / OpenAI-Luna (Summer 2026 frontier intelligence).",
"spec": "Qwen3.8-Flash-Next v2 Swift1.5 abliterated (halogen flash-server, ~62 GiB) on the Strix Halo iGPU — 200k-token context, two submissions at a time; sees images.",
"inputs": ["text", "image"],
"use": "Complex agentic tasks, programming, system administration, and \"claw\"-style personal agents.",
"voice": { "text": "Awaiting instructions.", "sfx": ["dragoon-awaiting.ogg"] },
"supervision": "Safe for autonomous, low-supervision use.",
"warn": "Abliterated (censorship-removed) model: output can include adult themes. You are responsible for the legal consequences of how you use it."
},
"url": "",
"docs": "/docs#models",
"probe": "127.0.0.1:7770",
"method": "http",
"wip": false,
"showLink": false
},
{
"name": "frank-archon",
"category": "user",
"section": "AI",
"model": {
"unit": "archon",
"role": "Frank's strongest and fastest model runtime",
"tagline": "...Power Overwhelming...",
"sfx": ["archon-power.ogg"],
"equiv": "Equivalent to Claude Opus 4.8 / OpenAI-Terra (Summer 2026 frontier intelligence).",
"spec": "Qwen3.8-Flash-Next at native FP8 precision (radiance, 173 GiB) on twin AMD R9700s with more than 200 GB of system RAM — 200k-token context, two submissions at a time; sees images.",
"inputs": ["text", "image"],
"use": "Software engineering, system administration, and instruction tasks. Please ask Frank before use, as he uses this one primarily.",
"voice": { "text": "...we BURN.", "sfx": ["archon-burn.ogg"] },
"supervision": "Safe for autonomous, low-supervision use."
},
"url": "",
"docs": "/docs#models",
"probe": "192.168.0.235:7770",
"method": "http",
"wip": false,
"showLink": false
},
{
"name": "frank-zealot",
"category": "user",
"section": "AI",
"model": {
"unit": "zealot",
"role": "Frank's utility model",
"tagline": "HONOR GUIDE ME!",
"sfx": ["zealot-honor.ogg"],
"equiv": "Equivalent to last year's frontier level (2025).",
"spec": "Qwen3.5-9B-Uncensored (Q6_K) on an NVIDIA RTX 3090 — ~95 tokens/s; 200k-token context, two submissions at a time; sees images.",
"inputs": ["text", "image"],
"use": "Code editor autocomplete, agentic search, RAG, research subagents, translation, roleplay, and summarization. If your agent harness lets you set a compaction model, set this one: a compaction job on the bigger models blocks them for far longer.",
"voice": { "text": "I LONG FOR COMBAT!", "sfx": ["zealot-combat.ogg"] },
"supervision": "Requires tight human supervision.",
"warn": "Uncensored model: output can include adult content. You are responsible for the legal consequences of how you use it."
},
"url": "",
"docs": "/docs#models",
"probe": "127.0.0.1:7771",
"method": "http",
"wip": false,
"showLink": false
},
{
"name": "mariadb",
"category": "admin",
"section": "Infrastructure",
"description": "RomM's database (Dankserver). Not probeable from the monitor: 3306 is container-internal, and publishing a database port on the LAN is not a trade this fleet makes. RomM's own card covers the stack.",
"url": "",
"docs": "",
"probe": "192.168.0.235:3306",
"method": "tcp",
"wip": "closed",
"showLink": false
},
{
"name": "valkey",
"category": "admin",
"section": "Infrastructure",
"description": "SearXNG's cache/limiter (Dankclaw). Not probeable: 6379 is container-internal. SearXNG's own card covers the stack.",
"url": "",
"docs": "",
"probe": "127.0.0.1:6379",
"method": "tcp",
"wip": "closed",
"showLink": false
},
{
"name": "Prowlarr",
"category": "admin",
"section": "Media Library Apps",
"description": "Indexer manager.",
"url": "http://prowlarr.franksdank.cloud",
"docs": "",
"probe": "192.168.0.112:9696",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "Radarr",
"category": "admin",
"section": "Media Library Apps",
"description": "Movie library and automation.",
"url": "http://radarr.franksdank.cloud",
"docs": "",
"probe": "192.168.0.112:7878",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "Readarr",
"category": "admin",
"section": "Media Library Apps",
"description": "Book library and automation.",
"url": "http://readarr.franksdank.cloud",
"docs": "",
"probe": "192.168.0.112:8787",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "Lidarr",
"category": "admin",
"section": "Media Library Apps",
"description": "Music library and automation.",
"url": "http://lidarr.franksdank.cloud",
"docs": "",
"probe": "192.168.0.112:8686",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "qBittorrent",
"category": "admin",
"section": "Media Library Apps",
"description": "Torrent client.",
"url": "http://qbittorrent.franksdank.cloud",
"docs": "",
"probe": "192.168.0.112:8080",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "Tautulli",
"category": "admin",
"section": "Media Library Apps",
"description": "Plex statistics and notifications.",
"url": "http://192.168.0.235:8181",
"docs": "",
"probe": "192.168.0.235:8181",
"method": "http",
"wip": false,
"showLink": true
},
{
"name": "Postgres",
"category": "admin",
"section": "Infrastructure",
"description": "Authentik's and Gitea's databases (Dankclaw). Not probeable: 5432 is container-internal. Their apps' cards cover the stacks.",
"url": "",
"docs": "",
"probe": "127.0.0.1:5432",
"method": "tcp",
"wip": "closed",
"showLink": false
},
{
"name": "ComfyUI",
"category": "admin",
"section": "AI",
"description": "Node-based image generation.",
"url": "http://comfyui.franksdank.cloud:8188",
"docs": "",
"probe": "127.0.0.1:8188",
"method": "http",
"wip": false,
"showLink": true
}
]