Rowboat : un agent de bureau qui construit son propre graphe de connaissances
Open-source AI coworker, with memory
En bref
- De quoi s’agit-il ?
- Rowboat est une application de bureau TypeScript sous licence Apache-2.0 qui indexe courriels, réunions et conversations dans un graphe Obsidian-like stocké en Markdown local, puis s'en sert pour agir. Voici son mécanisme, ses contraintes et les cas où il n'est pas le bon outil.
- À qui s’adresse-t-il ?
- Rowboat convient à celles et ceux qui veulent un assistant de bureau dont la mémoire reste inspectable et locale, et qui acceptent de configurer les clés API à la main dans ~/.rowboat/config/. Il ne convient pas aux équipes qui cherchent un service hébergé multi-utilisateurs ou un agent purement headless dans un pipeline CI.
- Puis-je l’utiliser commercialement ?
- Oui. Apache-2.0 est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
- Est-il encore maintenu ?
- Oui. Le dépôt a reçu de nouveaux commits au cours des dernières 24 heures.
- En quel langage est-il écrit ?
- Principalement TypeScript, 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 visé : une mémoire qui s'accumule au lieu d'une recherche à froid
La plupart des assistants reconstituent le contexte à la demande, en interrogeant des transcriptions ou des documents au moment où la question est posée. Le README de Rowboat formule le reproche autrement : « Most AI tools reconstruct context on demand by searching transcripts or documents. » Sa réponse tient en une phrase : maintenir une connaissance de longue durée, où les relations entre éléments sont explicites et inspectables, où les notes restent modifiables par l'utilisateur, et où tout vit en Markdown brut sur la machine. Le public visé est donc l'utilisateur individuel sur poste de travail, pas l'équipe qui cherche un service partagé. Rowboat se présente comme un collègue de bureau avec des surfaces de travail intégrées : client de messagerie, notes, navigateur, mode code, prise de notes de réunion et espaces de travail par projet. L'argument central n'est pas la qualité d'un modèle, mais la continuité du contexte entre ces surfaces.
Le graphe de connaissances comme socle, pas comme accessoire
Rowboat indexe les courriels, les réunions, Slack et les conversations avec l'assistant dans un graphe de connaissances à rétroliens, dans le style d'Obsidian. Le README insiste sur quatre propriétés : le contexte s'accumule dans le temps, les relations sont explicites et inspectables, les notes sont éditables par l'utilisateur, et l'ensemble réside sur la machine en Markdown. Ce choix a une conséquence pratique immédiate : la mémoire n'est pas un index opaque qu'il faudrait exporter pour auditer. Elle est faite de fichiers que vous pouvez ouvrir, corriger ou supprimer avec un éditeur de texte. En contrepartie, la qualité de la mémoire dépend de la discipline d'indexation et de la propreté du graphe. Un graphe qui accumule des notes de réunion bruitées ou des fils de courriels sans intérêt produit du contexte de mauvaise qualité, et rien dans le README n'indique de mécanisme de purge ou de pondération de la pertinence. C'est un point à vérifier dans le code avant de s'engager sur un usage quotidien.
Les agents d'arrière-plan et leurs déclencheurs
Le README décrit des agents d'arrière-plan qui s'exécutent sur événement, par exemple à l'arrivée d'un nouveau courriel, ou selon un planning, par exemple chaque jour à 8h. Ces agents peuvent se connecter à des outils, effectuer une recherche web, utiliser le navigateur et écrire du code via Claude Code ou Codex. Le mode code permet de lancer des agents de programmation en parallèle, pilotés par Rowboat avec le contexte de travail disponible. Deux réserves méritent d'être posées. D'abord, l'exécution planifiée suppose que l'application de bureau soit active ou qu'un ordonnanceur local prenne le relais, et le README ne décrit pas ce point. Ensuite, un agent déclenché par courriel entrant hérite du bruit : sans règle de filtrage, il peut répondre ou agir sur des messages sans importance. La surface courriel trie les messages en deux catégories, importants et le reste, et rédige automatiquement des réponses pour les premiers à partir du contexte de travail. Ce tri est donc un point de contrôle critique : c'est lui qui décide ce qui mérite une action automatique.
Un navigateur isolé et une capture audio locale
Rowboat embarque un navigateur séparé du navigateur principal. L'argument du README est simple : comme il est isolé, vous ne vous connectez qu'aux comptes auxquels vous acceptez de donner accès à l'assistant. C'est une décision de conception défendable, et elle tranche avec les extensions qui s'installent dans le navigateur du quotidien et héritent de toutes les sessions ouvertes. La prise de notes de réunion fonctionne localement : elle capte le microphone et les haut-parleurs, produit une transcription en direct, puis résume la réunion dans un fichier Markdown et met à jour le graphe. Le README qualifie cette fonction de locale, ce qui suggère que la capture audio ne transite pas par un service distant, mais le traitement du texte transcrit dépend ensuite du modèle choisi. Si vous utilisez un modèle hébergé, la transcription ou son résumé peut quitter la machine. Cette distinction entre capture locale et inférence distante n'est pas explicitée dans le matériel fourni et mérite d'être vérifiée avant tout déploiement en contexte sensible.
Installation et configuration par fichiers JSON
L'installation passe par un binaire de bureau : le README renvoie vers la page de téléchargement pour Mac, Windows et Linux, et vers la page des releases GitHub pour tous les fichiers. Les services Google (Gmail, Calendar, Drive) demandent une procédure décrite dans google-setup.md, distincte de l'installation elle-même. Les fonctions optionnelles s'activent par dépôt de clés API dans des fichiers JSON sous ~/.rowboat/config/. Quatre fichiers sont nommés : deepgram.json pour l'entrée vocale et les notes vocales, elevenlabs.json pour la sortie vocale, exa-search.json pour la recherche Exa, et composio.json pour les outils externes ou un serveur MCP. Tous partagent le même format : un objet avec une clé apiKey et la valeur correspondante. Cette uniformité rend l'automatisation du provisionnement simple, mais elle signifie aussi que les secrets sont stockés en clair dans le répertoire personnel. Sur une machine partagée ou sauvegardée vers un service cloud, ces fichiers doivent être exclus des sauvegardes ou protégés par les permissions du système de fichiers.
Le choix du modèle et la question de la portabilité
Rowboat accepte des modèles locaux via Ollama ou LM Studio, ainsi que des modèles hébergés avec votre propre clé et fournisseur. Le README précise que le modèle peut être changé à tout moment et que les données restent dans le Markdown local. C'est la promesse de portabilité la plus concrète du projet : le format de stockage ne dépend pas du fournisseur d'inférence. Il faut toutefois distinguer deux choses. La mémoire, au sens des fichiers Markdown et du graphe, est portable. Les embeddings ou index dérivés utilisés pour la recherche interne ne le sont pas nécessairement, et le README ne dit rien sur leur format ni sur leur reconstruction après changement de modèle. Passer d'un modèle hébergé à un modèle local peut donc exiger une réindexation dont le coût n'est pas documenté ici. C'est le genre de détail qui décide de la faisabilité d'un usage hors ligne réel, et il manque au matériel fourni.
Ce que Rowboat n'est pas
Rowboat n'est pas un service multi-utilisateurs. Le README parle d'une application de bureau, d'un graphe local et de clés API personnelles. Rien n'indique de gestion d'équipes, de rôles ou de partage de mémoire entre plusieurs postes, même si la fonction Apps permet de construire des surfaces de travail et de les partager avec d'autres personnes. Le partage porte sur l'application, pas sur le graphe sous-jacent. Rowboat n'est pas non plus un agent headless : il n'existe pas de mode serveur documenté pour l'intégrer dans un pipeline d'intégration continue ou un orchestrateur distant. Si votre besoin est un agent qui tourne dans un conteneur sans interface, ce projet n'est pas le bon outil. Enfin, la licence Apache-2.0 autorise la modification et la redistribution, y compris commerciale, avec conservation des mentions de copyright et des brevets concédés. Elle n'impose pas de publier vos modifications, contrairement à une licence copyleft. Pour un usage interne, cela ne change rien ; pour redistribuer une version modifiée, il faut conserver les fichiers de licence et signaler les changements.
Coût de maintenance et rythme de publication
Le dépôt est actif : la dernière poussée date du 9 septembre 2026, et trois versions se succèdent en deux jours, v0.9.5, v0.9.6 et v0.9.7. Un rythme aussi serré sur une application de bureau signifie que les utilisateurs qui compilent depuis les sources doivent suivre les changements de schéma de configuration et d'API interne. Le README ne documente pas de politique de compatibilité ascendante pour les fichiers ~/.rowboat/config/, ce qui laisse ouverte la question de la migration entre versions. Pour un utilisateur qui télécharge les binaires publiés, le coût de mise à jour se limite au remplacement de l'application. Pour une équipe qui voudrait forker et adapter Rowboat à ses propres surfaces, l'absence de documentation sur la stabilité des interfaces internes constitue un risque réel. La licence Apache-2.0 ne crée pas d'obligation de support, et rien dans le matériel fourni n'indique de canal de support commercial.
Conclusion éditoriale
Rowboat convient à celles et ceux qui veulent un assistant de bureau dont la mémoire reste inspectable et locale, et qui acceptent de configurer les clés API à la main dans ~/.rowboat/config/. Il ne convient pas aux équipes qui cherchent un service hébergé multi-utilisateurs ou un agent purement headless dans un pipeline CI. Avant d'adopter, vérifiez trois choses dans le dépôt : le contenu de google-setup.md pour la portée exacte des accès Gmail, Calendar et Drive, le schéma des fichiers ~/.rowboat/config/*.json pour les fournisseurs pris en charge, et la licence Apache-2.0 pour les conditions de redistribution d'une version modifiée.
Notes de la communauté