From fa16f1fe38fd9487e1f76e3b4cfc4c8c381b0cc9 Mon Sep 17 00:00:00 2001 From: Till JS Date: Fri, 27 Mar 2026 22:21:20 +0100 Subject: [PATCH] feat(apps): add GPU server fallback to all LLM-using apps Configure all apps with gpu-llm.mana.how as fallback when MANA_LLM_URL is not set. This ensures apps can use the GPU server's local LLM models (Ollama gemma3, qwen2.5-coder) instead of cloud providers. Apps updated: - Chat: LLM fallback to GPU server - Context: LLM fallback (replaces Azure OpenAI dependency) - NutriPhi: LLM + Vision fallback (replaces Google Gemini for food analysis) - Planta: LLM + Vision fallback (replaces Google Gemini for plant analysis) - ManaDeck: LLM + Vision fallback for card generation - Traces: LLM fallback for AI city guides Vision model default: ollama/gemma3:12b (multimodal, runs on RTX 3090) Added VISION_MODEL to .env.development Co-Authored-By: Claude Opus 4.6 (1M context) --- .env.development | 5 ++++- apps/chat/apps/backend/src/app.module.ts | 2 +- apps/context/apps/backend/src/app.module.ts | 2 +- apps/manadeck/apps/backend/src/app.module.ts | 3 ++- apps/nutriphi/apps/backend/src/app.module.ts | 3 ++- apps/planta/apps/backend/src/app.module.ts | 3 ++- apps/traces/apps/backend/src/app.module.ts | 2 +- 7 files changed, 13 insertions(+), 7 deletions(-) diff --git a/.env.development b/.env.development index 874fc7663..a7fb37182 100644 --- a/.env.development +++ b/.env.development @@ -24,7 +24,7 @@ PUBLIC_GLITCHTIP_DSN= # Mana Core Auth Service MANA_CORE_AUTH_URL=http://localhost:3001 # Mana Credits Service -MANA_CREDITS_URL=http://localhost:3060 +MANA_CREDITS_URL=http://localhost:3061 # Service key for service-to-service communication MANA_CORE_SERVICE_KEY=dev-service-key-for-bot-sso-2024 @@ -424,3 +424,6 @@ CITYCORNERS_WEB_PORT=5196 GPU_API_KEY=sk-gpu-cf483ede1e05e28fba5e56c94cd3c24e7c245e57816d3e86 GPU_SERVER_URL=https://gpu.mana.how GPU_SERVER_LAN_URL=http://192.168.178.11 + +# Vision Model for NutriPhi + Planta (local, replaces Google Gemini) +VISION_MODEL=ollama/gemma3:12b diff --git a/apps/chat/apps/backend/src/app.module.ts b/apps/chat/apps/backend/src/app.module.ts index 4fc687630..c081ac537 100644 --- a/apps/chat/apps/backend/src/app.module.ts +++ b/apps/chat/apps/backend/src/app.module.ts @@ -25,7 +25,7 @@ import { HealthModule } from '@manacore/shared-nestjs-health'; LlmModule.forRootAsync({ imports: [ConfigModule], useFactory: (configService: ConfigService) => ({ - manaLlmUrl: configService.get('MANA_LLM_URL'), + manaLlmUrl: configService.get('MANA_LLM_URL') || 'https://gpu-llm.mana.how', timeout: configService.get('LLM_TIMEOUT', 120000), debug: configService.get('NODE_ENV') === 'development', }), diff --git a/apps/context/apps/backend/src/app.module.ts b/apps/context/apps/backend/src/app.module.ts index 86f733b83..68b4dcb05 100644 --- a/apps/context/apps/backend/src/app.module.ts +++ b/apps/context/apps/backend/src/app.module.ts @@ -26,7 +26,7 @@ import { HttpExceptionFilter } from './common/http-exception.filter'; LlmModule.forRootAsync({ imports: [ConfigModule], useFactory: (config: ConfigService) => ({ - manaLlmUrl: config.get('MANA_LLM_URL'), + manaLlmUrl: config.get('MANA_LLM_URL') || 'https://gpu-llm.mana.how', debug: config.get('NODE_ENV') === 'development', }), inject: [ConfigService], diff --git a/apps/manadeck/apps/backend/src/app.module.ts b/apps/manadeck/apps/backend/src/app.module.ts index a83e2d4e0..ee07fa86e 100644 --- a/apps/manadeck/apps/backend/src/app.module.ts +++ b/apps/manadeck/apps/backend/src/app.module.ts @@ -55,7 +55,8 @@ import { LlmModule.forRootAsync({ imports: [ConfigModule], useFactory: (config: ConfigService) => ({ - manaLlmUrl: config.get('MANA_LLM_URL'), + manaLlmUrl: config.get('MANA_LLM_URL') || 'https://gpu-llm.mana.how', + defaultVisionModel: config.get('VISION_MODEL') || 'ollama/gemma3:12b', debug: config.get('NODE_ENV') === 'development', }), inject: [ConfigService], diff --git a/apps/nutriphi/apps/backend/src/app.module.ts b/apps/nutriphi/apps/backend/src/app.module.ts index b37d83ae1..3bb418383 100644 --- a/apps/nutriphi/apps/backend/src/app.module.ts +++ b/apps/nutriphi/apps/backend/src/app.module.ts @@ -20,7 +20,8 @@ import { RecommendationsModule } from './recommendations/recommendations.module' LlmModule.forRootAsync({ imports: [ConfigModule], useFactory: (config: ConfigService) => ({ - manaLlmUrl: config.get('MANA_LLM_URL'), + manaLlmUrl: config.get('MANA_LLM_URL') || 'https://gpu-llm.mana.how', + defaultVisionModel: config.get('VISION_MODEL') || 'ollama/gemma3:12b', debug: config.get('NODE_ENV') === 'development', }), inject: [ConfigService], diff --git a/apps/planta/apps/backend/src/app.module.ts b/apps/planta/apps/backend/src/app.module.ts index 0019a62ed..b75eeabf8 100644 --- a/apps/planta/apps/backend/src/app.module.ts +++ b/apps/planta/apps/backend/src/app.module.ts @@ -18,7 +18,8 @@ import { WateringModule } from './watering/watering.module'; LlmModule.forRootAsync({ imports: [ConfigModule], useFactory: (config: ConfigService) => ({ - manaLlmUrl: config.get('MANA_LLM_URL'), + manaLlmUrl: config.get('MANA_LLM_URL') || 'https://gpu-llm.mana.how', + defaultVisionModel: config.get('VISION_MODEL') || 'ollama/gemma3:12b', debug: config.get('NODE_ENV') === 'development', }), inject: [ConfigService], diff --git a/apps/traces/apps/backend/src/app.module.ts b/apps/traces/apps/backend/src/app.module.ts index ee397da8e..f4d1771b4 100644 --- a/apps/traces/apps/backend/src/app.module.ts +++ b/apps/traces/apps/backend/src/app.module.ts @@ -29,7 +29,7 @@ import { GuideModule } from './guide/guide.module'; LlmModule.forRootAsync({ imports: [ConfigModule], useFactory: (config: ConfigService) => ({ - manaLlmUrl: config.get('MANA_LLM_URL'), + manaLlmUrl: config.get('MANA_LLM_URL') || 'https://gpu-llm.mana.how', debug: config.get('NODE_ENV') === 'development', }), inject: [ConfigService],