Chapitre 18 / 39

OpenWebUI — le chat d'équipe avec les modèles locaux

OpenWebUI est l’endroit où chacun chez Sodimo parle aux modèles IA locaux. Ouvrir la page, choisir un modèle, taper une question. Ça tourne sur le Framework Desktop sur site — rien ne quitte le bureau. Pour les travaux planifiés ou en arrière-plan, l’équipe utilise Paperclip à la place (chapitre Paperclip).

Statut : Planifié — s’active quand le Framework Desktop est sur site et les modèles locaux sont chargés. La configuration est committée dans sodimo/harness ; la page passe en ligne le jour où la machine démarre.


Comment y accéder

La page est accessible à chat.sodimo.eu, via le Cloudflare Tunnel → Caddy → openwebui:8080. Il n’y a pas d’écran de connexion. Quiconque Cloudflare Access admet au bord est directement dedans, avec le même compte de niveau administrateur que tout le monde.

C’est délibéré. Le contrôle d’accès se situe au bord — Cloudflare Access décide qui peut voir l’URL, et OpenWebUI fait confiance au header Cf-Access-Authenticated-User-Email en aval. Une fois à l’intérieur, l’équipe partage un seul espace de travail. Pas de réinitialisation de mot de passe, pas de provisionnement de compte, pas d’identifiant oublié.

Posture verrouillée, définie dans openwebui.env :

  • WEBUI_AUTH=false, ENABLE_LOGIN_FORM=false, ENABLE_SIGNUP=false
  • DEFAULT_USER_ROLE=admin
  • ENABLE_COMMUNITY_SHARING=false, ENABLE_USER_WEBHOOKS=false

Embeddings RAG — routés via LiteLLM

Le pipeline RAG par défaut d’OpenWebUI télécharge des modèles d’embedding depuis HuggingFace au premier démarrage, ce qui bloque indéfiniment sur une machine en accès restreint. Les embeddings sont à la place routés via LiteLLM vers le modèle local local-embeddings :

  • RAG_EMBEDDING_ENGINE=openai
  • RAG_EMBEDDING_MODEL=local-embeddings
  • RAG_OPENAI_API_BASE_URL=http://litellm:4000
  • RAG_OPENAI_API_KEY=<LiteLLM master key>

Pas de téléchargement HuggingFace, pas de trafic hors de la machine, comptabilité des tokens cohérente. Appliqué en smoke le 2026-04-22 ; le câblage côté dépôt est bloqué sur sodimo/dotfiles#15 (les fichiers .env sont dans le gitignore — besoin de fichiers .env.tmpl compagnons).


À quoi ressemble une session

  1. Ouvrir la page. L’interface de chat se charge.
  2. Choisir un modèle dans le menu déroulant — les modèles locaux activés pour Sodimo.
  3. Taper un prompt. La réponse arrive en streaming depuis le Framework Desktop. Observé de bout en bout lors du smoke du 2026-04-22 : 53 tok/s sur local-task (qwen3-4b) via la chaîne complète — voir Stack IA locale → Smoke benchmark.
  4. Optionnellement, déposer un fichier (un PDF, un CSV, un email) et poser des questions sur son contenu. Le fichier reste sur la machine ; les embeddings tournent sur local-embeddings via LiteLLM.
  5. Quand un outil Sodimo est disponible (consultation client, requête AR, correspondance catalogue — voir le chapitre Ce à quoi l’IA peut accéder), le modèle peut l’appeler pendant la réponse.

Chaque échange est enregistré dans le registre d’exécution : quel modèle, combien de tokens, combien de temps, si ça est resté local ou a escaladé. Les identités individuelles ne sont pas suivies à l’intérieur d’OpenWebUI — la page est partagée — mais l’usage agrégé apparaît sur le dashboard des coûts.


Prompts partagés

OpenWebUI a un espace « Prompts » que toute l’équipe voit. C’est l’étagère de skills de l’équipe : des prompts pré-rédigés pour les tâches courantes — résumer cet email, réécrire en anglais, traduire en français, rédiger un accusé de réception de commande. N’importe qui peut enregistrer un nouveau prompt et la prochaine personne qui ouvre la page le voit.

Les skills plus lourds — briefs du matin, brouillons de lettres de relance, rapports mensuels pour le conseil — sont rédigés dans la bibliothèque de skills (chapitre Bibliothèque de skills) et exécutés depuis le terminal, Claude.ai, ou sur un planning. OpenWebUI est pour les demandes ponctuelles qui ne méritent pas un skill nommé.


Quand utiliser OpenWebUI plutôt que Paperclip ou Claude.ai

BesoinUtiliser
Chat ponctuel avec un modèle local, aucune donnée ne quitte le bâtimentOpenWebUI
Un agent planifié ou en arrière-plan (brief du matin, brouillon overnight)Paperclip
Une demande plus complexe où le palier local ne suffit pasSiège Claude.ai

Ce qu’OpenWebUI n’est pas

Ce n’est pas le CRM, pas la boîte de réception, pas un constructeur de dashboards. Chat uniquement, avec les modèles locaux. Les agents planifiés, le travail en arrière-plan, et tout ce qui doit tourner sans un humain qui regarde passent par Paperclip (chapitre Paperclip). L’escalade cloud vers Claude passe par les sièges Claude.ai existants, pas par un sélecteur de modèle dans OpenWebUI.