Conduit : un client Flutter natif pour Open WebUI, Ollama et agents auto-hébergés
Native iOS and Android client for Open WebUI, direct OpenAI-compatible, Ollama, and Hermes agents.
En bref
- De quoi s’agit-il ?
- Conduit comble les angles morts d'Open WebUI sur mobile : authentification derrière un reverse proxy, streaming qui survit à la mise en arrière-plan, pièces jointes et lancement depuis l'écran d'accueil. Voici ce que le dépôt décrit, ce qu'il ne dit pas, et pour qui l'outil tient la route.
- À qui s’adresse-t-il ?
- Conduit convient à ceux qui font tourner Open WebUI, Ollama ou un serveur Hermes et veulent un client mobile natif, avec les conversations stockées d'abord sur l'appareil. Il ne convient pas à qui cherche un client multi-fournisseurs centralisé, ni à un utilisateur Android qui voudrait les fonctions Apple On-Device ou Private Cloud Compute, réservées à iOS 26 et iOS 27.
- Puis-je l’utiliser commercialement ?
- Oui, sous conditions. GPL-3.0 est une licence copyleft : si vous distribuez un logiciel qui l’inclut, vous devez publier le code source de ce logiciel sous la même licence. Un usage interne, sans distribution, ne déclenche pas cette obligation.
- Est-il encore maintenu ?
- Oui. Les derniers commits datent d’il y a 1 jour.
- En quel langage est-il écrit ?
- Principalement Dart, d’après les statistiques de langage de GitHub.
Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.
ANALYSE OPEN SOURCE APPROFONDIE
Le problème que Conduit attaque, et pour qui
Open WebUI fonctionne bien sur ordinateur. Le README énonce le constat sans détour : sur mobile, l'expérience casse aux extrémités. Authentification derrière un reverse proxy, streaming qui s'interrompt quand l'application passe en arrière-plan, insertion d'une capture d'écran dans un prompt, démarrage d'une conversation depuis l'écran d'accueil. Conduit est un client Flutter natif construit pour combler cet écart, et depuis la version 4.0 il fonctionne avec ou sans serveur Open WebUI.
Le public visé est précis. D'un côté, ceux qui hébergent eux-mêmes Open WebUI et veulent y accéder depuis un téléphone sans passer par l'interface web. De l'autre, ceux qui parlent directement à un point d'accès compatible OpenAI, à Ollama, à OpenRouter, ou à un agent Hermes auto-hébergé, sans compte Open WebUI. Le README insiste sur un point d'architecture : les conversations vivent d'abord sur l'appareil, et rien ne transite par un backend opéré par le mainteneur. C'est un argument de conception, pas une promesse de sécurité, et il faut le lire comme tel.
Trois familles de connexion, un seul chemin de chat
Au premier lancement, Conduit demande comment se connecter. Le README décrit cinq modes, regroupés en trois familles. Open WebUI pointe vers votre serveur et débloque l'ensemble : conversations, dossiers, notes, canaux, workspace, outils, recherche web, génération d'images. Direct couvre les points d'accès compatibles OpenAI (Chat Completions ou Responses), LM Studio, les versions d'API de style Azure, Ollama natif et OpenRouter en première partie. Les connexions Direct déjà configurées dans Open WebUI sont reprises automatiquement, et les clés comme les en-têtes personnalisés restent dans le stockage sécurisé de la plateforme.
Deux modes Direct sont propres à iOS. Apple On-Device s'appuie sur le SystemLanguageModel local d'Apple, exige iOS 26 et Apple Intelligence, fonctionne hors ligne, et prend en charge le streaming, les contrôles d'échantillonnage et les réponses au format JSON Schema avec une fenêtre de contexte de 4K. Le README précise aussi ce qui manque : entrée d'image, contrôles de raisonnement et appel d'outils ne sont pas disponibles. Apple Private Cloud Compute utilise le framework Foundation Models, exige iOS 27, la disponibilité d'Apple Intelligence et l'entitlement PCC géré par Apple. Il accepte l'entrée d'image, les niveaux de raisonnement, les limites d'échantillonnage et de sortie, les réponses JSON Schema, un statut de quota et de contexte en direct, et un repli local optionnel en cas d'échec réseau du PCC. L'appel d'outils n'y est pas activé.
Hermes Agent se branche sur votre propre serveur Hermes. Vous suivez ses outils en direct, vous approuvez les étapes sensibles avant exécution, et vous laissez des agents planifiés tourner. Le README indique que Conduit n'expose que les capacités que votre serveur déclare réellement.
Le rendu natif plutôt que la web view
Le README revendique des surfaces Flutter natives, pas une web view emballée dans une coquille. Concrètement, cela se traduit par des blocs de code colorés syntaxiquement avec copie et aperçu, des diagrammes Mermaid rendus nativement, du LaTeX et des mathématiques, des sections de raisonnement, d'appel d'outil et d'exécution de code dépliables, des citations en ligne, des cartes de source, des suggestions de suivi, et des intégrations Chart.js.
Le streaming se fait token par token via WebSocket. Le README décrit le comportement attendu : la transcription garde sa place pendant qu'une réponse grandit, les prompts épinglés restent en place, et les longues conversations se chargent sans bloquer l'interface. C'est une affirmation de conception, pas un résultat mesuré ici. Le reste de l'application suit la même logique : un Workspace avec modèles, connaissances, prompts, outils et compétences sous forme d'écrans natifs et une navigation de réglages unifiée, où les sections non autorisées n'apparaissent simplement pas. Les fichiers et médias couvrent l'envoi, le rattachement de fichiers déjà présents sur le serveur, les prompts multimodaux, le collage d'image depuis le presse-papiers et les pièces jointes audio. Les notes s'enregistrent automatiquement, se fixent, reçoivent des titres générés et une amélioration par IA, avec enregistrement audio, et restent disponibles hors ligne. Les canaux gèrent fils et réactions quand votre serveur les active. La voix combine saisie avec reconnaissance vocale locale ou côté serveur, et un mode appel vocal complet.
Ce que le dépôt ne permet pas de trancher
Plusieurs zones restent floues à la lecture du README. Les fonctionnalités Open WebUI dépendent de ce que le serveur expose, mais le document ne liste pas les versions minimales requises côté serveur. Impossible de savoir à partir de ce matériel si une instance ancienne fait disparaître les canaux, les fils ou les réactions, ou si elle provoque des erreurs visibles. Même remarque pour Hermes : l'application n'expose que les capacités rapportées par le serveur, donc le comportement en cas de serveur partiel n'est pas décrit.
Les modes Apple posent une contrainte matérielle explicite, et c'est une vraie limite d'adoption : iOS 26 pour On-Device, iOS 27 pour Private Cloud Compute, avec Apple Intelligence disponible et, pour le PCC, l'entitlement géré par Apple. Aucun équivalent Android n'est mentionné pour ces deux modes. Un utilisateur Android n'y a pas accès, point. La fenêtre de contexte de 4K du mode On-Device est également étroite pour du travail sur de longs documents, et l'absence d'appel d'outils y ferme la porte aux usages agentiques.
Enfin, le README ne documente pas de mécanisme de synchronisation entre appareils. Il dit que les conversations vivent d'abord sur l'appareil, ce qui laisse ouverte la question de ce qui est conservé côté serveur Open WebUI et de ce qui reste local. Ce n'est pas une faille, c'est une zone que la documentation ne couvre pas.
Installation et configuration
Le chemin le plus court passe par les magasins. Le README fournit deux liens : l'application est publiée sur Google Play sous l'identifiant app.cogwheel.conduit, et sur l'App Store sous l'identifiant 6749840287. Aucune commande n'est nécessaire pour cette voie.
Pour compiler depuis les sources, le dépôt renvoie vers docs/BUILDING.md, que le matériel fourni ne détaille pas. Le projet est écrit en Dart avec Flutter, donc la chaîne d'outils attendue est celle de Flutter, mais le README ne donne ni version de SDK ni commande de build dans l'extrait disponible. Il faut se référer à ce fichier avant de planifier une compilation.
Côté configuration, le premier lancement déclenche le choix du mode de connexion. Pour Open WebUI, il faut l'URL de votre serveur et de quoi vous authentifier derrière votre reverse proxy. Pour Direct, il faut l'URL du point d'accès et éventuellement une clé d'API, sauf pour un point d'accès local qui n'en demande pas. Le README précise que les clés et les en-têtes personnalisés personnalisés restent dans le stockage sécurisé de la plateforme. Les connexions Direct déjà définies dans Open WebUI sont importées automatiquement. Pour Hermes, il faut l'adresse de votre serveur Hermes ; l'application n'affichera que les capacités que ce serveur annonce.
Face à un client web auto-hébergé dans un navigateur
L'alternative la plus directe consiste à ouvrir Open WebUI dans le navigateur du téléphone, ou à l'encapsuler dans une web view. La différence d'approche est nette. Une web view hérite du moteur de rendu du système et de la gestion des sockets du navigateur : quand l'application passe en arrière-plan, le streaming peut être suspendu par le système, et la reprise dépend du comportement du navigateur. Conduit, d'après le README, gère le streaming token par token via WebSocket dans une application Flutter native, avec des composants de rendu écrits pour Flutter (Mermaid, LaTeX, blocs de code, Chart.js) plutôt que délégués à une page web.
L'autre différence tient aux modes de connexion. Une web view ne sert qu'un seul serveur Open WebUI. Conduit ajoute Direct, donc un point d'accès compatible OpenAI, Ollama, OpenRouter ou LM Studio sans compte Open WebUI, plus Hermes pour les agents. Cela dit, un client web bénéficie d'une chose que Conduit ne peut pas offrir : il suit automatiquement la version de votre serveur, sans mise à jour d'application à installer.
Licence, mises à jour et coût de suivi
Le dépôt est publié sous GPL-3.0. Concrètement, si vous redistribuez une version modifiée de Conduit, la licence impose de fournir le code source correspondant sous les mêmes termes. Un usage interne à une organisation, sans distribution, ne déclenche pas cette obligation de la même manière, mais ce texte n'est pas un avis juridique : pour un déploiement en entreprise, faites relire la licence par qui de droit.
Le rythme de publication est soutenu. Trois versions apparaissent dans le matériel fourni : v4.1.2 le 26 août 2026, v4.1.3 le 28 août 2026, v4.1.4 le 1er septembre 2026, avec un dernier push sur main le 3 septembre 2026. Un tel rythme signifie des mises à jour fréquentes à installer et à valider, en particulier si vous dépendez des modes Apple, qui suivent les versions d'iOS et les entitlements gérés par Apple. Le README ne décrit pas de canal de publication distinct pour les versions stables et les préversions, donc prévoyez de suivre les releases pour savoir ce qui change.
Conclusion éditoriale
Conduit convient à ceux qui font tourner Open WebUI, Ollama ou un serveur Hermes et veulent un client mobile natif, avec les conversations stockées d'abord sur l'appareil. Il ne convient pas à qui cherche un client multi-fournisseurs centralisé, ni à un utilisateur Android qui voudrait les fonctions Apple On-Device ou Private Cloud Compute, réservées à iOS 26 et iOS 27. Avant d'adopter, vérifiez deux points dans le dépôt : la version d'Open WebUI que votre serveur expose, puisque les fonctionnalités dépendent de ce que le serveur annonce, et la section Build from Source de docs/BUILDING.md si vous compilez vous-même, car le projet est distribué sous GPL-3.0 et toute redistribution doit respecter cette licence.
Notes de la communauté