- dashboard_status utilise le cache presets au lieu d'appeler Jean
- jean_service_ok/ollama_service_ok silencieux (pas de warning log)
- slot check uniquement si jean est UP
- [Presets] Erreur ne vient plus du dashboard mais d'OpenFox/OpenWebUI
- PC: TCP connect (ON/OFF) → WoL uniquement si OFF
- Jean: HTTP /api/presets (UP/DOWN)
- Ollama: HTTP /api/version (UP/DOWN)
- Dashboard: 3 lignes de statut distinctes
- WoL ne se declenche que si PC OFF, pas si service DOWN
- TCP connect vers 8090 ou 11434 (pas de requete HTTP)
- ConnectionRefused = PC allume (service down)
- Timeout = PC eteint → WoL
- Plus de spam HTTP vers un serveur bloque
- Quand le PC est eteint/en veille, stream immediat de messages
- 'PC de jeu se reveille...' → 'Magic packet envoye...' → 'Demarrage X%...'
- Une fois pret, forward la vraie reponse en stream
- Plus de blocage silencieux, l'utilisateur voit la progression
- Detection si Jean/Ollama inaccessible
- Envoi magic packet WoL vers TARGET_MAC (fallback PC_GAMING_MAC)
- Attente WAKE_TIMEOUT secondes que la machine demarre
- Integration dans get_presets, get_ollama_models, chat_completions
- Verrous pour eviter les WoL simultanes
- Active via ENABLE_WOL=true
- /v1/models expose name au lieu de l'id technique des presets Jean
- Routing: resolution name -> id interne pour le switch
- Correspondance bidirectionnelle dans chat_completions
- Suppression du preset_ctx_map code en dur
- Resolution dynamique: Jean /v1/models → matching Ollama → heuristique
- Ajout max_tokens / max_input_tokens dans /v1/models
- Enrichissement Ollama via /api/show pour donnees manquantes
- Detection capabilities (vision, thinking) pour presets Jean
- Auto-doublement max_tokens pour presets reasoning=on
- Timeout switch augmente a 15s avec retry
- Tracking du dernier preset actif (bypass bug Jean active=false)
- Cache TTL configurable (15s par defaut), ?refresh=true
- Plan de test des capacites LLM
OpenFox looks for max_model_len in /v1/models response to determine
context window size. This commit:
- Adds max_model_len field to Jean models
- Adds max_model_len field to Ollama models
- Removes dead code after return statement
- Add context_length and context_window fields at model root level
- Keep them in meta for backward compatibility
- This should allow OpenFox to properly detect max context size
The function was accidentally truncated when adding get_jean_context_lengths().
This caused TypeError: 'NoneType' object is not iterable in list_models().
- Add get_jean_context_lengths() to fetch n_ctx from Jean /v1/models
- Add preset_ctx_map with known CTX values for each preset
- Add context_length to Jean model metadata in /v1/models
- Add context_length to Ollama model metadata from details.context_length
- This allows OpenFox to know the max tokens each model can handle
- Add OLLAMA_KEEP_ALIVE_MINUTES config (default: 5)
- schedule_ollama_unload(): delays Ollama unload when switching to Jean
- cancel_ollama_unload(): cancels timer if returning to Ollama
- Ollama models stay in VRAM for X minutes after last use
- Timer resets on each Ollama request
- stop_jean(): stops Jean service to free VRAM before Ollama use
- start_jean(): starts Jean service when switching back from Ollama
- unload_ollama(): forces Ollama to unload models before Jean use
- ensure_vram_for_backend(): orchestrates VRAM switching
- Tracks active backend state to avoid unnecessary switches
- Configurable timeouts via environment variables
- Prevents VRAM contention between Jean and Ollama
- jean-router interroge /api/presets pour lister dynamiquement les presets Jean
- Support Ollama via /api/tags pour les modèles vision
- Switch automatique de preset quand nécessaire
- Expose /v1/models avec tous les modèles disponibles
- Route les requêtes vers Jean ou Ollama selon le modèle demandé
- Nouveaux presets Jean automatiquement visibles dans OpenWebUI
Architecture:
open-webui → LiteLLM:4000 → jean-router:3014
├→ jean-proxy:3012 → Jean (.11:8080)
└→ wol-proxy:3011 → Ollama (.11:11434)
- Switched from large-v3 (1.56B) to distil-large-v3 (~756M) — 2x faster transcription
- Increased CPU threads from 4 to 8 (Ryzen 5800X3D has 8c/16t)
- French language quality preserved (~5% accuracy tradeoff for 2x speed)
- Expected pipeline latency: 4-5s total (down from ~15s)
- All models now route through single jean-proxy:3012 → orchestrator:8080
- Removed jean-proxy-moe (no longer needed with auto-switch orchestrator)
- Added qwen3.6-moe and qwen3.6-moe-reason model routes
- Updated architecture comments
LiteLLM expose l'API OpenAI /v1/* pas l'API Ollama /api/*. open-webui
doit etre branche via la section 'OpenAI API' (env OPENAI_API_BASE_URL +
OPENAI_API_KEY), pas via 'Ollama'. L'override ajoute ces vars a open-webui,
force-recreate pour propager. Confirme en prod: HTTP 200 sur :4000/v1/models
depuis le conteneur open-webui. Les 4 modeles Qwen3.6 remontent dans le chat.
Contrainte VRAM: RX 7800 XT 16Go ne peut pas co-heberger Qwen3.6-27B
(14.6 Go) + llama3.1-8b (5 Go). Ollama commente, on expose 3 profils
du meme modele Qwen3.6 via le toggle chat_template_kwargs.enable_thinking:
- qwen3.6-reason / qwen3.6-27b : raisonnement ON (taches complexes)
- qwen3.6-fast / qwen3.6 : raisonnement OFF (chat rapide ~400ms TTFT)
drop_params=false pour passer chat_template_kwargs a Jean.
Teste en prod: qwen3.6-fast repond BONJOUR en 400ms, MTP 3/3 acceptes.
Architecture (voir docs/ARCHITECTURE-LITELLM.md):
open-webui -> LiteLLM:4000
|- qwen3.6-27b -> jean-proxy:3012 -> Jean (.11:8080)
|- llama3.1-8b -> wol-proxy:3011 -> Ollama (.11:11434)
Nouveaux fichiers:
- wol-proxy/ (versionne l'app.py de prod deja en place)
- jean-proxy/ (clone du wol-proxy avec HEALTH_PATH=/health + retry post-WoL
pour services qui mettent du temps a demarrer apres WoL, ex: Jean qui
charge 14 Go en VRAM)
- litellm/config.yaml (routing par nom de modele, drop_params=true)
- docker-compose.litellm.yml (override ADDITIF: ajoute uniquement jean-proxy
et litellm, ne redemarre PAS open-webui/wol-proxy/hermes)
Teste en prod sur .27: Jean + Ollama repondent via LiteLLM:4000 avec
path-through de chat_template_kwargs.enable_thinking (raisonnement Qwen3.6
desactivable par requete). Zero impact hermes-webui/wol-proxy.
Basculer open-webui reste une etape manuelle (step 3 de la doc).
- Server API (/api/items/) does not expose note CRUD, only sync protocol
- Clipper API is the only way to read/write notes remotely
- Requires Joplin desktop open + Web Clipper enabled
- Added ping() function to check connectivity
- Valves: joplin_url, joplin_api_token
- Tool with Valves (leantime_url, leantime_api_key)
- 14 functions: projects, tickets, comments, users, timesheets, status labels
- JSON-RPC 2.0 client matching Leantime API
- Activate/deactivate per conversation in Open WebUI
- Added Valves (Pydantic) pattern for ocr_url configuration via wheel icon
- Inspired by Kreuzberg tool: multi-level file search (exact, substring, word matches)
- Support for multi-file OCR with extract_text_from_images
- Added search_files function for pattern matching
- effi-ocr runs on port 8301 (Tesseract with preprocessing)
- Original prompt kept for reference (200+ lines, too verbose)
- New optimized prompt: ~40 lines, -75% tokens
- Added table for tools usage (Kreuzberg, web_search, sub-agent, etc.)
- Optimized version includes explicit Kreuzberg usage for OCR
- README: add Tool OpenWebUI section with current features
- README: update Historique with Tool section
- Tool doc: add Limitations and Future Improvements sections
Future improvements noted:
- Support historique (données N dernières minutes)
- Filtres par période
- Graphiques et alertes automatisées
Permet à Effi de:
- get_all_stats() - Stats de tous les systèmes
- get_system_stats('folzocorp') - Stats d'un système
- check_alerts() - Vérifier les alertes
- get_gpu_status('folzocorp') - Status GPU AMD
- can_run_comfyui() - Vérifier si ComfyUI peut tourner
- Fix bug where old history entries were counted as recent activity
- Added recent_threshold parameter (default 300s)
- is_recent_history() now checks timestamp of last history item
- Add full architecture diagram with all machines (FolzoCorp, EffiServer, NAS)
- Document all services on each machine with ports and roles
- Add memory management section (auto-unload scripts)
- Add project structure tree
- Update technologies list
- Add documentation links
- Monitors VRAM, queue status, and history
- Restarts ComfyUI container after timeout if RAM > 5GB and VRAM < 1%
- More effective at freeing RAM than model unloading alone
- Corriger extraction VRAM via API correcte
- Ajouter gestion signaux propre
- Ajouter TimeoutStopSec pour arrêt propre
- Ajouter service restart Beszel au réveil
- effi-stt: Déchargement Whisper après 300s inactivité (INACTIVITY_TIMEOUT)
* Nouveaux endpoints: /unload, /reload, /stats
* Modelo rechargé à la première requête
- ComfyUI: Script monitor qui décharge VRAM après inactivité
* Vérifie usage VRAM toutes les 60s
* Exécute workflow UnloadAllModelsNode après 300s inactivité
- Kreuzberg: Manager qui redémarre le container après seuil mémoire + inactivité
* Restart si > 2GB pendant > 10min inactif
- Documentation: docs/MEMOIRE-GESTION.md
- Add download-ace-step-full.sh script for easier model downloads
- Remove effi-ocr (migrated to effi-kreuzberg for OCR functionality)
- Generate Song v0.5.4 now fully functional with JK-AceStep-Nodes
- Removed image preprocessing (Kreuzberg handles it internally)
- Improved file search (partial name matching)
- Shows available files when file not found
- Uses mimetypes for proper content-type
- Better file finding (startswith + contains)
- Normalize language codes (French->fra, English->eng, etc.)
- List all files in directory when searching
- Add extract_files() for processing multiple files one by one
- Support comma-separated and JSON array input
- Switch OCR backend from Tesseract to PaddleOCR (better accuracy)
- Update tool description
- Convert images to grayscale before OCR
- Increase contrast by 2x for better text detection
- This matches the preprocessing that effi-ocr (Tesseract) was using
- Add docs/guide-ace-step.md with complete installation guide
- Add comfyui/download-ace-step.sh script for downloading model
- Add ComfyUI-Unload-Model custom node for model memory management
ACE-Step 1.5 Turbo: MIT license, <4GB VRAM, 50+ languages
- Update TOOL-OPENWEBUI.md with correct OCR_URL for local deployment
- Add docker-compose-ocr.yml for deploying effi-ocr on effi-server
- Clarify architecture: effi-ocr must be on same server as OpenWebUI
- Update environment variable documentation for OCR_URL
- Add docs/audio/tts-research.md with Voxtral TTS, Kokoro-FastAPI, openedai-speech comparison
- Add docs/audio/stt-research.md with Voxtral STT, faster-whisper options
- Add docs/gpu/optimization.md with OLLAMA_KEEP_ALIVE and VRAM management
- Add docs/README.md with architecture overview
- Add index files for docs navigation
Research conducted April 2026 for future audio improvements
- Création du répertoire docs/prompts/
- VERSIONS.md: Historique des versions du prompt
- prompt-v1.md: Version actuelle du prompt système
Ce système permet de garder les anciennes versions
du prompt lors des modifications futures.
- Effi-OCR: Service OCR avec Tesseract (multilingue FR/EN)
* API FastAPI sur port 8300
* Prétraitement images (contraste, niveaux de gris)
* Tool OpenWebUI intégré
- Web Scraper: Service Python (BeautifulSoup) sur port 11235
* Alternative à Crawl4AI (incompatible ARM64/J5040)
* Scraping HTML basique mais fonctionnel
* Intégré au docker-compose d'effi-server
- Documentation:
* ROADMAP-FONCTIONNALITES.md: Plan des 9 fonctionnalités
* WEB-SCRAPER-CONFIG.md: Configuration OpenWebUI
* WEB-SCRAPER-TOOL.md: Code du Tool
- Script start-all-services.sh mis à jour (6 services)
- check-services.sh: Verify all services after WOL
- start-all-services.sh: Start all containers after boot
- WOL-ET-DEMARRAGE-AUTO.md: Complete guide for auto-start
- Ensure ComfyUI starts automatically with Docker