Aller au contenu

Interfaces de chat IA sur srv759970

Bilan de toutes les interfaces permettant de dialoguer avec un LLM sur le VPS. Six surfaces distinctes, trois architectures différentes.


Vue d'ensemble

┌─────────────────────────────────────────────────────────────────────┐
│  CHAT GÉNÉRALISTE — interface OpenAI-compatible                       │
│                                                                       │
│  Open WebUI ──────── :3871 ──▶ rag-perf-proxy :3873 ──▶ Claude       │
│  LobeHub ─────────── :3210 ──▶ rag-perf-proxy :3873 ──▶ Claude       │
└─────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────┐
│  CHAT MÉTIER — interface sur mesure, LLM dédié                        │
│                                                                       │
│  Domo ─────────────── :8100 ──▶ OpenAI direct (gpt-4o-mini)          │
│  Reading Coach Next ─ :3200 ──▶ OpenRouter ──▶ Gemini 2.5 Flash/Pro  │
│  RAIM (Hesiodus) ──── :3200 ──▶ OAuth direct ──▶ Claude Sonnet 4.6   │
└─────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────┐
│  ORCHESTRATION D'AGENTS — gestion multi-agents                        │
│                                                                       │
│  Claudito ─────────── :3000 ──▶ Claude Code CLI  ⚠️ DISABLED         │
│  Paperclip ────────── :3110 ──▶ aucun LLM configuré                  │
└─────────────────────────────────────────────────────────────────────┘

Tableau comparatif

Interface URL publique LLM backend RAG Voice Auth Statut
Open WebUI rag.srv759970.hstgr.cloud Claude (wrapper) ✅ natif ✅ Whisper base compte app ✅ actif
LobeHub lobehub.srv759970.hstgr.cloud Claude (wrapper) nginx + access code ✅ actif
Domo domo.srv759970.hstgr.cloud OpenAI gpt-4o-mini ✅ Cartesia STT + OpenAI TTS nginx htpasswd ✅ actif
Reading Coach Next reading-coach-next.srv759970.hstgr.cloud Gemini 2.5 Flash/Pro ✅ Cartesia TTS aucune ✅ actif
RAIM (Hesiodus) raim.srv759970.hstgr.cloud Claude Sonnet 4.6 (OAuth direct) ✅ corpus 78 indicateurs NextAuth magic link ✅ actif (nohup)
Claudito claudito.srv759970.hstgr.cloud Claude Code CLI credstore ⚠️ disabled
Paperclip paperclip.srv759970.hstgr.cloud aucun configuré better-auth ✅ actif (vide)

1. Open WebUI — Chat RAG généraliste

Rôle

Interface web polyvalente (fork d'Open WebUI). Connectée au wrapper Claude via l'API OpenAI-compatible. Supporte RAG (upload de documents), recherche web, et transcription vocale locale via Whisper.

Architecture

Utilisateur → HTTPS → nginx → rag-open-webui :3871
                       OPENAI_API_BASE_URL :3873 (rag-perf-proxy)
                         wrapper Claude :3872 → Claude Max

Accès

Paramètre Valeur
URL publique https://rag.srv759970.hstgr.cloud
Container rag-open-webui
Port interne 127.0.0.1:3871
Backend LLM http://127.0.0.1:3873/v1 (rag-perf-proxy → wrapper)
Modèles disponibles tous ceux du wrapper Claude (sonnet-4-6, haiku-4-5, opus-4-5...)
Auth Compte Open WebUI (WEBUI_AUTH=true, ENABLE_SIGNUP=true)
Ollama désactivé (ENABLE_OLLAMA_API=false)

Fonctionnalités actives

  • RAG : upload de fichiers (PDF, texte...) → chunk → embeddings → retrieval dans le chat
  • Modèle d'embedding : sentence-transformers/all-MiniLM-L6-v2 (intégré)
  • Reranking : TaylorAI/bge-micro-v2 (intégré)
  • Voice : STT via Whisper base (intégré dans le container)
  • Télémétrie : désactivée (DO_NOT_TRACK=true, ANONYMIZED_TELEMETRY=false)

Compose

/home/automation/rag-perso/deploy/docker-compose.yml

Commandes utiles

docker logs rag-open-webui --tail 50
cd /home/automation/rag-perso/deploy && docker compose restart

2. LobeHub — Chat rapide multi-modèle

Rôle

Interface chat légère et rapide, orientée productivité. Connectée au même wrapper Claude qu'Open WebUI mais sans RAG. Double authentification (nginx + access code interne).

Architecture

Utilisateur → HTTPS → nginx (htpasswd) → lobehub :3210
                     OPENAI_API_KEY ◄──────   │
                        host.docker.internal:3873 → bridge socat → rag-perf-proxy → wrapper

Accès

Paramètre Valeur
URL publique https://lobehub.srv759970.hstgr.cloud
Container lobehub
Port interne 127.0.0.1:3210
Backend LLM http://host.docker.internal:3873/v1 → bridge socat → rag-perf-proxy
Auth nginx htpasswd /etc/nginx/.htpasswd-lobehub
Auth app access code dans /opt/lobehub/.envACCESS_CODE

Fonctionnalités

  • Multi-modèles (tous ceux du wrapper Claude)
  • Personnages/personas configurables
  • Pas de RAG, pas de voice
  • Plugin market (désactivé en self-hosted)

Compose

/opt/lobehub/docker-compose.yml

Note — double chemin réseau

Les containers ne peuvent pas joindre 127.0.0.1 de l'hôte directement. LobeHub passe par host.docker.internal:3873claude-wrapper-bridge (socat sur l'interface Docker 172.17.0.1) → rag-perf-proxy:3873.


3. Domo — Companion vocal IA (personnage)

Rôle

Application Python FastAPI construisant une expérience de dialogue avec un personnage IA (Samantha). Pipeline voix complet : STT (Cartesia) → LLM (OpenAI) → TTS (OpenAI). Personnages configurables (characters/domo/).

Architecture

Utilisateur (micro/texte) → HTTPS → nginx (htpasswd) → domo :8100
                           ┌─────────────────────────────────┤
                           │         (cloud)                  │
                     Cartesia STT                     OpenAI gpt-4o-mini (LLM)
                           │                                  │
                           └─────────────────────────────────►│
                                                             TTS
                                                      OpenAI gpt-4o-mini-tts
                                                       Audio ◄┘

Accès

Paramètre Valeur
URL publique https://domo.srv759970.hstgr.cloud
Port interne 127.0.0.1:8100
Process PM2 domo
Auth nginx htpasswd /etc/nginx/.htpasswd
Config /opt/domo/.env

Providers actifs (état 2026-05-21)

Rôle Provider Modèle
LLM chat OpenAI gpt-4o-mini
TTS OpenAI gpt-4o-mini-tts
STT Cartesia API cloud
Agent autonome Pi Daemon POST :8790/chat

Providers disponibles (non actifs)

Provider Activation
Cartesia TTS streaming TTS_PROVIDER=cartesia
ElevenLabs TTS TTS_PROVIDER=elevenlabs + clé
Kokoro TTS TTS_PROVIDER=kokoro + démarrer serveur :8880
SparkTTS (local GPU) non disponible CPU
OpenAI STT STT_PROVIDER=openai
faster-whisper local pip install faster-whisper

Fichiers clés

/opt/domo/
├── .env                    ← tous les providers + clés
├── app/app.py              ← logique principale + TTS providers
├── app/transcription.py    ← STT (Cartesia, OpenAI, Whisper)
├── app/enhanced_logic.py   ← mode enhanced (OpenAI STT amélioré)
└── characters/domo/        ← personnage Samantha

4. Reading Coach Next — Companion de lecture

Rôle

Application Next.js de lecture assistée par IA. Accompagne la lecture d'un livre avec un companion conversationnel. LLM routé dynamiquement entre Flash (léger) et Pro (complexe) selon la complexité du message.

Architecture

Utilisateur → HTTPS → nginx → reading-coach-next :3200
                              model-router.ts (score 0-100)
                                    /       \
                               < 35          ≥ 35
                                 │             │
                         Gemini 2.5 Flash   Gemini 2.5 Pro
                         (OpenRouter)       (OpenRouter)
                                    \       /
                                     Claude ?
                                  (non, OpenRouter uniquement)

Accès

Paramètre Valeur
URL publique https://reading-coach-next.srv759970.hstgr.cloud
Port interne 127.0.0.1:3200
Process nohup pnpm dev démarré via /opt/reading-coach-next/start.sh
Auth aucune
Backend LLM OpenRouter → google/gemini-2.5-flash / google/gemini-2.5-pro

Model routing

// src/sdk/chat/model-router.ts
// Score 0-100 basé sur : longueur, mots-clés philosophiques/analytiques,
// noms propres, longueur de conversation
// < 35 → Flash (rapide, économique)
// ≥ 35 → Pro (qualité, complexe)

TTS optionnel

Cartesia activable via NEXT_PUBLIC_TTS_MODE=cartesia dans .env.local.

⚠️ Fragilité process

Tourne en nohup pnpm dev — s'arrête si SSH déconnecte ou si reboot. Pas sous PM2.

# Redémarrer si arrêté
ssh srv759970 "cd /opt/reading-coach-next && nohup pnpm dev >> /tmp/reading-coach-next.log 2>&1 &"

Fichiers clés

/opt/reading-coach-next/
├── .env.local / .env.production  ← clés OpenRouter, TTS mode
├── src/sdk/chat/openrouter.ts    ← adapter OpenRouter SSE streaming
├── src/sdk/chat/model-router.ts  ← routage Flash/Pro
├── src/sdk/speech/cartesia.ts    ← TTS Cartesia (optionnel)
└── src/lib/companion.ts          ← logique companion principal

5. RAIM — Companion d'audit IA (Hesiodus)

Rôle

Companion conversationnel d'évaluation des pratiques IA. Guide l'utilisateur à travers 78 indicateurs répartis en 5 piliers (EU AI Act). Next.js 15 + Prisma + @assistant-ui/react. Contexte métier chargé depuis un corpus de référence.

Architecture

Utilisateur → HTTPS → nginx → raim.srv759970.hstgr.cloud
                             NextAuth (magic link email)
                           Next.js :3200 (nohup pnpm dev)
                         wrapper-provider.ts → readOAuthToken()
                     /home/automation/hesiodus/.oauth-token
                    @ai-sdk/anthropic(authToken=) — OAuth direct
                          Claude Sonnet 4.6 (Max sub)

Accès

Paramètre Valeur
URL publique https://raim.srv759970.hstgr.cloud
Port interne 127.0.0.1:3200
Process nohup pnpm dev (⚠️ même fragilité que reading-coach-next)
Auth NextAuth magic link email
DB raim-pg container 127.0.0.1:5433 (pgvector/pgvector:pg16)

Modèles configurés

Variable Modèle Rôle
MODEL_CHAT claude-sonnet-4-6 Companion interview principal
MODEL_LIGHT claude-sonnet-4-6 Extracteur d'indicateurs
MODEL_EXTRACT claude-sonnet-4-6 (fallback)

Pourquoi OAuth direct (pas le wrapper) ?

Le wrapper injecte les outils Claude Code (Read/Glob/Grep...) dans chaque appel → contamination : le modèle génère du JSON extracteur au lieu de dialoguer à partir du tour 3. L'OAuth direct bypass ce problème. Voir ai-services.md#10 pour le détail du mécanisme auto-refresh.

RAG interne

Corpus de 78 indicateurs dans /home/automation/hesiodus/corpus/. Chargé via src/lib/companion/rag.ts — récupération au moment de la query (pas de vector store externe).

⚠️ Conflit de port avec Reading Coach Next

RAIM et reading-coach-next tournent tous les deux sur :3200. Seul l'un peut être actif à la fois. Nginx distingue par domaine (raim.srv759970 vs reading-coach-next.srv759970) mais les deux process ne peuvent pas coexister sur le même port.


6. Claudito — Web UI agents Claude Code ⚠️ DISABLED

Rôle

Interface web pour gérer des agents Claude Code autonomes. Expose une UI permettant de créer des projets, lancer des agents, suivre leur historique, et gérer leurs paramètres. Construit sur un stack Node.js custom.

Accès

Paramètre Valeur
URL publique https://claudito.srv759970.hstgr.cloud
Port interne 127.0.0.1:3000
Process systemd claudito.service (inactive, disabled depuis 2026-04-15)
Auth systemd credstore (claudito-username, claudito-password)
Backend Claude Code CLI (lance claude en subprocess)

Capacités (quand actif)

  • Gestion de projets (CRUD, arborescence)
  • Agents autonomes (ProjectAgent, ConversationAgent)
  • Ralph Loop (boucle récursive d'amélioration)
  • Git integration (commits, diffs)
  • Shell interactif
  • Roadmap et suivi de tâches

Relancer si besoin

sudo systemctl start claudito
# Vérifier credentials via credstore
systemctl cat claudito   # voir LoadCredentialEncrypted

Répertoire

/home/automation/claudito/
├── dist/          ← backend compilé
├── deploy/        ← docker-compose alternatif
└── doc/           ← référence API types

7. Paperclip — Plateforme d'agents IA (non configurée)

Rôle

Plateforme d'orchestration d'agents IA type entreprise (OpenCode/SST). Gère agents, budgets, approbations, sessions d'exécution. Déployée mais aucun provider LLM configuré.

Accès

Paramètre Valeur
URL publique https://paperclip.srv759970.hstgr.cloud
Container docker-server-1
Port interne 127.0.0.1:3110
DB docker-db-1 (PostgreSQL 17)
Auth better-auth (BETTER_AUTH_SECRET)

Statut

OPENCODE_ALLOW_ALL_MODELS=true actif — aucune restriction modèle côté plateforme. Pour activer : passer par l'UI → Settings → AI Providers.


Résumé pour décision

Besoin Interface à utiliser
Chat généraliste avec Claude + upload docs Open WebUI (rag.srv759970.hstgr.cloud)
Chat rapide avec Claude, multi-modèles LobeHub (lobehub.srv759970.hstgr.cloud)
Expérience vocale avec personnage IA Domo (domo.srv759970.hstgr.cloud)
Companion pour lecture d'un livre Reading Coach Next (reading-coach-next.srv759970.hstgr.cloud)
Audit pratiques IA (EU AI Act) RAIM (raim.srv759970.hstgr.cloud)
Lancer des agents Claude Code autonomes Claudito (désactivé — systemctl start claudito)
Orchestration multi-agents entreprise Paperclip (à configurer — ajouter un provider LLM)

Points d'attention

Port 3200 partagé (RAIM / Reading Coach Next) : les deux services ne peuvent pas tourner simultanément. Le dernier démarré prend le port, l'autre échoue silencieusement. À résoudre : migrer l'un des deux sur un autre port.

Processus fragiles (nohup) : RAIM et Reading Coach Next ne tournent pas sous PM2 — ils s'arrêtent au reboot ou déconnexion SSH. À migrer sous PM2 ou systemd.

Paperclip sans LLM : le container tourne mais est inutilisable sans configurer un provider IA dans l'UI.