Reorder service grid for Titan Live stack

This commit is contained in:
Brad Stein 2026-01-01 12:04:25 -03:00
parent 6bbc623b20
commit c3912b19b5
2 changed files with 81 additions and 72 deletions

View File

@ -42,18 +42,18 @@ export function fallbackHardware() {
export function fallbackServices() { export function fallbackServices() {
return { return {
services: [ services: [
{
name: "Keycloak",
category: "identity",
summary: "Unified accounts for Single Sign-On.",
link: "https://sso.bstein.dev",
},
{ {
name: "Nextcloud Hub", name: "Nextcloud Hub",
category: "productivity", category: "productivity",
summary: "Core user hub: storage, office, bstein.dev mail, & more apps.", summary: "Core user hub: storage, office, bstein.dev mail, & more apps.",
link: "https://cloud.bstein.dev", link: "https://cloud.bstein.dev",
}, },
{
name: "Jellyfin",
category: "media",
summary: "Family Movies hosted on titan-22 for GPU acceleration.",
link: "https://stream.bstein.dev",
},
{ {
name: "VaultWarden", name: "VaultWarden",
category: "security", category: "security",
@ -61,10 +61,69 @@ export function fallbackServices() {
link: "https://vault.bstein.dev", link: "https://vault.bstein.dev",
}, },
{ {
name: "Keycloak", name: "AI Chat",
category: "identity", category: "ai",
summary: "Unified accounts for Single Sign-On.", summary: "LLM chat (public beta)",
link: "https://sso.bstein.dev", link: "/ai/chat",
host: "chat.ai.bstein.dev",
status: "live",
},
{
name: "Jellyfin",
category: "media",
summary: "Family Movies hosted on titan-22 for GPU acceleration.",
link: "https://stream.bstein.dev",
},
{
name: "Pegasus",
category: "media ingest",
summary: "Uploading service to inject jellyfin media.",
link: "https://pegasus.bstein.dev",
},
{
name: "Monero",
category: "crypto",
summary: "Private monero node for monero wallets",
link: "/monero",
host: "monerod.crypto.svc.cluster.local:18081",
},
{
name: "Grafana",
category: "observability",
summary: "Health metrics for atlas and eventually oceanus.",
link: "https://metrics.bstein.dev",
},
{
name: "Element",
category: "comms",
summary: "Matrix client for Titan Live space.",
link: "https://live.bstein.dev",
host: "live.bstein.dev",
status: "live",
},
{
name: "Matrix (Synapse)",
category: "comms",
summary: "Homeserver powering Titan Live; AI bot is in the welcome room.",
link: "https://live.bstein.dev",
host: "matrix.live.bstein.dev",
status: "live",
},
{
name: "LiveKit",
category: "comms",
summary: "Video + voice SFU for calls in Titan Live.",
link: "https://live.bstein.dev",
host: "kit.live.bstein.dev",
status: "live",
},
{
name: "Coturn",
category: "comms",
summary: "TURN/STUN relay for reliable calling.",
link: "https://live.bstein.dev",
host: "turn.live.bstein.dev",
status: "live",
}, },
{ {
name: "Gitea", name: "Gitea",
@ -97,70 +156,11 @@ export function fallbackServices() {
link: "https://secret.bstein.dev", link: "https://secret.bstein.dev",
}, },
{ {
name: "Grafana", name: "AI Vision",
category: "observability",
summary: "Health metrics for atlas and eventually oceanus.",
link: "https://metrics.bstein.dev",
},
{
name: "Pegasus",
category: "media ingest",
summary: "Uploading service to inject jellyfin media.",
link: "https://pegasus.bstein.dev",
},
{
name: "Monero",
category: "crypto",
summary: "Private monero node for monero wallets",
link: "/monero",
host: "monerod.crypto.svc.cluster.local:18081",
},
{
name: "Matrix (Synapse)",
category: "comms",
summary: "Private Discord-style chat with AI bot in the welcome room.",
link: "https://matrix.bstein.dev",
host: "matrix.bstein.dev",
status: "live",
},
{
name: "Element",
category: "comms",
summary: "Web client for the Matrix space.",
link: "https://element.bstein.dev",
host: "element.bstein.dev",
status: "live",
},
{
name: "LiveKit",
category: "comms",
summary: "Video + voice SFU powering Matrix calls.",
link: "https://livekit.bstein.dev",
host: "livekit.bstein.dev",
status: "live",
},
{
name: "Coturn",
category: "comms",
summary: "TURN/STUN relay for reliable calling.",
link: "https://turn.bstein.dev",
host: "turn.bstein.dev",
status: "live",
},
{
name: "AI Chat",
category: "ai",
summary: "LLM chat (public beta)",
link: "/ai/chat",
host: "chat.ai.bstein.dev",
status: "live",
},
{
name: "AI Image",
category: "ai", category: "ai",
summary: "Visualization tool - Planned", summary: "Visualization tool - Planned",
link: "/ai/roadmap", link: "/ai/roadmap",
host: "draw.ai.bstein.dev", host: "vision.ai.bstein.dev",
status: "planned", status: "planned",
}, },
{ {
@ -171,6 +171,14 @@ export function fallbackServices() {
host: "talk.ai.bstein.dev", host: "talk.ai.bstein.dev",
status: "planned", status: "planned",
}, },
{
name: "SUI Validator",
category: "validator",
summary: "Dedicated SUI validator on Oceanus (rolling out).",
link: "#",
host: "oceanus",
status: "planned",
},
], ],
}; };
} }

View File

@ -139,11 +139,12 @@ function pickIcon(name) {
if (h.includes("harbor")) return "📦"; if (h.includes("harbor")) return "📦";
if (h.includes("flux")) return "🔄"; if (h.includes("flux")) return "🔄";
if (h.includes("monero")) return "⛏️"; if (h.includes("monero")) return "⛏️";
if (h.includes("sui")) return "💠";
if (h.includes("keycloak")) return "🛡️"; if (h.includes("keycloak")) return "🛡️";
if (h.includes("grafana")) return "📈"; if (h.includes("grafana")) return "📈";
if (h.includes("pegasus")) return "🚀"; if (h.includes("pegasus")) return "🚀";
if (h.includes("ai chat")) return "💬"; if (h.includes("ai chat")) return "💬";
if (h.includes("ai image")) return "🖼️"; if (h.includes("ai image") || h.includes("vision")) return "🖼️";
if (h.includes("ai speech")) return "🎙️"; if (h.includes("ai speech")) return "🎙️";
return "🛰️"; return "🛰️";
} }