Files
pieced-portal/deploy
admin 85c4302f7a
All checks were successful
Build and Push / build (push) Successful in 1m30s
Threema Gateway
2026-05-16 22:00:27 +02:00
..
2026-05-16 22:00:27 +02:00
2026-04-11 22:36:36 +02:00
2026-05-16 22:00:27 +02:00
2026-04-11 22:36:36 +02:00
2026-04-11 12:21:34 +02:00

Session 6.6 — Items 5 & 6: System Health + Spend Column

Files

File Action What
src/lib/litellm.ts REPLACE Added listTeams(), getLitellmHealth(), getGlobalSpend(), getPerTeamSpend()
src/app/api/admin/health/route.ts NEW Returns tenant phase counts, aggregate + per-tenant spend, vLLM & LiteLLM health
src/components/admin/admin-panel.tsx REPLACE Added "Health" tab (service indicators, tenant overview, spend cards) + "Spend (CHF)" column in tenants table
patch-i18n-admin-health.mjs RUN ONCE Patches all 4 i18n files with new admin keys

Steps

  1. Drop in the 3 source files (overwrite existing)
  2. Run the i18n patcher from the portal root:
    node patch-i18n-admin-health.mjs
    
  3. Build and deploy

Environment Variables (optional)

  • VLLM_HEALTH_URL — defaults to http://vllm.inference.svc:8000. Set if your vLLM is elsewhere.
  • LITELLM_INTERNAL_URL / LITELLM_MASTER_KEY — already configured.

Notes

  • The health API uses Promise.allSettled so a single service being down won't break the whole page.
  • Per-tenant spend is fetched from LiteLLM's /team/list which returns the cumulative spend per team. This is mapped to tenant names via status.litellmTeamId on the PiecedTenant CR.
  • The spend column in the tenants table piggybacks on the same health data — fetched once when switching to the tenants tab.
  • If LiteLLM's /team/list or /global/spend response format differs from what I assumed, you may need to adjust the parsing in litellm.ts. The functions have fallbacks for common response shapes.