- Every app card carries hex-clipped art: 19 amber-tinted brand marks from the Simple Icons CDN plus 19 improvised monogram SVGs, wired via a per-service "art" field; homepage_config.bats pins art presence for all 32 apps. - Model cards render zealot -> dragoon -> archon (registry order pinned in the seam). - Dragoon and zealot share one common uncensored legal warning (adult content, harmful/hateful/illegal descriptions, sensitive offensive cybersecurity topics, severe legal risk, "don't ruin this server for everybody"), hover label on card and docs. - Archon gets a bordered red permission callout: ask Frank before use. - SearXNG obfuscation-not-anonymity note moved to a card-level hover warning (.svc-warn) and a docs hover note. - Gitea: self-service signup flow; no need to ask Frank. - Footer docs/admin/account-settings become glowing bordered buttons; the admin button is shown only to homepage-admins members via a new Caddy /whoami endpoint echoing the outpost-injected X-Authentik-* headers (spoof-proof; the /admin* 403 stays the real gate). e2e pins both sides. - Docs naming swept: Protoss names primary, bracketed api ids, explicit note that a future switchover renames the ids themselves.
523 lines
15 KiB
JSON
523 lines
15 KiB
JSON
[
|
||
{
|
||
"name": "SearXNG",
|
||
"category": "user",
|
||
"section": "Web Apps",
|
||
"description": "AI-free, VPN-routed search engine, fully hosted on Frank's server.",
|
||
"url": "http://search.franksdank.cloud",
|
||
"docs": "",
|
||
"probe": "127.0.0.1:8081",
|
||
"method": "http",
|
||
"wip": false,
|
||
"showLink": true,
|
||
"warn": "Searches are obfuscated, not anonymous: SearXNG hides you from the upstream engines and the VPN tunnel hides the traffic from the LAN — but the upstream search API keys are tied to Frank’s identity. Don’t treat it as Tor.",
|
||
"art": "/img/apps/searxng.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-ow.svg"
|
||
},
|
||
{
|
||
"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 — use the sign-up flow in the app to get an account; no need to ask Frank.",
|
||
"url": "http://gitea.franksdank.cloud",
|
||
"docs": "",
|
||
"probe": "127.0.0.1:3000",
|
||
"method": "http",
|
||
"wip": false,
|
||
"showLink": true,
|
||
"art": "/img/apps/gitea.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-cw.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-rm.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-cp.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/plex.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/jellyfin.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-sr.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-mr.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/sonarr.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-hm.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-hd.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/grafana.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/prometheus.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-lk.svg"
|
||
},
|
||
{
|
||
"name": "node-exporter",
|
||
"category": "admin",
|
||
"section": "Observability",
|
||
"description": "Host metrics.",
|
||
"url": "",
|
||
"docs": "",
|
||
"probe": "127.0.0.1:9100",
|
||
"method": "http",
|
||
"wip": false,
|
||
"showLink": false,
|
||
"art": "/img/apps/mono-ne.svg"
|
||
},
|
||
{
|
||
"name": "alloy",
|
||
"category": "admin",
|
||
"section": "Observability",
|
||
"description": "Log shipping.",
|
||
"url": "",
|
||
"docs": "",
|
||
"probe": "127.0.0.1:12345",
|
||
"method": "http",
|
||
"wip": false,
|
||
"showLink": false,
|
||
"art": "/img/apps/mono-ay.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-am.svg"
|
||
},
|
||
{
|
||
"name": "Caddy",
|
||
"category": "admin",
|
||
"section": "Infrastructure",
|
||
"description": "The reverse proxy.",
|
||
"url": "",
|
||
"docs": "",
|
||
"probe": "127.0.0.1:80",
|
||
"method": "http",
|
||
"wip": false,
|
||
"showLink": false,
|
||
"art": "/img/apps/caddy.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/pihole.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-gt.svg"
|
||
},
|
||
{
|
||
"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, content that describes harmful, hateful, or illegal acts, content concerning “sensitive offensive cybersecurity topics”, and other output that may carry severe legal risk. Take this warning seriously — don’t ruin this server for everybody."
|
||
},
|
||
"url": "",
|
||
"docs": "/docs#models",
|
||
"probe": "127.0.0.1:7771",
|
||
"method": "http",
|
||
"wip": false,
|
||
"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": "Uncensored model: output can include adult content, content that describes harmful, hateful, or illegal acts, content concerning “sensitive offensive cybersecurity topics”, and other output that may carry severe legal risk. Take this warning seriously — don’t ruin this server for everybody."
|
||
},
|
||
"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.",
|
||
"voice": {
|
||
"text": "...we BURN.",
|
||
"sfx": [
|
||
"archon-burn.ogg"
|
||
]
|
||
},
|
||
"supervision": "Safe for autonomous, low-supervision use.",
|
||
"permission": "Ask Frank for permission before use — this is his primary model; he uses it more than anything else on the fleet."
|
||
},
|
||
"url": "",
|
||
"docs": "/docs#models",
|
||
"probe": "192.168.0.235:7770",
|
||
"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,
|
||
"art": "/img/apps/mariadb.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-vk.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-pw.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/radarr.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-ra.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-ld.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/qbittorrent.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-tt.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/postgresql.svg"
|
||
},
|
||
{
|
||
"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,
|
||
"art": "/img/apps/mono-cu.svg"
|
||
}
|
||
]
|