learning_ai_common_plat/docs/devops/vercel/ROADMAP_LLM_LAB.md

2.4 KiB

LLM Lab Dashboard — Vercel Deployment Roadmap

App: LLM Lab Dashboard (Mission Control) Repo: learning_ai_local_llmsdashboard/ Status: 🔴 Not viable on Vercel — requires local Ollama


Current State

  • Framework: Next.js 16.1.6, React 19.2.3, TailwindCSS v4
  • Output: Hardcoded output: 'standalone'
  • Dependencies: 3 @bytelyst/*2 via file: refs (design-tokens, ui), 1 via Gitea
  • Build: next build
  • Architecture: Dashboard with API routes that proxy to local Ollama (/api/ollama/*)
  • System info routes: Read hardware stats via vm_stat, top, system_profiler — macOS only

Why Vercel Won't Work

  1. Ollama dependency: API routes proxy to Ollama (OLLAMA_HOST). Ollama must run on the same machine or reachable network. Vercel serverless functions can't access a local Ollama instance.
  2. System commands: Routes call macOS system commands (vm_stat, system_profiler) which don't exist on Vercel's Linux runtime.
  3. Whisper integration: TTS/STT routes depend on local whisper-cpp binary.
  4. Purpose: This is a local machine management tool, not a cloud app.

If Deployment Is Still Desired (Static Shell Only)

Gap 1: Convert file: refs (~5 min)

File: dashboard/package.json

- "@bytelyst/design-tokens": "file:../../learning_ai_common_plat/packages/design-tokens",
+ "@bytelyst/design-tokens": "^0.1.0",
- "@bytelyst/ui": "file:../../learning_ai_common_plat/packages/ui",
+ "@bytelyst/ui": "^0.1.0",

Gap 2: Make output Vercel-aware (~5 min)

File: dashboard/next.config.ts

- output: 'standalone',
+ ...(process.env.VERCEL ? {} : { output: 'standalone' }),

Gap 3: Registry Access (~5 min)

  • Update .npmrc to Azure VM Gitea URL
  • Set GITEA_NPM_TOKEN as a Vercel environment variable

Gap 4: Disable/stub server-side routes (~30 min)

  • Stub out system info routes (return mock data or error)
  • Make Ollama proxy routes return "configure OLLAMA_HOST" message
  • Gate system commands behind runtime check

Recommendation

Do NOT deploy to Vercel. This app is purpose-built for local/Docker use. The API routes are the core value and none work in a serverless environment.

Alternative: Keep using Docker Compose or the scripts/start-dashboard.sh launcher.