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¶
Commandes utiles¶
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/.env → ACCESS_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¶
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:3873 → claude-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.