# πŸ€– Effi - Assistant IA Personnel Self-Hosted Effi est un assistant IA personnel **100% auto-hΓ©bergΓ©**, avec mΓ©moire persistante, discussion vocale, gΓ©nΓ©ration d'images/audio, et surveillance systΓ¨me. --- ## πŸ—οΈ Architecture ### Infrastructure Multi-Machines | Machine | IP | RΓ΄le | Services | |---------|-----|------|----------| | **effi-server** | `192.168.1.27` | Serveur Docker principal | OpenWebUI, Qdrant, n8n, jean-router | | **folzo-Corp** | `192.168.1.11` | LLM + STT + TTS + Gen | Jean, Ollama, ComfyUI, effi-stt, openedai-speech, kreuzberg | | **NAS Synology** | `192.168.1.25` | Monitoring | Beszel Hub | ### SchΓ©ma Global ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ NAS SYNOLOGY (192.168.1.25) β”‚ β”‚ Beszel Hub :8090 β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ Monitoring β”‚ Monitoring β”‚ Monitoring β–Ό β–Ό β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ EFFI SERVER (192.168.1.27) β”‚ β”‚ FOLZO-CORP (192.168.1.11) β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Open WebUI β”‚ β”‚ Qdrant β”‚ β”‚ β”‚ β”‚ Jean β”‚ β”‚ Ollama β”‚ β”‚ β”‚ β”‚ Port 3000 β”‚ β”‚ Port 6333β”‚ β”‚ β”‚ β”‚ Port 8080 β”‚ β”‚ Port 11434 β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ llama.cpp β”‚ β”‚ Vision β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Ornith 35B β”‚ β”‚ mistral, β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Qwen3.6... β”‚ β”‚ qwen3.5:9b β”‚ β”‚ β”‚ β”‚ n8n β”‚ β”‚jean-routerβ”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ Port 5678 β”‚ β”‚ Port 3014β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ β”‚ ComfyUI β”‚ β”‚ effi-stt β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Port 8188 β”‚ β”‚ Port 8200 β”‚ β”‚ β”‚ β”‚ Beszel Agent β”‚ β”‚ Watchtowerβ”‚ β”‚ β”‚ β”‚ Image/Audio β”‚ β”‚ Whisper STT β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ openedai β”‚ β”‚ kreuzberg β”‚ β”‚ β”‚ β”‚ Port 8100 β”‚ β”‚ Port 8300 β”‚ β”‚ β”‚ β”‚ TTS β”‚ β”‚ Doc Extract β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ RX 7800 XT (VRAM 16GB) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` **Note :** jean-router gΓ¨re le routing dynamique entre Jean et Ollama avec gestion automatique de la VRAM partagΓ©e. Voir [ARCHITECTURE-JEAN-ROUTER.md](docs/ARCHITECTURE-JEAN-ROUTER.md) pour les dΓ©tails. --- ## πŸ“¦ Services ### FolzoCorp (192.168.1.11) | Service | Port | Image | RΓ΄le | RAM/VRAM | Auto-unload | |---------|------|-------|------|----------|-------------| | **Jean** | 8080 | Native | LLM inference (llama.cpp, presets dynamiques) | ~28GB | ArrΓͺt via API | | **Ollama** | 11434 | Native | LLM vision (mistral, qwen3.5:9b) | ~4-6GB | 5min aprΓ¨s dernier usage | | **ComfyUI** | 8188 | `yanwk/comfyui-boot:rocm` | Image + Audio generation | 18GB shm | βœ… aprΓ¨s 10min idle | | **effi-stt** | 8200 | Build local | Whisper STT | ~20MB | βœ… aprΓ¨s 5min idle | | **openedai-speech** | 8100 | `ghcr.io/matatonic/openedai-speech` | TTS | ~15MB | Non (GPU) | | **kreuzberg** | 8300 | `ghcr.io/kreuzberg-dev/kreuzberg:latest` | Document extraction | ~5MB | βœ… aprΓ¨s 10min idle | | **beszel-agent** | - | `henrygd/beszel-agent:latest` | Monitoring | ~5MB | Auto-start | **Note :** Jean et Ollama partagent la VRAM (RX 7800 XT, 16GB). jean-router gΓ¨re automatiquement le switch pour Γ©viter la contention mΓ©moire. ### EffiServer (192.168.1.27) | Service | Port | Image | RΓ΄le | |---------|------|-------|------| | **Open WebUI** | 3000 | `ghcr.io/open-webui/open-webui:main` | Interface IA | | **Qdrant** | 6333 | `qdrant/qdrant:latest` | Vector DB (RAG) | | **n8n** | 5678 | `docker.n8n.io/n8nio/n8n:latest` | Automatisation | | **jean-router** | 3014 | Build local | Routing dynamique Jean/Ollama + gestion VRAM | | **jean-proxy** | 3012 | Build local | Wake-on-LAN + Jean proxy | | **wol-proxy** | 3011 | Build local | Wake-on-LAN + Ollama proxy | | **beszel-agent** | - | `henrygd/beszel-agent:latest` | Monitoring | ### NAS Synology (192.168.1.25) | Service | Port | Image | RΓ΄le | |---------|------|-------|------| | **Beszel Hub** | 8090 | `henrygd/beszel:latest` | Monitoring central | --- ## 🎯 FonctionnalitΓ©s ### πŸ’¬ Chat IA - **Interface**: Open WebUI - **LLM principal**: Jean (llama.cpp) avec presets dynamiques - **ornith-35b-q6** (35B, Q6_K, reasoning) β€” modΓ¨le principal - **qwen3.6-27b-mtp** (27B, IQ4_XS, reasoning, MTP) - **qwen3.6-35b-moe-compact** (35B MoE, compact) - **qwen3.6-35b-moe-compact-reason** (35B MoE, reasoning) - **qwen3.6-35b-moe-nano** (35B MoE, nano) - **LLM vision**: Ollama (mistral, qwen3.5:9b) pour les tΓ’ches avec images - **Routing automatique**: jean-router dΓ©tecte le modΓ¨le demandΓ© et route vers Jean ou Ollama - **Gestion VRAM**: Switch automatique entre Jean et Ollama pour Γ©viter la contention mΓ©moire **Note :** Nouveaux presets Jean apparaissent automatiquement dans OpenWebUI sans configuration. Voir [ARCHITECTURE-JEAN-ROUTER.md](docs/ARCHITECTURE-JEAN-ROUTER.md) pour les dΓ©tails. ### πŸš€ jean-router β€” Routing dynamique LLM - **DΓ©couverte automatique**: Interroge Jean et Ollama pour lister les modΓ¨les disponibles - **Routing intelligent**: Route vers Jean (presets) ou Ollama (vision) selon le modΓ¨le demandΓ© - **Switch automatique**: Change de preset Jean si nΓ©cessaire (via API web) - **Gestion VRAM**: - ArrΓͺte Jean quand on passe sur Ollama (libΓ¨re VRAM) - Garde Ollama en mΓ©moire 5 min avant dΓ©chargement automatique - Γ‰vite la contention mΓ©moire entre les deux backends - **API OpenAI-compatible**: `/v1/models` et `/v1/chat/completions` ### 🎀 Pipeline Vocal - **STT**: Whisper large-v3 via effi-stt (CPU, dΓ©chargement auto) - **TTS**: XTTS v2 via openedai-speech (GPU ROCm) ### πŸ–ΌοΈ GΓ©nΓ©ration Images/Audio - **ComfyUI**: Workflows pour image et audio - **ModΓ¨le audio**: ACE-Step ( gΓ©nΓ©ration musicale) - **ModΓ¨les image**: Multiples checkpoints disponibles ### πŸ“„ Extraction Documents - **Kreuzberg**: Extraction 90+ formats (PDF, DOCX, images, etc.) - IntΓ©grΓ© Γ  OpenWebUI via CONTENT_EXTRACTION_ENGINE=docling ### 🧠 MΓ©moire - **Type**: MΓ©moire manuelle via OpenWebUI (snippets) - **RAG**: Qdrant pour embeddings sΓ©mantiques ### πŸ“Š Monitoring - **URL Beszel**: http://192.168.1.25:8090 - **Agents actifs**: - FolzoCorp (192.168.1.11) - GPU AMD RX 7800 XT - EffiServer (192.168.1.27) - Intel J5040 ### πŸ› οΈ Tool OpenWebUI - Beszel Outil custom pour interroger Beszel depuis OpenWebUI via Effi. **FonctionnalitΓ©s actuelles**: - `get_system_stats` β†’ retourne CPU, RAM, GPU (%) - DonnΓ©es temps rΓ©el depuis `info` (cpu, mp=gpu, g=gpu, dt=timestamp) **AmΓ©liorations futures** (pas encore implΓ©mentΓ©es): - Support historique: donnΓ©es des N derniΓ¨res minutes - Filtres par pΓ©riode - Graphiques/MΓ©triques avancΓ©s - Alertes automatisΓ©es via le tool **Documentation**: [Tool Beszel OpenWebUI](./docs/TOOL-BESZEL-OPENWEBUI.md) ### Scripts Memory | Script | Condition | Action | |--------|-----------|--------| | comfyui-memory-manager.py | 10min idle + VRAM<1% + RAM>5GB | Restart container | | kreuzberg-memory-manager.py | 10min idle + RAM>2GB | Restart container | | effi-stt | 5min idle | DΓ©chargement modΓ¨le Whisper | ### Commandes Utiles | Script | Condition | Action | |--------|-----------|--------| | comfyui-memory-manager.py | 10min idle + VRAM<1% + RAM>5GB | Restart container | | kreuzberg-memory-manager.py | 10min idle + RAM>2GB | Restart container | | effi-stt | 5min idle | DΓ©chargement modΓ¨le Whisper | ### Commandes Utiles ```bash # Statut services sudo systemctl status comfyui-memory-manager kreuzberg-memory-manager docker ps # Logs journalctl -u comfyui-memory-manager -f docker logs -f comfyui # MΓ©triques Beszel python3 scripts/beszel_client.py --system folzocorp --check stats ``` --- ## πŸ“š Documentation - [Architecture jean-router](./docs/ARCHITECTURE-JEAN-ROUTER.md) β€” Routing dynamique LLM + gestion VRAM - [Session 2026-07-20](./docs/05-journal/SESSION-2026-07-20-JEAN-ROUTER.md) β€” CrΓ©ation de jean-router - [Installation Beszel](./docs/BESZEL-INSTALLATION.md) - [Gestion MΓ©moire](./docs/MEMOIRE-GESTION.md) - [Session 2026-04-12](./docs/SESSION-2026-04-12-RAM-BESZEL.md) - [Guide ACE-Step](./docs/guide-ace-step.md) - [Guide ComfyUI](./comfyui/README.md) --- ## πŸ”— Technologies | Domaine | Technologies | |---------|-------------| | **LLM** | Jean (llama.cpp), Ollama (vision) | | **Routing** | jean-router (Flask, routing dynamique + gestion VRAM) | | **Interface** | Open WebUI | | **STT** | Faster Whisper (CPU) | | **TTS** | XTTS v2 (ROCm GPU) | | **Image/Audio** | ComfyUI + ACE-Step | | **Vector DB** | Qdrant | | **Document** | Kreuzberg (docling) | | **Automatisation** | n8n | | **GPU** | AMD RX 7800 XT (ROCm) | | **Monitoring** | Beszel | --- ## πŸ“ Structure du Projet ``` effi/ β”œβ”€β”€ beszel/ # Configuration Beszel β”‚ β”œβ”€β”€ docker-compose-hub.yml # Hub (Synology) β”‚ β”œβ”€β”€ docker-compose-agent-folzocorp.yml # Agent FolzoCorp β”‚ └── docker-compose-agent-effiserver.yml # Agent EffiServer β”‚ β”œβ”€β”€ comfyui/ # ComfyUI (Image/Audio) β”‚ β”œβ”€β”€ docker-compose.yml β”‚ β”œβ”€β”€ custom_nodes/ # Nodes personnalisΓ©s β”‚ β”œβ”€β”€ models/ # ModΓ¨les checkpoints, VAE, LoRA β”‚ └── workflows/ # Workflows JSON β”‚ β”œβ”€β”€ effi-stt/ # STT Whisper β”‚ β”œβ”€β”€ docker-compose.yml β”‚ β”œβ”€β”€ Dockerfile β”‚ └── main.py # API avec timeout auto-unload β”‚ β”œβ”€β”€ effi-kreuzberg/ # Documentation Kreuzberg β”‚ β”œβ”€β”€ README.md β”‚ └── MIGRATION.md β”‚ β”œβ”€β”€ scripts/ # Scripts utilitaires β”‚ β”œβ”€β”€ beszel_client.py # Client API Beszel β”‚ β”œβ”€β”€ comfyui-memory-manager.py # Restart ComfyUI aprΓ¨s idle β”‚ β”œβ”€β”€ kreuzberg-memory-manager.py # Restart Kreuzberg si >2GB β”‚ └── start-memory-monitors.sh β”‚ β”œβ”€β”€ systemd/ # Services systemd β”‚ β”œβ”€β”€ comfyui-memory-manager.service β”‚ β”œβ”€β”€ kreuzberg-memory-manager.service β”‚ β”œβ”€β”€ beszel-agent-wake.service β”‚ └── ollama.service # Ollama LLM (folzo-Corp) β”‚ β”œβ”€β”€ docs/ # Documentation β”‚ β”œβ”€β”€ SESSION-2026-04-12-RAM-BESZEL.md β”‚ β”œβ”€β”€ BESZEL-INSTALLATION.md β”‚ β”œβ”€β”€ MEMOIRE-GESTION.md β”‚ └── TOOL-BESZEL-OPENWEBUI.md β”‚ └── docker-compose*.yml # Divers compose files (legacy/backup) ``` --- ## πŸ“ Historique **Juillet 2026** - jean-router : routing dynamique LLM + gestion VRAM ### jean-router βœ… - CrΓ©ation de jean-router (Flask) pour routing dynamique entre Jean et Ollama - DΓ©couverte automatique des presets Jean via `/api/presets` - DΓ©couverte automatique des modΓ¨les Ollama via `/api/tags` - Nouveaux presets Jean automatiquement visibles dans OpenWebUI - Gestion VRAM : arrΓͺt Jean quand on passe sur Ollama, timer 5min pour Ollama - Suppression de LiteLLM (une couche de moins, config statique obsolΓ¨te) - OpenWebUI pointe directement vers jean-router:3014 ### Jean (llama.cpp) βœ… - Migration vers Jean comme backend LLM principal - Presets dynamiques : ornith-35b-q6, qwen3.6-27b-mtp, qwen3.6-35b-moe-compact... - Service systemd avec dΓ©marrage au boot (sans login) - API web pour gestion (start/stop/switch presets) **Avril 2026** - Optimisation RAM + Monitoring + Tool OpenWebUI ### RAM Management βœ… - Scripts dΓ©chargement mΓ©moire avec restart container (ComfyUI, Kreuzberg) - Timeout inactivitΓ© 300s pour effi-stt avec dΓ©chargement Whisper - Services systemd pour gestion automatique ### Beszel Monitoring βœ… - Hub sur NAS Synology (http://192.168.1.25:8090) - Agents sur FolzoCorp + EffiServer + NAS Synology - Service restart aprΓ¨s veille (beszel-agent-wake.service) ### Tool OpenWebUI Beszel βœ… - Outil custom pour interrogation Beszel depuis OpenWebUI - Endpoint PocketBase: `/api/collections/users/auth-with-password` - DonnΓ©es extraites du champ `info` (cpu, mp, g, dt, la, etc.) - Pattern Valves Pydantic pour configuration ### LLM Optimization (gemma4:e4b) βœ… - Installation gemma4:e4b (9.6GB, 128K context, MMLU 82.6%) - Service systemd Ollama propre (User=folzo, auto-start) - Variables: OLLAMA_FLASH_ATTENTION=1, OLLAMA_KV_CACHE_TYPE=q8_0, OLLAMA_CONTEXT_LENGTH=32768 - Note: gemma4:26b (18GB) ne tient pas dans 17GB VRAM RX 7800 XT ### RAG Optimization βœ… - effi-server: RAG_SYSTEM_CONTEXT=True (meilleur KV cache pour RAG) - effi-server: ENABLE_RAG_HYBRID_SEARCH=True **AmΓ©liorations futures**: - Support historique (donnΓ©es des N derniΓ¨res minutes) - Filtres par pΓ©riode - Graphiques et alertes automatisΓ©es **Mars 2026** - GΓ©nΓ©ration Audio - IntΓ©gration ACE-Step pour gΓ©nΓ©ration musicale - ComfyUI avec ROCm **FΓ©vrier 2026** - Stack Vocale - effi-stt avec Whisper large-v3 - openedai-speech avec XTTS v2 - Kreuzberg pour extraction documents --- ## πŸ™‹ Auteur **Folzo** - [gitea.folzocorp.fr/Folzo](https://gitea.folzocorp.fr/Folzo) --- *DerniΓ¨re mise Γ  jour : Avril 2026*