Sauvegarder un dossier sur un serveur, vérifier l'espace disque du PC du salon, relancer un service sur le NAS, et j'en passe... Chez moi ça se concrétise au travers de crontabs différents et de tâches planifiées Windows, et malheureusement, comme je n'ai pas toujours le nez dessus, le jour où l'une d'elles tombe en rade, bah je m'en rends compte des jours, voire des semaines plus tard... Heureusement, il existe un outil qui s'appelle CTFreak et qui permet de centraliser tout ça derrière une seule interface web !
CTFreak, c'est donc un ordonnanceur de tâches auto-hébergé, édité en solo par Jean-Yves Pellé, un développeur français, et cela depuis presque 4 ans. Vous l'installez chez vous, il se connecte à vos machines en SSH ou en WinRM, et il y exécute tout ce que vous lui demandez. C'est top parce que grâce à ça, il n'y a même rien à installer sur les machines pilotées.
CTFreak vous propose ainsi 9 types de tâches à créer. La commande locale par exemple tourne sur la machine qui héberge CTFreak, et la commande distante fait la même chose mais sur un ensemble de machines de votre choix. Ensuite viennent les tâches de type scripts bash et PowerShell, les playbooks Ansible, les scripts SQL, ou encore les rapports SQL qui sortent de vrais tableaux et autres graphiques directement depuis vos bases de données (pratique pour illustrer vos rapports).
Il y a aussi la classique requête HTTP, pour taper sur une API ou vérifier qu'un site répond. Et surtout le "workflow", c'est-à-dire une tâche dont le boulot est d'en déclencher d'autres, en série ou en parallèle. Vous pouvez même imbriquer des workflows dans des workflows, si le cœur vous en dit, et surtout, si vous n'avez pas peur de vous y perdre.
Les neuf types de tâches proposés à la création, de la commande locale au rapport SQL
Pour installer CTFreak, vous récupérez le binaire, vous le rendez exécutable, et c'est finito ! C'est un fichier unique de 56 Mo, sans la moindre dépendance, dispo en amd64 comme en arm64 (j'ai fait mes tests sur une Ubuntu 24.04 en ARM). Et il est également dispo en paquets Docker, Snap et Cloudron, mais ils tournent en bac à sable et n'embarquent pas Ansible, donc si les playbooks vous intéressent, restez sur le binaire. Comme l'URL de download se termine par l'architecture, pensez bien à remplacer amd64 par arm64 si votre machine est en ARM.
sudo curl -sL https://ctfreak.com/download/release/latest/linux/amd64 -o /usr/local/bin/ctfreak
sudo chmod +x /usr/local/bin/ctfreak
ctfreak run
Ouvrez ensuite http://IP-du-serveur:6700 et connectez vous avec admin / ctfreak. Changez ce mot de passe tout de suite dans le menu Profile, et surtout n'exposez pas ce port sur Internet sans un reverse proxy devant. En effet, cette interface va bientôt contenir les accès de toutes vos machines.
Ensuite pour en faire un service qui redémarre tout seul, copiez l'unité systemd de
la doc d'installation
dans /etc/systemd/system/ctfreak.service, puis activez-la.
sudo systemctl daemon-reload
sudo systemctl enable --now ctfreak
Et voilà, vous êtes prêts à commencer !
Tout se passe dans un projet, donc vous en créez un (j'ai appelé le mien Homelab), puis vous cliquez sur New task. Le plus simple pour commencer est la commande locale. Je lui ai collé une archive de mon dossier Documents, et coché Scheduled avec une expression cron pour 3h30 du matin.
tar -czf /home/korben/sauvegardes/documents-$(date +%F).tar.gz -C /home/korben Documents
Le bouton Execute permet de lancer la tâche tout de suite, pour ne pas attendre 3h30 pour savoir si ça marche, et la page d'exécution affiche le statut, la durée et le journal complet. La fiche du projet vous montre ensuite les deux informations qui manquent toujours avec cron : 1/ quand est ce que la tâche est passée pour la dernière fois, et 2/ si elle s'est bien terminée.
Là où ça devient intéressant, c'est quand vous ajoutez d'autres machines. Côté CTFreak il n'y a aucun agent à déployer, mais côté cible il faut quand même activer le serveur SSH intégré de Windows (ou WinRM, au choix) et installer PowerShell 7.2 ou plus récent, sans quoi les journaux d'erreur remonteront mal. Vous enregistrez ensuite le mot de passe ou la clé dans Credentials, vous déclarez la machine dans Nodes avec son OS, son IP et son identifiant, et le bouton Ping vous dira tout de suite si la connexion passe.
Ensuite vous créez une tâche de type Powershell Script, moi je l'ai planifiée tous les lundis à 8h. Le champ Node Set filter accepte ensuite des noms de machines, mais surtout des tags : j'ai mis #windows, donc toute machine que je taguerai comme ça entrera dans la tâche sans que je la retouche. C'est bien fichu hein ?
$libre = [math]::Round((Get-PSDrive C).Free / 1GB, 1)
Write-Host "Espace libre sur C: $libre Go"
if ($libre -lt 30) { Write-Error "Alerte : moins de 30 Go libres" ; exit 1 }
Le script PowerShell, l'expression cron du lundi matin et le filtre #windows qui trouve une machine
Et le journal qui remonte ensuite est vraiment complet. On y retrouve chaque ligne horodatée à la microseconde, la sortie du script, et le code de retour qui décide du statut. Ma machine Windows n'ayant que 22,1 Go de libre, la tâche a échoué comme prévu et s'est affichée en rouge dans la liste.
Le journal de l'exécution ratée : la sortie du script sur la machine distante, puis la sortie en erreur
Alors bien sûr, une tâche qui plante sans prévenir personne, ça ne sert pas à grand-chose. C'est pourquoi CTFreak permet d'envoyer des alertes sur Discord, Slack, Mattermost, Microsoft Teams, Telegram, ntfy ou par mail. Il peut même ouvrir directement un ticket dans GitHub, GitLab, Jira, Linear ou YouTrack quand un truc casse.
Dans l'autre sens, chaque tâche expose un webhook entrant, ce qui permet de la déclencher depuis un dépôt Git ou n'importe quel outil tiers, et une API REST complète fait pareil mais par script.
Le reste ensuite, c'est que du confort qui se découvre quand on utilise l'outil... Il y a par exemple une explorateur de fichiers qui parcourt vos machines depuis le navigateur, des calendriers qui empêchent une tâche de tomber un jour férié, ou encore la possibilité de partager vos projets entre équipe avec différents droits d'accès. L'authentification passe même par votre fournisseur OpenID Connect si vous en avez un.
Et les données dans tout ça ?
Hé bien elles restent bien au chaud dans un dossier avec une base SQLite dedans. C'est pratique parce que, si vous voulez sauvegarder votre ordonnanceur, il suffit juste de faire une copie de ce dossier.
Maintenant, avant de vous lancer, sachez que l'édition gratuite vous limite à 8 tâches, avec 1 paramètre par tâche, 3 utilisateurs, 1 calendrier, 1 notificateur d'alerte et 1 notificateur de tickets. Surtout, elle n'exécute rien en parallèle. Vos tâches passent une par une, quel que soit le nombre de machines visées. Par contre, bonne nouvelle, le nombre de machines pilotées n'est bridé dans aucune édition. Vous pouvez donc déclarer 3 nœuds comme 50 sur la version gratuite, c'est le nombre de tâches qui limité dans la version gratuite, mais pas la taille de votre parc.
Autre chose à savoir aussi, c'est que les secrets (mots de passe...etc) sont stockés tels quels en clair dans la base SQLite. C'est bien indiqué dans la documentation, donc ce n'est pas une surprise, mais heureusement, y'a une commande qui permet de basculer tout ça en AES-256-GCM :
sudo systemctl stop ctfreak && ctfreak encrypt AES && sudo systemctl start ctfreak
Faites-le, mais préférez quand même une clé SSH dédiée à un mot de passe de compte.
Côté tarifs, la page affiche l'édition Pro à 369 € la première année puis 299 €, la Business à 599 € puis 519 €, et la Sovereign à 899 € puis 799 € pour les environnements coupés d'Internet, le tout par instance.
Et si vous partez sur l'édition Pro, le code KORBEN15 vous fait 15 % de réduction sur la première année. Il est valable jusqu'au 31 octobre 2026 inclus.
Reste que pour du homelab, la version gratuite est téléchargeable ici et suffit largement pour se faire une idée.
![]()
J'adore la France, mais même si la vie y est difficile. Pourquoi ? Simplement à cause de l'administratif et de la paperasse. En tant que phobique administratif, c'est vraiment ce qui me fait regarder de près l'expatriation, loool.
Tenir la compta d'une petite société, remplir sa déclaration d'impôts, estimer les frais de notaire d'un appart... Bref, la fucking paperasse a de quoi déclencher de sévère crises de phobie administrative chez tout le monde. Alors pour nous aider, mon nouveau héro du jour, Romain Simon, a créé " Paperasse ", des skills pour agents IA que Claude Code, Codex, Cursor ou Mistral Vibe peuvent consulter pour endosser le rôle d'expert-comptable, de contrôleur fiscal, de commissaire aux comptes, de fiscaliste, de notaire ou encore de syndic de copro.
Son dépôt contient également des scripts vérifiés pour tout ce qui est calculs importants. En effet, ce sont des choses qu'on ne veut surtout pas confier à un LLM. Je pense au calcul de l'impôt sur les sociétés, aux amortissements, à la TVA, ou encore sortir un fichier des écritures comptables, un bilan ou une facture. Le projet Paperasse contient aussi des connecteurs pour vos transactions Qonto et vos paiements Stripe.
Voilà, donc si, comme moi, vous êtes en détresse émotionnelle dès que vous recevez un courrier de l'administration française, je vous invite à installer ce projet en donnant tout simplement ce prompt à votre agent IA préféré :
Installe tous les skills du repo github https://github.com/romainsimon/paperasse
Lance ensuite le setup pour la gestion de toute ma paperasse
L'agent clonera alors le dépôt et lancera un setup qui vous demandera le nom de votre société, votre régime de TVA et vos comptes bancaires. Pour mes tests, j'ai donc inventé une SASU, Brioche & Octets, avec un relevé bancaire de huit lignes bidon, et j'ai lancé Claude Code dessus avec le skill comptable, dans un environnement vierge.
En 6 minutes, il a immobilisé l'ordinateur portable au lieu de le passer en charge, traité l'abonnement logiciel facturé depuis l'Irlande en deux scénarios faute de facture pour trancher, et rangé le retrait au distributeur en compte d'attente, en rappelant qu'un compte courant débiteur est interdit au président d'une SASU.
Côté factures, le script de validation a refusé ma première tentative, à laquelle il manquait le SIREN du client et le numéro de TVA intracommunautaire de ma boîte. Une fois corrigée, le générateur m'a sorti un PDF qui embarque son fichier XML Factur-X.
La facture de ma fausse SASU, une fois le SIREN du client et mon numéro de TVA ajoutés
L'agent fiscaliste, quant à lui, ce sera plus à même de vous aider si vous êtes un particulier. Je lui ai soumis un couple pacsé imaginaire avec un enfant, 65 000 € de salaires et 2 000 € de dividendes, en lui demandant si l'option pour le barème battait le PFU. Il a lancé son script Python sur les deux cas et conclu que oui, de 124 €, parce qu'avec un taux marginal de 11 %, l'abattement de 40 % et la CSG déductible font descendre l'impôt sur ces dividendes sous les 12,8 % du PFU. J'ai refait le calcul à la main, ça tombe juste.
Le fiscaliste compare PFU et option barème pour un couple pacsé imaginaire
Par contre, tout ça repose sur des barèmes qu'il faut tenir à jour, et c'est là que ça coince. En effet, ces mises à jour reposent sur les issues acceptées ou non sur le projet GitHub. Par exemple, y'en a une qui est ouverte depuis fin août qui montre que le skill "notaire" calcule encore les émoluments de vente avec le tarif de 2016 alors que ça a changé depuis le 1er janvier 2021, et malheureusement, que les évaluations automatiques du projet valident ces calculs faux. Le correctif a bien été proposé, comme d'autres mais aucun n'a été fusionnée depuis le 11 juillet.
Donc voilà, c'est un super projet, mais il faudrait encore que ça suive un petit peu derrière donc utilisez-le mais en prenant soin de bien vérifier quand même les montants / tarifs / règles sont à jour.
Reste maintenant la question de vos données... En effet, vos PDF et tout ce qui concerne vos données vont partir chez le service IA que vous utilisez. Donc ça, il faut en avoir conscience même si je sais que derrière, en général, les comptables mettent tout sur des drives mal sécurisés, et que prochainement la facturation électronique va faire leaker ça dans tous les sens.
Mais bon, quoi qu'il en soit, tout ceci ne remplacera jamais un expert-comptable, donc voilà, amusez-vous, testez-le, dégrossissez vos questions avec ça, faites des simulations...etc mais ne lui faites pas 100 % confiance.
Source : GitHub
![]()
Au départ, mon stockage était franchement bordélique. Ma bibliothèque Plex vivotait sur un vieux Synology, avec plusieurs SSD externes branchés au Mac mini, posés là au petit bonheur, avec les films rangés à plat et chaque disque qui traînait ses propres conventions et ses trous.
Je vous en avais d'ailleurs déjà parlé, et ça marchait, mais c'était un peu le foutraque, et surtout impossible à automatiser proprement, parce qu'une chaîne d'acquisition sérieuse exige un rangement carré jusqu'au moindre fichier.
D'où la grande décision de remettre tout ça à plat. L'objectif ? Consolider la médiathèque sur du matériel récent, séparer une bonne fois deux mondes qui n'ont rien à faire ensemble, les médias d'un côté et les sauvegardes de l'autre, et déléguer le plus gros de la configuration à Claude Code, l'assistant de codage d'Anthropic, piloté à distance depuis mon Mac mini.
UGREEN m'avait proposé depuis quelque temps de tester les deux NAS de sa gamme GT, j'ai donc accepté. Puis j'ai acheté mes disques une fortune, on y reviendra. Pour Plex, mon choix s'est porté sur le plus costaud de la gamme, un DXP4800 GT quatre baies sous AMD Ryzen.
Sa vraie raison d'être, c'est le débit. Ses deux ports réseau 10 Gbit confiés à des contrôleurs Aquantia ont craché 9,30 Gbit par seconde dès le premier flux en direct, soit le maximum théorique, sans une seule retransmission. Sur ce terrain, il est clairement irréprochable.
Sous le capot, on trouve un Ryzen Embedded R2514 à quatre cœurs, 8 Go de DDR4 extensibles à 64 Go, quatre baies qui se manipulent sans outil dont deux acceptent des SSD U.2 NVMe, plus deux emplacements M.2, le tout jusqu'à 144 To. Il tourne sous UGOS Pro, un système bâti sur une base Debian très peu verrouillée, avec un vrai SSH administrateur, Docker, et une plateforme x86 ouverte où l'on peut installer à peu près tout ce qu'on veut.
Le seul vrai bémol, c'est son moteur vidéo un peu daté, qui ne tient que deux flux Plex 4K transcodés en même temps et ignore l'AV1, donc pour une grosse médiathèque partagée à plusieurs, mieux vaut lui donner des fichiers déjà au bon format, ou transcoder sur une autre machine, ce qui est mon cas avec le Mac mini. Pour le stockage, j'ai récupéré 4 disques 28 To sur Amazon , à un prix que je n'ose même pas vous donner (660 euros pièce, et au moment où j'écris cet article leurs prix ont bondi à 780 euros).
Le gros morceau, c'était la migration, faire passer 36 To et 22 000 fichiers du Synology vers ce nouveau NAS. Perso je n'ai pas fait grand-chose, Claude Code s'est occupé de tout ça en SSH, en passant par les API de Plex, Radarr et Sonarr.
Derrière Plex tourne d'ailleurs toute une chaîne, Radarr et Sonarr, Prowlarr pour les sources, une seedbox Whatbox et Seerr.
Pour l'anecdote, le plus gros problème ça a été de régler les problèmes posés par les fichiers avec des accents. Près de 17 000 fichiers (de vidéos de vacances bien sûr) au chemin accentué devenaient injouables sur l'Apple TV alors que l'iPhone les lisait sans broncher, parce que Plex sur Mac jongle entre deux façons de coder un accent en Unicode quand le partage NFS strict d'UGOS n'en accepte qu'une seule à l'octet près.
Bon, maintenant on ne va pas se mentir, il y a eu des ratés avec l'IA, comme la disparition de près de 800 fichiers effacés par un bug des scripts, sans corbeille ni snapshot, mais comme le volume tourne en Btrfs et qu'il restait de la place, Claude a gelé le volume, remonté des centaines d'états internes du système de fichiers et rapatrié plus de 98 % des fichiers. Les pertes sont au final négligeables. C'était évitable, mais je n'ai pas été assez vigilant.
Ce socle sauvegarde même le code de Selene Racer, mon jeu de course de rovers sur la Lune hébergé dans le cloud sur lequel je bosse en ce moment ( vous pouvez le tester ici , il se joue dans n'importe quel navigateur, sur ordi ou téléphone), et dont les sources atterrissent sur le NAS via Dropbox. Quant au NAS deux baies qui encaisse Time Machine, les archives et les sauvegardes, c'est son petit frère le DXP2800 GT, que je teste sur Mac4ever .
Si comme moi vous n'êtes pas super fort en code et en réseau, et que vous avez suffisamment de sauvegardes de vos données, confier votre vie numérique à une IA et à un NAS de ce type est donc tout à fait envisageable, et c'est même assez chouette à mettre en place.
Les DXP4800 GT et le DXP2800 GT sont disponibles sur Amazon, et je vous les recommande les yeux fermés.
![]()
Ce mois-ci, je suis en mode déménagement / vidage de cartons / montage de meubles Ikea et bien sûr, j'en profite pour réinstaller mon matos... Mon système d'alarme, mes caméras et un peu de domotique.
Sauf que la domotique, c'est pas mon kif car même si j'aime l'idée d'avoir des automatisations chez moi, ça fonctionne un moment, puis après ça ne fonctionne plus, souvent parce que les Raspberry Pi passent leur temps à corrompre les cartes SD... Puis surtout, je manque de temps pour me prendre la tête à régler des scénarios au poil de cul.
Mais là, c'est aussi un peu les vacances et y'a plusieurs paramètres qui ont changé. Déjà la nouvelle maison est plus petite. J'ai aussi un mini PC à disposition qui ne faisait pas grand chose. J'ai également une caisse de matos divers et variés (Zigbee / Zwave et autre) qui prend la poussière. Et puis les nouveautés dans ma vie, c'est bien sûr l'IA et Alexa.
Je me suis donc chauffé un peu, et je vais vous raconter ce que j'ai mis en place ces derniers temps.
Le point de départ, c'est ce mini PC. Un NiPoGi Pinova P1 (lien affilié) que j'avais acheté en 2023, un Ryzen 3 4300U avec 16 Go de RAM et 1 To de SSD, qui n'avait jamais vraiment trouvé sa vocation. Complètement surdimensionné pour de la domotique, vous vous en doutez, et c'est exactement pour ça qu'il est parfait.
Parce que le vrai sujet, c'est pas la puissance, c'est le stockage. Mes install précédentes mouraient toutes de la même façon : une carte SD qui rend l'âme au bout de quelques mois d'écritures permanentes. Là, le système tourne sur un SSD, et rien que ça, ça règle le problème qui m'avait dégoûté les fois d'avant.
J'ai donc collé Home Assistant OS dessus, ce qu'on appelle HAOS pour les intimes. C'est la version "système d'exploitation" qui prend la machine entière et qui pilote tout elle-même, sans Linux à administrer en dessous ni Docker à maintenir. Et puis avec cette version, vous récupérez au passage le magasin d'add-ons et les sauvegardes automatiques, sans rien configurer. Sur une machine dédiée qui ne fait que ça, c'est franchement le mode le plus tranquille.
Et là, premier petit piège à savoir au niveau du BIOS si vous vous lancez... Pour démarrer, HAOS exige en effet que le mode UEFI soit activé et que le Secure Boot soit désactivé. Si vous zappez ça, votre clé USB ne bootera jamais et vous allez tourner en rond un bon moment.
Et tant que vous êtes dans le BIOS, y'a un troisième réglage dont la doc ne parle pas et qui est pourtant le plus important sur la durée : le comportement après une coupure de courant. Ça s'appelle "Restore on AC Power Loss", "After Power Failure" ou "AC Back Function" selon les marques, et il faut le passer sur "Power On". Sans ça, la moindre micro-coupure vous laisse une maison sans domotique jusqu'à ce que quelqu'un rentre appuyer sur le bouton. Et ça, croyez-moi, on n'en veut pas quand on est parti en vacances.
Le reste après, c'est du classique. Vous récupérez l'image générique x86-64 et vous la flashez sur une clé USB avec Balena Etcher. Attention à bien prendre haos_generic-x86-64 et pas une version pour Raspberry Pi ou pour machine virtuelle, sinon vous allez vous demander longtemps pourquoi ça ne démarre pas. Ensuite vous bootez le mini PC sur la clé, l'installeur écrit le système sur le SSD interne, et c'est plié. Vous retirez la clé, ça reboote, et l'interface vous attend :
http://homeassistant.local:8123
Si ça ne répond pas, c'est que votre box ne fait pas de mDNS, allez juste chercher l'IP dans sa liste de clients. Et voilà, un Home Assistant tout neuf.
Maintenant, passons à la suite parce que j'ai une caisse pleine de matos à réveiller.
Dans ma caisse, y'avait notamment un dongle USB Sonoff (lien affilié) pour le Zigbee. Je le branche, et je décide de partir sur Zigbee2MQTT plutôt que sur ZHA, l'intégration native. Le choix se paye tout de suite en complexité (il faut un broker MQTT à côté, Mosquitto en l'occurrence), mais il se rembourse largement après, parce que Zigbee2MQTT expose absolument tous les réglages internes des appareils. Vous verrez plus bas pourquoi c'est déterminant.
Le mini PC qui va me faire oublier mes galères avec le Raspberry Pi
Sauf que rien ne s'est passé comme prévu. J'installe les modules recommandés, et Zigbee2MQTT n'apparaît tout simplement pas dans la liste. Bon. Une fois que j'ai réussi à le sortir de sa cachette, c'est la configuration du port série de la clé qui m'a offert un vrai moment de solitude : on modifie, on clique sur "Submit", ça a l'air de sauvegarder... et la page revient vierge, sans plus rien à sélectionner. Allez savoir si le réglage est passé ou pas !
Le truc à retenir en fait, c'est qu'il faut désigner la clé par son identifiant stable et pas par un /dev/ttyUSB0 qui peut changer au reboot. Le chemin ressemble à ça :
/dev/serial/by-id/usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_...-if00
Une fois ça compris, le bridge est monté et n'a plus bougé. Mais c'est ce genre de conneries qui font lâcher la domotique à pas mal de monde, je pense.
Deuxième claque, et celle-là est plus vicieuse. Mes prises connectées Meross, je les avais appairées à l'époque avec l'app du fabricant. Résultat, elles étaient déjà mariées au cloud Meross, et impossible de les récupérer proprement depuis l'app iPhone pour les basculer ailleurs.
La solution est donc passée par HACS, le magasin de composants communautaires, et un custom component qui s'appelle Meross LAN. L'intérêt, c'est qu'il parle aux prises en local, sur votre réseau, sans faire l'aller-retour par les serveurs du fabricant. Même logique avec l'app Sonoff LAN pour un interrupteur USB que j'avais (lien affilié). Vos automatisations continuent donc de tourner même quand le cloud du constructeur est dans les choux ou quand votre fibre est coupée.
J'ai aussi buté sur un cas plus tordu avec du matos Tuya car j'ai des appareil qui sont vendus sous une autre marque, avec leur app maison, et qui n'existent pas dans le cloud Smart Life sur lequel s'appuie l'intégration Tuya standard. Donc intégration cloud inutilisable... C'est vraiment le problème numéro un de l'objet connecté grand public, et c'est pour ça que je vous conseille de vérifier si un appareil a besoin du cloud avant de l'acheter, pas après.
Du coup, HACS est devenu mon meilleur pote sur ce chantier. J'y ai pris Meross LAN pour les prises, Sonoff LAN pour l'interrupteur, Alexa Media Player pour mes Echo et l'intégration Dyson. Il n'y a que mon capteur de qualité d'air air-Q qui était supporté nativement, sans rien avoir à installer.
Et maintenant, la partie qui a vraiment tout débloqué. Parce que jusqu'ici, j'avais du matériel qui répondait, mais toujours zéro automatisation. Et c'est précisément là que je décrochais avant car l'éditeur graphique de Home Assistant devient vite limitant, et dès qu'on veut une condition un peu fine, on se retrouve à taper du YAML avec des templates Jinja et à se planter d'indentation ou de paramètres.
Du coup j'ai fait un truc très à la mode en ce moment... J'ai branché Claude Code directement sur mon Home Assistant via un serveur MCP conçu spécialement pour ça . En gros, le MCP c'est ce qui donne des outils concrets à l'IA. Grâce à ça elle peut lister mes entités, lire leur état en direct, et surtout écrire les automatisations dans HA. Je décris ce que je veux en français, il va regarder ce que j'ai réellement comme capteurs chez moi, et il écrit le scénario.
Et ça pour moi, ça change complètement le rapport tordu que j'ai à ma domotique. Et voilà comment en quelques jours, je me suis retrouvé avec 21 automatisations qui tournent, ce que je n'aurais jamais fait à la main. Pas parce que l'IA est magique, mais parce qu'elle supprime la friction. Je n'ai qu'à formuler les idées qui me passent par la tête et l'IA fait le job sans que j'ai à me galérer avec du paramétrage.
À noter que Home Assistant a aussi sa propre intégration Model Context Protocol Server depuis la version 2025.2, mais elle fait plutôt l'inverse : elle expose vos appareils à un assistant. Moi je voulais un truc qui écrive la config à ma place.
Voilà le scénario dont je suis le plus fier, parce qu'il résout un problème que j'ai vraiment dans cette nouvelle maison : pas de clim, et un bureau qui monte en température. Ce n'est pas que je ne veux pas en installer , c'est que je viens d'arriver, que y'a pénurie de ventilos et de pompes à chaleur et en plus je suis en location, donc ce n'est pas si simple que ça. Mes seules armes pour le moment, c'est donc un Dyson qui filtre et qui brasse, et des fenêtres à ouvrir au bon moment.
Mon fidèle ventilo !
Ce que j'ai fait du coup, c'est que le Dyson démarre tout seul quand l'air se charge en pollution et s'arrête quand c'est redevenu propre. Concrètement il se lance quand les PM2,5 dépassent 10 µg/m³ ou les PM10 dépassent 18 µg/m³ pendant 5 minutes d'affilée. Les 5 minutes de délai, c'est important car sans ça, un simple passage devant le capteur déclenche tout.
Mais le truc dont je suis vraiment content, c'est qu'il ne souffle pas pareil selon si je suis là ou pas. Si le capteur de présence me détecte, il démarre à 20% seulement, histoire de rester silencieux pendant que je bosse. Si je suis absent, il part direct à 100% et il purge la pièce à fond. Même logique pour les COV : au-dessus de 1000 ppb, c'est 30% en ma présence et 100% quand j'ai le dos tourné.
Le reste suit la même idée : une purge à fond pendant mon absence, un régime plus doux dès que je rentre dans la pièce, le mode nuit uniquement si je suis présent, et une alerte quand les filtres arrivent en bout de course.
Mais le vrai casse-tête, c'était l'aération. Parce que oui, quand l'air intérieur devient mauvais, la solution évidente c'est d'ouvrir les fenêtres. Sauf qu'en pleine canicule, ouvrir c'est la pire idée du monde : vous virez vos polluants et vous encaissez 35 degrés à la place. Je me suis retrouvé au départ plusieurs fois avec Alexa qui me disait d'aérer alors que c'était juste pas possible.
La solution que j'ai trouvé, c'est donc de mettre en place un scénario qui ne me conseille d'ouvrir que si quatre conditions sont réunies en même temps : il fait plus de 26 degrés chez moi, il fait au moins 2 degrés de moins dehors, l'air extérieur est plus sec que le mien, et la qualité de l'air extérieur est correcte. Alors let's go, Alexa me dit d'ouvrir les fenêtres. Et ça, elle le réévalue toutes les 10 minutes.
La condition sur l'humidité est celle à laquelle je n'avais pas pensé au départ, et que Claude Code m'a conseillé de lui-même, et c'est pourtant la plus utile. Comparer les températures toutes seules, ça ne suffit pas, c'est pourquoi le scénario compare les points de rosée, et pas les pourcentages d'humidité. Parce que de l'air à 24 degrés bien humide vous rafraîchit beaucoup moins que de l'air à 25 degrés bien sec, et vous vous retrouvez avec une pièce moite que vous mettrez la nuit à assécher.
Les notifs que j'ai sur le smartphone et qui sont lues par Alexa
Petite subtilité technique au passage : je ne regarde pas la température qu'il fait dehors, mais la plus chaude des deux prochaines heures. Ça évite d'ouvrir dix minutes avant que ça remonte. Et ça oblige à passer par un helper, parce qu'un template Home Assistant ne peut pas appeler un service tout seul... il faut donc une automatisation qui va chercher la prévision et la dépose dans une variable, toutes les 10 minutes.
Et surtout, il me dit quand refermer, avant que la chaleur ne revienne. Là, je referme quand la fraîcheur est acquise, quand la prévision annonce que c'est fini, ou quand l'air du dehors se dégrade. Et le message diffusé par Alexa m'explique laquelle des trois raisons s'applique.
Deux petits helpers mémorisent aussi qu'une aération est déjà en cours, histoire qu'Alexa ne me répète pas la même chose toutes les cinq minutes. Et si je m'absente pendant l'opération, j'ai droit à un rebriefing en rentrant.
Au passage, j'ai fait deux erreurs de débutant. La première c'est que j'avais posé mon capteur de qualité d'air juste à côté de la fenêtre. Il mesurait donc l'air de la rue et pas celui de mon bureau, et les scénarios se déclenchaient n'importe quand. Déplacé au fond de la pièce, tout est redevenu cohérent. Bref, placez vos capteurs là où vous vivez, pas là où c'est pratique à brancher.
La seconde, c'est que j'ai fini par limiter les annonces vocales sur la plage 8h-22h parce que se faire réveiller à 3h du matin par une enceinte qui vous parle de particules fines, ça vous passe l'envie de la domotique très vite !
Et si vous n'avez pas de clim non plus et que vous cherchez plus radical, Vincent avait aussi testé un rafraîchisseur pendant la canicule .
Dans ma caisse à domotique, y'avait aussi un détecteur de présence Moes (lien affilié) en Zigbee, à ondes millimétriques, ce qu'on appelle un capteur mmWave. Un petit module qui coûte trois fois rien, et c'est clairement ma meilleure surprise de tout ce chantier.
Parce qu'un détecteur de mouvement classique, un PIR, détecte la chaleur qui bouge. Donc quand vous êtes assis à votre bureau en train de lire ou de regarder une vidéo, au bout de deux minutes il décide que la pièce est vide et vous éteint la lumière. Alors que le mmWave, lui, détecte la présence statique : il vous voit même immobile, parce qu'il capte les micro-mouvements et la respiration. Pour un bureau, c'est le jour et la nuit !
Le capteur AirQ à gauche / Le capteur mmWave à droite
Et c'est ici que le choix de Zigbee2MQTT paye enfin, parce qu'il expose tous les réglages internes du capteur. J'ai pu fixer la distance de détection à 225 cm, les sensibilités de mouvement et de présence statique à 4 sur 5, et un délai avant extinction de 20 secondes. Ce réglage de distance est important puisque le capteur peut porter jusqu'à 6 mètres, et à pleine portée il traverse allègrement une cloison pour aller détecter la pièce d'à côté.
Le résultat, c'est que quand j'approche de mon bureau, ma barre lumineuse BenQ s'allume toute seule via mon interrupteur Sonoff. Une deuxième automatisation allume la lampe d'ambiance sur une prise Meross, et une troisième éteint tout quand je quitte la pièce.
Et surtout, le déclencheur n'est pas la présence, mais la distance : la barre s'allume quand la cible passe sous 175 cm et ce chiffre-là, je ne l'ai pas sorti de mon chapeau. J'ai relevé 25 mesures en me plaçant assis, debout et en circulant derrière le bureau. Comme ça, un seuil serré exclut proprement tout ce qui n'est pas moi devant mon écran. Si vous devez retenir une chose sur le mmWave, c'est de bien noter vos vraies distances avant de choisir un seuil, sinon vous passerez des semaines à corriger des déclenchements bizarres.
Rien de spectaculaire au final, mais c'est un super confort !
Parce que non, même avec l'IA tout ne marche pas du premier coup. Une nuit, je quitte le bureau juste après minuit, et le lendemain matin je retrouve toutes les lumières allumées. Huit heures dans le vide. L'automatisation d'extinction sur absence n'était pourtant pas cassée : elle n'a simplement jamais eu l'information qu'il fallait pour se déclencher.
Le coupable, c'est le défaut classique des radars mmWave : la cible fantôme. Le capteur s'est verrouillé sur un écho statique et a continué à annoncer quelqu'un dans la pièce, en oscillant tranquillement entre 241 et 269 cm toute la nuit. Pour Home Assistant, j'étais donc toujours là. C'est ça la contrepartie de la détection statique... quand un radar voit quelqu'un d'immobile, il ne sait pas faire la différence entre vous et un artefact.
La parade, c'est donc une automatisation garde-fou : si la cible reste au-delà de 175 cm pendant 90 minutes d'affilée alors que les lumières sont allumées, on éteint tout. Le seuil reprend la calibration de la barre BenQ, et les 90 minutes valent le double de la plus longue plage légitime que j'aie observée sur trois jours (49 minutes). Elle ne remplace pas l'extinction sur absence, mais rattrape le cas où celle-ci n'a jamais pu partir.
Bref, l'IA écrit vite les scénarios c'est sûr, mais elle ne les teste pas en conditions réelles dans votre vraie maison. Un scénario parfait sur le papier peut très bien ne jamais se déclencher parce qu'un capteur ment donc il faut comprendre ce qui a été écrit, et surtout aller regarder l'historique quand quelque chose cloche.
Et puis y'a les petites morts silencieuses... Une de mes prises connectées est passée en "unavailable" et y est restée plusieurs jours sans que je m'en rende compte. C'est un autre piège de la domotique... Quand un truc tombe, rien ne vous prévient, ça arrête juste de marcher. D'où l'intérêt d'avoir aussi des automatisations qui surveillent votre installation elle-même, et pas seulement votre maison.
Voilà, c'est un petit début, mais ça me permet de me remettre en selle tranquillement. En tout cas, l'option mini PC + LLM est un bon choix pour avoir une install domotique rapidement fonctionnelle, je pense.
Ce que j'ai fait aussi c'est installer Tailscale sur le mini PC, pour accéder à mon Home Assistant depuis l'extérieur sans ouvrir le moindre port sur ma box. C'est de loin la méthode la plus propre, et c'est gratuit pour un usage perso.
Ensuite, je pense que je vais sortir les ESP32 du tiroir. L'add-on ESPHome est déjà installé, il ne me manque plus que le courage de m'y mettre. Si ça vous tente, j'avais montré comment transformer un ESP32 à 5 euros en capteur domotique.
J'ai aussi pas mal de matos Z-Wave à recycler, donc je pense que je vais aussi prendre une petite clé Z-Wave à rajouter sur l'ordi.
Voilà pour ce début d'aventure domotique dans mon nouveau chez moi. Pour le moment, je me suis surtout concentré sur l'aération, la pollution, la gestion de la chaleur mais je pense que j'aurais de nouveaux scénarios qui viendront peupler mes rêves dans les semaines qui viennent et je ne manquerai pas de vous en causer.
![]()
Monter une vraie IA à la maison, c'est vite une galère. Vous achetez une super machine puis vous collez dessus toute votre liste au père Noël (Chat local, reco vocale, génération d'image, RAG et compagnie) et vous voilà à empiler des dockers à n'en plus finir. Eh bien Light Heart Labs en a eu marre de ces bricolages et nous a pondu Dream Server, un outil qui câble tout ce petit monde à votre place !
Une seule commande et c'est parti mon kiki (Linux et macOS) :
curl -fsSL https://raw.githubusercontent.com/Light-Heart-Labs/DreamServer/main/dream-server/get-dream-server.sh | bash
Ou Windows :
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
git clone https://github.com/Light-Heart-Labs/DreamServer.git
cd DreamServer
.\install.ps1
Ça va lancer le script qui va ensuite tout paramétrer tout seul et choisir le modèle d'IA qui collera le plus à votre matériel, et cela que vous ayez une RTX 4090, un Mac M4 avec mémoire unifiée ou encore une puce AMD Strix Halo voire un vieux PC sans GPU.
Edit : un lecteur m'a remonté un piège si vous êtes sous Linux configuré en français (ou n'importe quelle locale qui écrit les décimales avec une virgule). Le script génère tout seul les valeurs de votre fichier .env en suivant le format de nombres de votre système, et il vous colle des 16,0 au lieu de 16.0. Du coup l'install se vautre avec une erreur dans le genre COMFYUI_CPU_LIMIT: expected number, got '16,0'. La parade, confirmée par un des auteurs, c'est de relancer l'installeur en forçant la locale C (celle qui met des points à la place des virgules) :
LC_ALL=C ./install.sh
Ensuite, pendant que le LLM se télécharge à fond les ballons, un autre petit modèle de 1,5 milliards de paramètres en backup afin que vous puissiez quand même "discuter" avec votre Dreamserver.
Le rôle de Dreamserver c'est donc juste de prendre toutes les briques de l'IA pour vous en faire un truc clé en main. Open WebUI pour le chat, llama-server pour l'inférence, Whisper et Kokoro pour la voix, ComfyUI pour les images, Qdrant pour le RAG, SearXNG pour la recherche web sans mouchard, et bien sûr n8n pour brancher tout ça à vos automatisations.
Et une fois que c'est en route, suffit de lancer la commande dream et là vous pourrez tout faire.
Par exemple dream status pour visualiser l'état des services et du GPU, dream model swap T3 pour changer de "palier" sur votre matos, dream enable n8n pour activer une extension ou encore dream mode hybrid pour avoir de l'inférence en local avec possibilité de basculer sur une IA dans le cloud via une API.
Dreamserver reste un orchestrateur, et pas un moteur IA magique, donc si vous adorez tout assembler vous-même, vous n'avez clairement pas besoin de ça. Par contre, si vous vous en foutez, et que vous voulez juste votre IA qui tourne ce soir, ça vous fera gagner des heures de bidouille.
Faut dire qu'à mesure que l'IA devient une infrastructure de base, dépendre à 100% d'un abonnement cloud qui peut tripler ses tarifs ou couper votre accès du jour au lendemain, ça craint un peu. Donc je pense qu'on est tous bien contents d'avoir des solutions clé en main comme celle-ci.
Si ça vous tente, c'est sur le dépôt de Dream Server .
![]()
Avec Scratch , une app de prise de notes signée Eric Li que je viens de découvrir, vos notes, c'est vos fichiers stockés directement sur votre disque. Pas de cloud, pas de base de données, tout est portable / exportable et c'est ce qui m'a plu. En plus c'est dispo sur Mac, Windows et Linux.
Grâce à Scratch, vous écrivez en mode WYSIWYG comme dans Notion, sauf que derrière ça reste du markdown standard et surtout, comme vos notes sont de bêtes fichiers texte, votre agent local peut les lire et les éditer en direct.
Et comme tout vit sous la forme de fichiers, Scratch repère les modifs externes en temps réel. Vous pouvez donc lâcher n'importe quel agent (Claude Code, Codex, OpenCode, ou votre LLM qui tourne en local via Ollama, donc 100% hors-ligne) ou script sur votre dossier de notes, il suivra sans broncher. Et pour passer d'une machine à l'autre, y'a une intégration git optionnelle en push/pull ce qui permet de faire voyager vos notes comme du code.
L'app c'est du Tauri (du Rust, pas de l'Electron), donc elle pèse 5 à 10 fois moins qu'Obsidian ou Notion.
Et le reste des fonctionnalités, c'est de la coloration syntaxique sur une vingtaine de langages, diagrammes Mermaid, formules KaTeX, wikilinks en tapant [[, commandes slash avec /, mode focus pour écrire au calme, de l'export, et une palette de commandes pilotable au clavier. Bref, tout ce qu'il faut, sans le superflu.
Pour l'installer, un petit brew install --cask erictli/tap/scratch sur Mac, ou le .exe sur Windows et l'AppImage sur Linux et c'est good.
Après y'a pas d'app mobile donc faudra opter pour un autre éditeur capable de lire le markdown mais c'est pas grave !
Voilà que ce soit pour des notes perso, du dev, du markdown au quotidien, ça suffit largement. Après si vous gérez votre cerveau en version numérique avec 5000 notes et 50 plugins, restez sur Obsidian, car c'est pas le même niveau. Mais pour ceux qui ont des besoins simples comme moi, c'est perfecto !
Pour en savoir plus, allez voir la page de Scratch .
![]()
Faut le reconnaître, malgré toute la bonne volonté qu'elle peut y mettre, y'a encore des tâches trop grosses pour être réalisées en une seule passe avec de l'IA, du genre auditer votre projet de Saas en mousse en intégralité ou traiter les milliers de fichiers que vous récupérez sur le darkweb (ça va, j'rigole mes petits Pablo). Hé bien c'est exactement ce que les dynamic workflows d'Anthropic, sortis hier avec Opus 4.8 dans Claude Code, viennent régler.
Et comme c'est encore un nouveau truc relou à savoir, je viens vous expliquer comment tout ceci fonctionne et dans quels cas les utiliser.
En fait, grâce à ça, au lieu de bosser tout seul en une fois, Claude écrit lui-même un petit script qui lance des dizaines, voire des centaines de sous-agents en parallèle, les fait se vérifier entre eux, et vous rend le résultat une fois que tout converge. Vous décrivez le chantier et lui s'occupe de l'orchestration et puis c'est tout !
Car jusqu'ici, un agent IA bossait en gros comme un employé seul à son bureau, avec une demande, une passe, une réponse. Ça marche donc très bien pour un bug isolé ou un bout de code mais dès que le chantier devient énorme, genre rechercher une faille dans tout un projet complexe ou reconstruire une API à partir de milliers de fichiers, là y'a plus personne... la passe unique sature et oublie alors des trucs en route.
Les dynamic workflows cassent donc ce plafond en découpant le boulot en sous-tâches confiées à plein d'agents qui tournent alors tous en même temps, et comme la coordination se passe en dehors de la conversation, pas d'inquiétude, le plan ne déraillera pas, même quand la tâche sera giganormouuuuus !
En fait, quand vous lancez un workflow, Claude planifie à la volée selon votre demande, découpe en sous-tâches, et répartit le tout sur des sous-agents en parallèle. Et chaque résultat est ensuite scrupuleusement vérifié avant d'être réintégré à la conversation principale.
Et comme c'est bien pensé, cette vérification est adversariale, ce qui veut dire que des agents attaquent le problème sous des angles indépendants pendant que d'autres essaient activement de démolir ce que les premiers ont trouvé. Ça tourne donc en boucle jusqu'à ce que les réponses convergent, ce qui élimine pas mal de conneries plausibles qui seraient fausses.
Autre bon point avec cette nouvelle technique, c'est la progression qui est sauvegardée au fil de l'eau. Comme ça si un job se fait interrompre, il repart où il en était dans la même session, au lieu de tout recommencer comme un débile. Et côté garde-fous, sachez qu'un workflow plafonnera max à 16 agents en parallèle et max 1000 agents au total par run, histoire que ça ne parte pas en cachuète !
Il y a 2 façons de lancer cette armée d'agents, et la première ne demande aucun réglage.
Vous demandez juste à Claude de créer un workflow, littéralement avec un truc du genre "crée un workflow pour faire X". Vous verrez, la première fois qu'un workflow se déclenchera, Claude Code vous montrera ce qu'il s'apprête à lancer et vous demandera de confirmer la chose. Comme ça, pas de surprise, c'est vous le boss et c'est vous qui validez avant que ça parte.
Mais y'a aussi la méthode automatique, qui consiste à activer un réglage maison appelé ultracode depuis le menu d'effort (/effort) durant une session en cours, qui pousse le raisonnement très haut (xhigh) et laisse ensuite Claude décider tout seul quand sortir un workflow pour les tâches qui le méritent.
Pour profiter de cette nouvelle feature, il vous faut Claude Code en version 2.1.154 ou plus récente, et ça tourne aussi bien en ligne de commande que sur l'app desktop ou l'extension VS Code. Côté abonnement, c'est dispo sur tous les plans payants... Sur le plan Pro faudra juste l'activer à la main dans le menu /config, alors que sur Max, Team et Enterprise c'est présent d'office.
Pour la chasse aux bugs ou les audits de sécurité sur un dépôt entier, où Claude fouille en parallèle puis revérifie chaque trouvaille de façon indépendante, c'est top ! Pour les grosses migrations aussi, genre changer de framework ou porter un langage vers un autre sur des milliers de fichiers c'est le top aussi surtout que comme je vous le disais, quand c'est critique, vaut mieux que ce soit vérifié deux fois plutôt qu'une !
Ils l'ont utilisé par exemple pour le portage de Bun du langage Zig vers Rust. Cela a pris 11 jours entre le premier commit et la fusion, avec des centaines d'agents en parallèle et deux relecteurs sur chacun des fichiers et au final ce sont plus de 750 000 lignes de Rust qui ont été réécrites. La société Klarna, de son côté, s'en sert pour repérer le code mort que l'analyse statique classique laissait passer.
Perso, ce que je trouve le plus utile, c'est pour les chantiers que je repoussais justement parce qu'ils étaient trop gros pour une seule session. Passer en revue le code de mon site de fond en comble (ce que j'ai fait ce matin), ou encore bosser plus efficacement sur le recompilateur que je suis en train de créer (je vous en recause bientôt..)
Évidemment, je suis lucide, ça a un coût et Anthropic prévient noir sur blanc qu'un dynamic workflow bouffe nettement plus de tokens qu'une session classique. Bah oui, des centaines d'agents qui tournent en parallèle, forcément, ça consomme à fond. Du coup leur conseil officiel, c'est de commencer sur une tâche bien cadrée pour prendre la mesure de ce que ça pompe avant de lâcher l'outil sur un gros morceau. C'est totalement ce que je n'ai pas fait ^^ mais je suis un punk, que voulez-vous !
![]()
Spotify vient d'annoncer un truc intéressant je trouve, qui s'appelle les Personal Podcasts. Le principe c'est de demander absolument tout ce que vous voulez, par exemple un podcast sur un cours que vous venez de suivre, sur un bouquin, sur un article de Korben.info voire sur votre planning de la semaine, vos objectifs...etc etc... Peu importe... Spotify prend tout ça, et génère un épisode audio personnalisé raconté par une voix IA plus ou moins moche.
Et l'épisode apparaît alors directement dans votre bibliothèque, comme si quelqu'un avait fait un résumé audio de votre semaine.
Et pour faire ça, ils ont mis en ligne un repo GitHub save-to-spotify qui est un outil en ligne de commande permettant à des agents IA de créer ce podcast personnalisé tout ça accessible en ligne de commande ou via des agents comme Claude Code, OpenClaw ou Codex.
Que ce soit sous macOS ou Linux, ça s'installe en une ligne (allez lire le install.sh par sécurité quand même avant de l'exécuter) :
curl -fsSL https://saveto.spotify.com/install.sh | bash
Et si vous êtes sous Claude Code, c'est encore plus immédiat :
/plugin marketplace add spotify/save-to-spotify
Le skill se retrouve dans ~/.claude/skills/save-to-spotify/ et votre agent peut demander à Spotify de générer un podcast à la demande pour ensuite le pousser sur Spotify.
Rien de compliqué en fait !
Par contre, le podcast créé est 100% privé, donc vous ne pourrez pas le partager avec vos amis. Mais c'est pas bloquant non plus puisqu'il est toujours possible d'aller récupérer dans les dossiers temporaires de génération de l'émission les MP3 que ça vous crache pour ensuite les mettre ailleurs, soit sur votre site, soit les diffuser sur votre vrai podcast Spotify accessible à tous.
Maintenant, est-ce que je vais faire mon podcast pour raconter les actus que je mets sur ce site ?
Alors j'ai pas le temps mais je le ferai peut-être un jour si la qualité audio de l'IA est suffisante pour que ça ait l'air vraiment produit par un humain et pas par une machine. Pour vous donner une idée, voici ce que ça donne :
Donc c'est pas encore qualitatif... À voir en passant par des moteurs TTS comme ceux d'ElevenLabs... mais pour l'instant, c'est pas d'actualité pour moi. On verra bien... Je me suis quand même amusé à mettre les fichiers texte et JSON produits dans Notebook LM pour faire un autre type de podcast qui cette fois est un peu plus long et plus quali... Je vous mets ici.
Après, peu importe que vous le génériez via l'outil de Spotify ou autrement en passant par un autre outil, le CLI Save To Spotify, vous permettra ensuite de le mettre sur votre compte Spotify pour l'écouter par exemple dans la voiture ou dans les transports.
Bref, c'est disponible et si vous avez Claude Code sous la main, ça prend une ligne à installer. L'annonce complète est par ici .
![]()
Justin Poehnelt, Senior Developer Relations Engineer chez Google, vient de balancer sur Github un outil en ligne de commande (CLI), codé en Rust qui permet de faire un truc trop pratique, à savoir piloter entièrement Workspace depuis le terminal. Ce logiciel nommé GWS est donc capable de gérer Gmail, Drive, Calendar, Sheets et sept autres services Google d'un coup. Et en plus, comme il a été conçu pour les agents IA, donc c'est pas juste pour vous et votre terminal !
Une fois installé via npm, cargo, brew ou un binaire pré-compilé, vous tapez gws auth login pour vous authentifier via OAuth et vous pouvez ensuite attaquer onze services depuis votre shell : Drive, Gmail, Calendar, Sheets, Docs, Chat, Admin, Apps Script, Tasks, Workspace Events et Model Armor.
Niveau archi, au lieu de hard-coder chaque commande dans le binaire, gws interroge tout simplement le Discovery Service de Google au démarrage et reconstruit son arbre de commandes à la volée. Du coup quand Google ajoute un endpoint à l'API Sheets, le CLI le voit apparaître tout seul. C'est trop bien parce que ça évite de devoir attendre une release pour utiliser un éventuel nouveau service de Google. Et pour un agent IA qui re-fetch le schéma à chaque run, c'est plutôt une bonne idée.
Donc en plus de démarrer en moins d'une seconde, GWS crache des sorties en JSON structurées, y'a un mode --dry-run qui montre la requête sans l'envoyer, et de l'auto-pagination via --page-all. Et côté commandes utilitaires, vous avez aussi les + qui sont des helpers cousus main tels que gws gmail +send, gws drive +upload, gws calendar +agenda, gws sheets +append, gws gmail +triage et un gws gmail +standup-report qui résume vos mails de la semaine en quelques lignes.
Le repo embarque aussi 40+ skills d'agent prêts à l'emploi du type "résume mes mails non lus" ou "génère mon rapport", une extension
Gemini CLI
qui s'installe avec gemini extensions install https://github.com/googleworkspace/cli, et le helper +sanitize-response qui fait passer la sortie par Model Armor (le filtre anti-prompt-injection de Google Cloud) pour éviter les réponses bizarres.
En gros, c'est un outil pensé pour faire piloter votre Workspace par Claude, Gemini ou n'importe quel agent. Comme ça vous allez pouvoir écrire un workflow qui lit vos mails non lus, en fait un résumé, le poste dans un Chat et classe tout ça proprement dans Drive... sans avoir à toucher à la souris ni avoir à utiliser votre cerveau léthargique. Elle est pas belle la vie ?
Sauf que. Le projet porte le disclaimer "This is not an officially supported Google product", et un employé Google a confirmé sur le thread Hacker News (presque 1000 points, quand même) que c'est un projet DevRel. Comprendre : pas de SLA, pas de roadmap garantie, pas d'équipe SRE qui veille au grain. Vous savez comment ça finit chez Google avec ce genre de statut !
Bref si vous êtes chaud pour tester, le binaire est dispo ici . Maintenant reste à voir si Google lui donnera un statut officiel ou si GWS s'éteindra discrètement comme tant d'autres projets internes oubliés...
![]()
Si vous utilisez Claude Code au quotidien, vous connaissez ce goût de sang qui vous monte dans la bouche lorsque, sans prévenir, cette putain de limite de quota imposée par Anthropic vous explose à la gueule ! Et le pire c'est que vous n'avez pas l'impression d'avoir fait grand chose.
En réalité, la vraie raison c'est surtout le "bruit" de toutes vos sorties shell. Un git log, un cargo test, un npm build... votre agent IA ingère tout ça comme du petit lait alors qu'il n'a besoin que d'une fraction pour comprendre ce qui se passe.
Breeef, c'est pas ouf quoi.
Heureusement pour vous RTK (Rust Token Killer) vient régler en partie ce problème. RTK c'est développé par un Français et c'est un proxy CLI en Rust qui s'intercale entre votre shell et votre agent IA, intercepte les commandes courantes et compresse leur sortie avant qu'elle n'atterrisse dans le contexte de votre agent.
Comme ça plutôt que de massacrer vos prompts ou de changer vos habitudes (et dieu sait que vous avez horreur de changer d'habitudes..lol), il attaque le bruit à la source grâce à 4 stratégies de compression : un filtrage du boilerplate, un regroupement des lignes similaires, une troncature intelligente et de la déduplication des répétitions.
Et tout ça s'intègre merveilleusement bien via un hook pour Claude Code, GitHub Copilot, Cursor, Gemini CLI, Windsurf, Cline, Codex... soit une bonne dizaine d'outils supportés !
Ainsi, votre git status devient rtk git status sans changer quoi que ce soit à vos habitudes... RTK fait tout le filtrage dans votre dos, ce qui est parfait ! C'est un outil qu'on installe et qu'on oublie.
Par exemple un git diff passe de 12 000 tokens à 960, soit 92% d'économie, un npm test tombe de 6 000 à 600 tokens et une session de refactoring sur 12 fichiers passe de 74 700 à 6 960 tokens d'après les benchmarks. En pratique, les utilisateurs constatent des économies autour de 70% sur l'ensemble d'une journée de boulot, ce qui représente plusieurs millions de tokens par semaine pour ceux qui bossent avec des agents IA à plein régime.
Moi ça fait plusieurs mois que je le teste et voici mes stats. Ça donne quand même 81,5 % d'économie de tokens !!
L'installation se fait en une commande : brew install rtk sur macOS, ou un script curl pour les autres plateformes, ou cargo install --git https://github.com/rtk-ai/rtk si vous préférez compiler ça vous-même.
Avec la commande rtk gain vous verrez un tableau comme ci-dessus avec les statistiques par commande, et rtk gain --history donnera l'historique détaillé. Y'a plus de 100 commandes couvertes, de git aux runners de tests en passant par AWS CLI, kubectl et docker. Par contre, ça marche pas super bien si vos sorties de commandes sont déjà très courtes. Ça ne fera pas de miracle mais pour des diffs volumineux ou de suites de tests qui crachent 3 000 lignes à chaque fois, c'est tip top !
Si vous utilisez des agents en mode autonome où une boucle tourne sans intervention, c'est même encore plus pertinent car chaque itération accumule du bruit de façon cumulative, et du coup le contexte se remplit de trucs inutiles à vitesse grand V. Moins de bruit grâce à RTK, c'est donc une économie de tokens mais c'est également un meilleur signal pour votre agent.
RTK est dispo en open source sur GitHub sous licence Apache 2.0.
![]()
Une boîte mail avec 12 000 messages non lus (genre 32 par jour pendant un an), c'est pas une vie mais c'est pas une fatalité non plus puisque Lakshay Gupta vient de poster NeatMail . Cet outil est un assistant IA qui labelise vos mails Gmail ou Outlook automatiquement et qui rédige des brouillons de réponse dans votre style d'écriture. Le code est dispo sur Github, auto-hébergeable, mais je reviendrai sur la licence (spoiler : c'est custom)...
L'interface marketing de NeatMail
En gros, vous connectez votre Gmail ou Outlook via OAuth (rien à faire côté mot de passe, et tant mieux vu les fuites récentes via les outils IA ), et NeatMail utilise ensuite OpenAI GPT-4o mini en backend pour classifier chaque mail entrant (avec un taux annoncé de 95% de confiance, mais c'est à voir en pratique).
Comme ça, plutôt que d'attendre que vous traitiez vos messages par batch comme un facteur dépressif, le truc bosse en temps réel ! Un mail arrive, hop, label appliqué et ainsi de suite. Et si le système juge que ça mérite une réponse, il vous prépare un brouillon dans votre ton habituel.
Y'a aussi des trucs qui font la différence avec un simple filtre Gmail. Le système se souvient des conversations passées pour rester cohérent dans les brouillons, vérifie votre calendrier avant de proposer un créneau, et apprend votre style à force de relire ce que vous écrivez. La fonctionnalité de désinscription en un clic balaye aussi les newsletters promo, et il y a même une intégration Telegram qui ping votre téléphone quand un mail vraiment important arrive ("Oh cool encore un mail de mon avocat !").
Le chaos d'une boîte Gmail sans tri auto
Côté code, c'est du Next.js 16 + React 19 pour le front, Hono.js pour le backend, PostgreSQL pour les métadonnées, Redis Upstash pour la déduplication, et Inngest qui orchestre les workflows. Le tout majoritairement codé en TypeScript, avec un Dockerfile prêt à dégainer.
Faut juste vos identifiants Google Cloud, Microsoft Entra et OpenAI à côté pour faire tourner ça chez vous, ce qui n'est pas hyper user friendly à trouver mais reste faisable un dimanche pluvieux si vous avez la niak.
Pour le pricing, NeatMail propose 7 jours d'essai gratuit puis 7 dollars par mois. À comparer donc avec Superhuman qui demande entre 30 et 40 dollars mensuels pour le même genre de service, ou SaneBox qui démarre à 7 dollars mais ne propose pas de rédaction de brouillons par IA.
Sauf que là, le code EST sur GitHub, du coup si vous avez la flemme de payer 84 dollars par an (le prix d'un bon resto en amoureux 😍) et que vous savez configurer un PostgreSQL, vous économisez votre argent et vous gardez la main sur l'infra !
Brouillon de réponse pré-rédigé directement dans Gmail
Après faut quand même garder en tête que NeatMail est encore jeune, et que c'est un projet solo. Et côté licence, c'est pas du MIT pur puisque la licence réelle s'appelle "NeatMail Open Source License". C'est donc de la licence faite maison, avec de l'auto-hébergement autorisé, mais une interdiction complète de revendre une instance ou de monter un business concurrent.
Donc si vous comptiez forker le projet pour monter votre SaaS concurrent, oubliez ça direct, car ce n'est pas autorisé. Côté privacy, le créateur précise qu'aucun contenu de mail n'est stocké en base, mais juste les métadonnées (sachant que les mails passent quand même par OpenAI pour la classification, faut pas se mentir...).
Voilà, je trouve l'idée plutôt sympa. Le code est dispo sur GitHub si vous voulez self-hoster votre boîte mail intelligente, ou comme je vous le disais, y'a la version SaaS sur neatmail.app à 7 dollars par mois pour les flemmards. Carrément moins cher que Superhuman !
![]()
Mark Zuckerberg veut que ses salariés puissent lui parler même quand il n'est pas là. Meta travaille sur une version IA photoréaliste et animée de son patron, entraînée sur sa voix, son image, ses manies et ses déclarations publiques.
Le projet est encore au stade précoce, mais Zuck s'implique à fond : il supervise personnellement l'entraînement et les tests de son double numérique, et passerait même cinq à dix heures par semaine à coder sur les différents projets IA du groupe.
L'avatar doit pouvoir tenir une conversation en temps réel avec les employés et leur donner du feedback, comme si Zuckerberg passait lui-même dans le bureau. Il est nourri aux images, à la voix et aux réflexions stratégiques récentes du milliardaire, pour que les salariés du groupe à 1 600 milliards de dollars se sentent plus proches du fondateur via cet ersatz interactif.
C'est distinct d'un autre projet en cours, le "CEO agent", censé assister Zuckerberg lui-même dans son boulot quotidien en lui remontant de l'information à la volée.
Côté technique, c'est une autre paire de manches. Faire tourner un personnage 3D photoréaliste en temps réel sans lag demande une puissance de calcul énorme, et Meta galère à passer à l'échelle. Pour la voix, le groupe a racheté l'an dernier deux boîtes spécialisées, PlayAI et WaveForms.
Si l'expérience Zuckerberg fonctionne, l'idée est ensuite de proposer la même chose aux influenceurs et créateurs qui voudront déployer leur propre avatar auprès de leurs fans.
À côté de ça, Meta pousse ses équipes à s'automatiser avec des outils maison. Les salariés sont invités à utiliser OpenClaw, un framework d'agents open source, et à concevoir leurs propres agents pour abattre les tâches répétitives.
Les chefs de produit passent même un "exercice de niveau" qui inclut du design de système et du vibe coding. Meta jure que ce n'est pas obligatoire et que ça sert juste à cibler les besoins de formation. Certains salariés, eux, y voient la répétition générale d'une vague de licenciements.
Les avatars IA chez Meta, ce n'est pas nouveau. En septembre 2023, le groupe avait sorti des chatbots avec la tête et la voix de Snoop Dogg et d'autres célébrités, puis un AI Studio pour créer ses propres personnages.
Sauf que l'an dernier, des utilisateurs ont généré des avatars à caractère sexuel, les régulateurs se sont inquiétés pour la sécurité des mineurs, et depuis janvier Meta a restreint l'accès des ados à ces personnages.
Un clone de Zuck dispo 24h/24 pour vous donner du feedback sur votre code, je ne sais pas si c'est un rêve ou un cauchemar. Probablement les deux.
Source : FT
![]()
9 kilos en moins. Ses meilleurs chronos de sa vie sur 5 et 10 km. Et la meilleure forme depuis au moins une décennie. Voilà le bilan que Derek Wallbank, rédacteur en chef chez Bloomberg, affichait à la veille du marathon de Paris, qu'il a couru hier. Son coach pendant ces douze mois de préparation ? ChatGPT, et rien d'autre.
Wallbank avait déjà tenté un marathon il y a une bonne dizaine d'années, expérience qu'il qualifie de "catastrophe complète". Cette fois, plutôt que de payer un coach humain ou de télécharger un plan générique, il a passé environ une heure à nourrir ChatGPT de son historique complet de coureur : courses passées, allures de référence, blessures, objectifs, contraintes personnelles.
Et c'est là que le truc devient intéressant par rapport aux plans tout faits qu'on trouve en PDF sur n'importe quel blog running : le modèle a produit quelque chose de bien plus structuré, qui s'ajustait semaine après semaine selon ses retours d'entraînement. Sur le papier, c'est un cran au-dessus.
Sauf que voilà, la bestiole a des limites sérieuses. "Il ne va pas vous dire ce que vous devriez faire, ni comment vous devriez vous sentir, ni si vous êtes en surentraînement, ni si vous foncez vers la blessure", expliquait-il avant la course.
Un vrai coach sent quand son athlète commence à tirer la langue. Le modèle de langage, lui, continue à balancer des séances en se fiant uniquement à ce que vous lui dites. Vous tapez "ça va", il vous colle 30 km le samedi.
Autre problème plus vicieux : au bout de plusieurs mois, le plan s'est mis à halluciner. ChatGPT perdait le fil entre ce qui comptait vraiment et le bruit accumulé dans les échanges précédents. Classique des LLM sur les projets longs : plus vous empilez les conversations, plus les infos importantes se diluent dans le contexte.
Wallbank a dû recadrer régulièrement, réinjecter les bons paramètres, rappeler les priorités du moment. Bref, c'est pas magique. "Ce n'est pas un remède miracle, ça ne se gère pas tout seul", résume-t-il.
La course s'est tenue dimanche dernier, remportée chez les hommes par l'Italien Yemaneberhan Crippa en 2h05'18". Wallbank, lui, n'a pas encore rendu public son propre chrono.
Mais il s'est présenté sur la ligne de départ avec 9 kilos perdus, des records personnels battus sur les courtes distances, et pas une blessure malgré les hallucinations du plan. Pas un mauvais retour sur investissement pour un abonnement à 20 dollars par mois.
Bref, un ChatGPT qui vous fait maigrir et battre vos chronos à l'entraînement, c'est déjà pas mal. Pour le verdict sur 42 kilomètres, on attend que l'intéressé parle.
Source : Bloomberg
![]()
Simuler des clics, des frappes clavier, planifier l'extinction du PC ou prendre des screenshots en boucle, tout ça sans écrire une seule ligne de code... c'est ce que propose Tasket++ , un petit outil open source développé par un dev français.
En gros, c'est un planificateur d'actions utilisateur pour Windows 10 et plus. Vous définissez une liste d'actions (clic ici, tape ça, attends 5 secondes, ouvre ce fichier.exe), vous programmez le tout et hop, ça tourne en boucle sans que vous leviez le petit doigt. Le truc se lance au démarrage via une entrée dans la base de registre, ou via un raccourci .lnk sur le bureau et côté actions disponibles, c'est assez complet pour un outil qui pèse à peine 30 Mo.
Vous avez les séquences de touches avec gestion des délais entre chaque touche (pas mal pour simuler une frappe humaine plutôt qu'un copier-coller robotique), les déplacements de curseur pixel par pixel, le collage de texte, et surtout toute une batterie de commandes système : éteindre le PC via shutdown -s, redémarrer, tuer un processus avec taskkill, ouvrir un fichier ou une URL, créer ou supprimer des dossiers, et même prendre des captures d'écran automatiques en .png.
D'ailleurs, le coup des screenshots planifiés au démarrage, c'est un use case assez malin pour surveiller l'activité d'une machine ou pour fabriquer un timelapse de votre bureau !
Et sinon OUAIS, ça peut aussi simuler votre présence devant le PC. Des mouvements de souris, des clics, des frappes clavier... du coup si votre logiciel de monitoring corporate vous casse les pieds pendant la pause café, bon bah, vous savez ce qu'il vous reste à faire (j'ai rien dit ^^). Attention par contre, si votre boîte utilise un vrai EDR ou un agent qui checke les processus actifs, ça risque de pas suffire. Ce genre de monitoring va malheureusement souvent au-delà du simple mouvement de souris.
Cet outil c'est l'œuvre d'Amir Hammoutene, ingénieur dev basé en région parisienne, qui bosse dessus depuis février 2024. Pour les curieux qui connaissent Actiona , c'est dans la même veine, sauf que Actiona c'est plus complet mais faut toucher à du scripting, alors que Tasket++ c'est 100% GUI, y'a qu'à cliquer.
L'interface ne paie pas de mine (on est sur du Qt classique, pas du Material Design), mais bon, elle fait le taf ! Vous créez vos tâches dans des onglets, vous empilez vos actions dans l'ordre, et vous lancez sur votre machine.
Les fichiers de tâches sont alors sauvegardés en .scht dans un dossier saved_tasks/. Ce qui manque le plus je trouve c'est les raccourcis globaux pour déclencher une tâche depuis n'importe quelle appli, genre pendant un jeu. Mais c'est justement prévu dans les prochaines versions, avec aussi des alertes sonores et un portage Linux. Par contre, pour le moment c'est Windows only, et sauf si vous compilez le code source vous-même avec Qt Creator, pas moyen de le faire tourner sur autre chose.
C'est dispo gratuitement sur le Microsoft Store , ou en version portable (un .zip de 30 Mo à décompresser dans mon dossier, pas d'install).
Bref, si vous cherchez un truc simple pour automatiser vos actions quotidiennes sans vous farcir du scripting, allez jeter un oeil. Merci à Amir pour le lien !
![]()