Rapport établi le 18 septembre 2026, à partir de données réelles du compte Wispr Flow de Hassan OULD et du déploiement Hermes sur srv1670786. Le module connecté est Notetaker + calendrier Microsoft, pas la dictée.
| Étape | Statut | Détail |
|---|---|---|
| Serveur MCP ajouté à la config Hermes | fait | config.yaml bloc wispr_flow, enabled: true |
| OAuth 2.0 + PKCE | fait | Client CIMD Hermes, tokens stockés /opt/data/mcp-tokens/wispr_flow.json (0600) |
| Connexion MCP testée | fait | hermes mcp test : connecté, 14 outils découverts |
| Appel réel d'un outil | fait gateway à redémarrer | get_account_info → « Hassan OULD » ; les outils seront injectés dans les prochaines sessions après restart |
| Notetaker actif | à faire | 0 réunion capturée : le Notetaker doit rejoindre tes réunions Teams pour générer transcriptions et notes |
Le flow CLI headless d'Hermes (hermes mcp login) échoue sur ce VPS : le listener callback interne tient le port 27890 et son propre retry échoue avec [Errno 98]. Contournement : authorization code + PKCE piloté manuellement, réutilisant le client CIMD pré-enregistré d'Hermes (https://nousresearch.github.io/hermes-agent/docs/oauth/client-metadata.json), échange du code via /opt/data/scripts/wispr_oauth.py. Le device flow est refusé par Wispr pour les clients tiers (unauthorized_client).
Le token d'accès vit 24 h ; le refresh token doit le prolonger automatiquement. Fallback : relancer python3 /opt/data/scripts/wispr_oauth.py start puis coller l'URL de callback.
Avec les 14 outils, Hermes répond en langage naturel, sur n'importe quel salon (Telegram, desktop, cockpit) :
« Cherche la réunion où on a parlé du scoring candidats » → search_meetings fouille transcriptions et notes de tout ce que le Notetaker a capturé.
« Résume la réunion BPA d'hier » → get_meeting renvoie les notes markdown et la transcription bornée.
« Qui était présent à la revue de Youssef ? » → get_meeting_participants_enriched, et le résultat t'indique si le participant est toi.
« Prépare-moi le point A&C de mardi » → list_upcoming_meetings + get_calendar_event + participants, puis Hermes rédige le brief.
« Liste ce que j'ai promis cette semaine » → Hermes lit les transcriptions récentes et produit la liste d'engagements, prête à pousser dans Paperclip ou Obsidian.
« Que disait ce lien de notes partagées ? » → resolve_share_link et resolve_calendar_link transforment une URL collée dans le chat en contenu lisible.
| Outil | À quoi il sert |
|---|---|
get_account_info | Identité du compte connecté |
search_meetings | Chercher ou lister les réunions capturées |
get_meeting | Notes markdown + transcription bornée d'une réunion |
get_meeting_by_calendar_id | Idem, mais via l'ID de l'événement agenda |
get_meeting_participants_enriched | Participants + lien avec ton compte |
list_meeting_series | Historique d'une série récurrente (Bi-Hebdo Data/IA, points A&C) |
search_scratchpad_notes | Chercher tes notes Wispr |
get_scratchpad_note | Contenu d'une note |
search_calendar_events | Chercher les événements agenda |
get_calendar_event | Détail d'un événement (participants, liens Teams) |
resolve_calendar_link | Coller un lien Google/Teams → événement |
resolve_share_link | Coller un lien de notes partagées → contenu |
list_upcoming_meetings | Réunions à venir dans une fenêtre donnée |
get_upcoming_meeting | Prochain événement par calendar_id |
Trois surfaces, trois rôles. Le fil conducteur : tu dictes partout avec Wispr, et Hermes lit le contexte de tes réunions à ta place.
Dictée : Wispr Flow s'installe comme clavier système. Tu appuies sur le raccourci, tu parles, le texte se colle là où tu écrivais : Telegram Desktop, Obsidian, navigateur, Slack. C'est ton remplacement du clavier pour tout texte long.
Notetaker : dans l'app Wispr Flow, onglet Notetaker, tu connectes ton calendrier Microsoft et tu actives l'auto-join : Wispr entre comme participant bot dans tes réunions Teams, enregistre, transcrit, résume.
L'app iOS/Android fait la même dictée qu'au Mac, avec clavier intégré : tu réponds à Telegram, tu notes une idée dans Obsidian Mobile, tout en dictant. C'est le complément quand tu n'es pas au bureau.
Idée reçue à écarter : le MCP n'apporte rien au téléphone. Il vit côté Hermes sur le VPS. Le téléphone sert à produire du contenu dicté et à consulter les résumés dans l'app Wispr, pas à interroger le MCP.
Tu poses la question en langage naturel dans n'importe quel salon : « résume la réunion de ce matin », « qu'est-ce que j'ai promis à CNG ? ». Hermes appelle les outils MCP Wispr, lit transcriptions et notes, croise avec Paperclip, Obsidian ou le CRM si tu lui demandes.
Le MCP ne reçoit jamais les dictées. Seuls les réunions Notetaker, notes scratchpad, agenda Microsoft et liens partagés passent par cette connexion.
list_meeting_series), décisions en attente.search_meetings retrouve la décision exacte avec la citation.Aujourd'hui : 0 réunion capturée. L'intégration MCP est prête, mais il n'y a rien à lire tant que le Notetaker n'enregistre pas tes réunions Teams. Procédure :
note Wispr confirme : le MCP expose les réunions et notes, pas tes dictées. Les dictées restent locales à l'app.
vigilance Les réunions A&C avec des clients sensibles (CNG, EDF, G-mind) : réunion par réunion, décide du join. Le stockage cloud Wispr est hors de ton contrôle. Le peer review Codex avant diffusion d'un livrable reste la règle.
Envoyer du texte à Wispr, créer des notes, modifier une réunion, supprimer quoi que ce soit, lire les dictées. C'est du read-only par design, scope openid offline_access.
Les transcriptions passent par le cloud Wispr. Pour les comités clients sensibles, l'auto-join du Notetaker se décide réunion par réunion. Hermes peut filtrer à la demande (exclure un client d'une synthèse hebdo, par exemple).
Le token d'accès vit 24 h. Le refresh est géré par Hermes. Si une session échoue avec une erreur 401, relance wispr_oauth.py start + finish, 2 minutes.
Les 14 outils sont exposés en all. Un filtrage fin (tools: dans config) est possible si tu veux limiter la surface, par exemple retirer search_calendar_events de certains salons.
| # | Action | Où | Priorité |
|---|---|---|---|
| 1 | Redémarrer le gateway Hermes pour charger Wispr dans les sessions | terminal VPS | bloquant |
| 2 | Connecter le calendrier Microsoft dans l'app Wispr (onglet Notetaker) | Mac | bloquant |
| 3 | Activer l'auto-join Notetaker, tester sur une réunion de 2 minutes | Mac | important |
| 4 | Demander à Hermes « liste mes réunions Wispr » pour valider la boucle | n'importe quel salon | important |
| 5 | Créer un rituel Hermes : préparation de réunion J-1 et digest quotidien des notes | cron Hermes | ensuite |
| 6 | Éventuellement : filtrage des outils MCP dans config.yaml | VPS | ensuite |