Lateo.net - Flux RSS en pagaille (pour en ajouter : @ moi)

🔒
❌ À propos de FreshRSS
Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierKorben

Broadcom - Une faille Wi-Fi agée de 16 ans toujours sans CVE

Par : Korben ✨

Il y a quelques jours, durant la conférence Hexacon à Paris, un chercheur nommé Quentin Kaiser a rendu publique une faille de sécurité qui traîne depuis au moins 2010 dans la fonction WPS de Broadcom. Je dis "qui traine" au présent parce qu'elle n'est toujours pas patchée évidemment. Alors si vous ne savez pas ce qu'est WPS, c'est une fonctionnalité qui permet de connecter un appareil au WiFi sans avoir taper la clé.

Cela veut dire que quelqu'un à portée du réseau sans fil peut faire exécuter son propre code à une box ou à un point d'accès, sans avoir à connaître la clé du réseau et sans même mener un enrôlement WPS jusqu'au bout.

Son exploit, il l'a filmé sur deux box belges. Chez Orange Belgium (une Askey TCG3000), où son code lit la clé Wi-Fi dans la mémoire de la box et la renvoie via les ondes, ce qui lui permet ensuite de rejoindre le réseau. Chez l'opérateur Proximus (une BBOX3V+), il ouvre un shell à distance au travers des trames Wi-Fi, donc sans avoir recours à un serveur extérieur. L'antenne qu'on voit sur la vidéo ci-dessous ne doit d'ailleurs pas faire croire qu'il faut être collé à la box puisque d'après Kaiser, ça marche de loin !!

Le plus gênant, c'est que Broadcom est bien bien au courant. Dans sa réponse à Kaiser, la société dit connaître la faille depuis longtemps et avoir remplacé l'ancien code par une version basée sur hostapd à partir de 2018. Mais elle refuse de lui attribuer un CVE, l'identifiant qui permet à tout le monde de suivre une faille, tout comme de divulgur l'avis de sécu qu'elle dit avoir envoyé aux fabricants.

Du coup, le fix dépend du fabricant qui doit avoir adopté hostapd , et de l'opérateur qui doit avoir poussé le firmware. Et ça c'est pas forcément fait puisque la faille est présente chez Proximus, Orange Belgium et VOO, que rien sur ces box n'est encore corrigé. Et pour les plus vieilles plateformes, celles sous eCos, il parle même de "forever day", c'est à dire une faille qui ne sera JAMAIS corrigée.

Et chez nous, en France ?

Et bien on peut voir dans ses diapos, une page "Passive War Driving in Paris" où sont mentionnée une Livebox Sagemcom Fast5656_OFR et la NB6VAC de SFR qui y sont taguées "Not Patched", alors que trois autres Livebox (Fast5698_OFR, Fast5670_OFR et un répéteur) et une Bbox de Bouygues (F5696b) sont "Patched". Donc ça dépend des box et on n'a pour le moment pas plus d'infos là dessus.

Sachez aussi que couper le WPS ne protège pas forcément mais bon, ça ne coûte rien de le couper si vous ne l'utilisez pas. Autrement, coupez carrément le Wifi et utilisez votre propre routeur ( genre ces merveilleux Deco ) branché en Ethernet au cul de la box.

Et pour les bidouilleurs que vous êtes, Kaiser a publié sur GitHub un script de détection à utiliser avec une box en marche pour voir si elle est faillible ou pas. Ce script nécessite une interface Wi-Fi qui gère le mode moniteur (donc une Alpha ou ce que vous avez sur la main avec du mode monitor fonctionnel). Et bien sûr, c'est à lancer uniquement sur votre propre box et pas chez le voisin sinon vous irez en prison !! Argh !

Source : The Hacker News

Llama - L'IA locale de llama.cpp, sans ligne de commande

Par : Korben ✨

Faire tourner un modèle de langage en local sur son PC, avec llama.cpp, ça marche très bien, mais ça demande quand même de mettre un peu les mains dans le cambouis. Il faut aller chercher le binaire, trouver le bon fichier GGUF sur Hugging Face et lancer le serveur en ligne de commande.

Heureusement, léquipe de ggml-org, celle qui développe justement llama.cpp, souhaite soulager notre peine en nous proposant pour Windows 11 une petite app baptisée Llama (Ouais, c'est original comme nom ^^) qui se loge dans la zone de notification et qui fait tout le taf à votre place.

C'est en fait un portage pour Windows de Llama for Mac , qui est lui aussi dans la barre des menus de macOS. Côté install, suffit de récupérer le fichier .msixbundle dans les Releases du dépôt, vous double-cliquez dessus, et c'est parti mon kiki. Si vous avez déjà un llama.exe sur votre machine, l'app s'en servira, sinon elle en téléchargera un toute seule. Et bien sûr, le code est sous licence MIT, avec un petit copyright au nom de Hugging Face quand même.

Une fois que c'est en place, l'icône ouvre un petit panneau de commande avec une liste de modèles recommandés à télécharger en un clic. Vous pouvez aussi chercher n'importe quel modèle GGUF du Hub directement depuis cette liste, ou coller l'identifiant d'un dépôt. L'app vérifie également au passage s'il vous reste assez de place sur le disque avant de lancer le téléchargement ! (Moi j'ai 4 To et je suis toujours PLEIN, j'en ai marre ^^)

Bref... en cliquant sur un modèle, vous choisissez sa taille de contexte, et pour chaque option, l'app vous donne une estimation de la mémoire consommée, qu'elle récupère dans l'en-tête du fichier GGUF. C'est très pratique pour savoir avant de le lancer si ça va tenir dans votre fichue machine. Et comme les modèles sont stockés dans le cache standard de Hugging Face, bah ils sont partagés avec llama.cpp et les autres outils qui l'utilisent, ce qui évite d'avoir des doublons de plusieurs gigas sur le disque.

Mais le truc le plus sympa, je crois c'est le raccourci Alt+Espace qui, peu importe ce que vous êtes en train de faire, ouvre une fenêtre avec l'interface web du chat IA près à vous répondre, un peu à la manière de Spotlight sur Mac. Et quand vous la refermez, hé bien elle se planque simplement au lieu de se fermer ce qui fait qu'elle se réaffiche instantanément avec votre conversation dès que vous en avez besoin.

Par contre, dommage, ce raccourci est codé en dur et il n'y a aucun réglage pour en changer. Donc si une autre app squatte déjà Alt+Espace, comme PowerToys Run dont c'est le raccourci par défaut, hé bien Llama vous prévient mais ça n'ira pas plus loin. A moins que vous changiez le raccourci par défaut de PowerToys Run .

Côté vie privée, Llama n'envoie aucune data de télémétrie et vos prompts restent sur votre machine. Et comme l'app pilote un serveur llama.cpp qui expose une API REST, la fiche d'un modèle vous proposera même une requête curl toute prête afin de brancher vos autres outils dessus.

Attention si Smart App Control est activé sur votre PC, il se peut que Windows bloque llama.exe, qui n'est pas signé (contrairement au paquet MSIX de l'app). Dans ce cas, le serveur ne démarrera pas et l'app ne servira à rien. Si vous êtes concerné, il faudra donc patienter ou contourner Smart App Control.

À télécharger sur GitHub pour ceux qui veulent !

Windows 11 - Le lien du compte local serait déjà patché

Par : Korben ✨

Est-ce que vous vous souvenez de ce petit lien "Learn more" dont je vous avais parlé il y a un mois environ et qui permettait d'ouvrir un compte local lors de l'installation de Windows 11 Home sans passer par l'invite de commandes ? Eh bien Bob Pony, l'utilisateur de X qui l'avait repéré, vient de déclarer que ça avait été "discrètement" patché côté serveur .

Pour ceux qui l'avait raté, le concept c'était que sur l'écran qui vous réclame un compte Microsoft, le petit lien "Learn more" présent dans le paragraphe sous les "Sign-in options" pouvait nous envoyer direct sur la création d'un compte local. Comme ça pas de base de registre à bidouiller, ni de Wi-Fi à suspendre...

Comme quoi, une simple erreur peut engendrer beaucoup de bonheur !

Alors, c'est finito pour de bon ?

Parce qu'un correctif côté serveur, ça ne s'évite pas, hein surtout que comme le rappelle Windows Latest , l'installation repose sur des composants web, ce qui veut dire que même garder une vieille ISO sous le coude ça ne servira à rien.

Maintenant pour continuer à vous créer un compte local, c'est possible avec le célèbre Rufus , où il y a juste une case à cocher et comme ça votre clé USB ne réclamera plus aucun compte.

Bref, si vous avez une installation prévue aujourd'hui, tentez quand même le lien pour voir et me dire car pour le moment, seul Bob Pony a confirmé cette régression.

Quick Tunnels - Votre projet localhost sur le web avec invitation

Par : Korben ✨

Cloudflare a sorti il y a petit moment maintenant une commande que pas mal de dev utilisent et dont je vais vous parler aujourd'hui : cloudflared tunnel --url, qui permet de publier un serveur tournant sur votre machine à une adresse en trycloudflare.com, sans avoir besoin de compte, de nom de domaine et surtout sans avoir à ouvrir le moindre port sur votre box toute pourrie.

Et la petite nouveauté depuis quelques jours, c'est que, autant avant, n'importe qui possédant le lien pouvait se connecter à votre service, mais maintenant, Cloudflare a mis en place une option qui permet de réserver ce lien à quelques adresses e-mail que vous définissez.

Ce service s'appelle les Quick Tunnels, et pour en profiter, il vous faudra juste un service web qui tourne en local (moi je vais faire ça sur le port 8080 comme d'hab) avec une page de test toute bête servie par Python. Voilà c'est juste de quoi vérifier que tout passe bien avant d'y brancher un vrai projet. Et si vous faites bosser des agents IA avec ce truc, on verra aussi comment mettre un garde-fou pour éviter l'exposition sur le web de trucs pas prévus ! Argh !!

Installer cloudflared

cloudflared, c'est le petit connecteur open source de Cloudflare, celui qui établit la connexion sortante vers leur réseau. Sur Mac, pour l'installer c'est fastoche, suffit d'utiliser Homebrew :

brew install cloudflared

Sous Debian ou Ubuntu, passez par conte par le dépôt officiel de Cloudflare. Il a changé de clé de signature récemment, donc reprenez bien ces commandes plutôt que celles d'autres vieux tutos qui traînent :

sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt-get update && sudo apt-get install cloudflared

Et sous Windows (les courageux !! lol), la page de téléchargement de Cloudflare propose un MSI ou un exécutable, en 32 ou 64 bits, et le paquet existe aussi chez winget sous l'identifiant Cloudflare.cloudflared. Dans tous les cas, vérifiez ensuite la version, car l'option d'authentification dont on va parler plus bas n'arrive qu'à partir de la version 2026.9.3 :

cloudflared --version

Ouvrir un tunnel public

Tout d'abord, lancez votre serveur local, puis dans un autre terminal, faites :

cloudflared tunnel --url http://localhost:8080

Au bout de quelques secondes, cloudflared affichera un encadré avec une adresse aléatoire composée de quatre mots, du genre quelque-chose-truc-bidule.trycloudflare.com, en prévenant qu'elle peut mettre un moment à répondre. Donc soyez un peu patient, le temps que le DNS résolve ce truc (et videz votre cache DNS si ça veut vraiment pas le faire).

Ensuite, ouvrez cette URL depuis un autre appareil, genre votre téléphone en 4G par exemple et hop, vous tomberaz sur votre serveur local. Et si vous voulez tout couper, un petit Ctrl+C dans le terminal et c'est fini ! Pas de panique, au prochain lancement de cloudflared, vous aurez une nouvelle adresse.

La commande de base, et le cadre où cloudflared affiche l'adresse trycloudflare.com à partager

Notez aussi que le port n'est pas imposé puisque --url accepte tout ce que cloudflared peut joindre, une adresse IP de votre réseau local comprise. Par contre, si votre projet tourne sous Vite, vous allez prendre un "Blocked request" en pleine tronche, car Vite ne répond par défaut qu'à localhost, aux domaines en .localhost et aux adresses IP. La parade la plus simple consiste donc à faire croire à Vite qu'on l'appelle via localhost:5173 en faisant comme ceci :

cloudflared tunnel --url http://localhost:5173 --http-host-header localhost:5173

L'autre solution, c'est d'ajouter l'hôte dans le réglage server.allowedHosts de Vite. Mais évitez de passer ce réglage à true pour aller plus vite, en effet la doc de Vite le déconseille puisque ça expose votre serveur de dev à des attaques par DNS rebinding. Oupsi oups !

Gardez aussi en tête que c'est un outil de test et de démo et que c'est pas fait pour de la prod. Si on en croit la doc , Cloudflare ne garantit aucune disponibilité, sans oublier que chaque tunnel encaisse au max 200 requêtes en simultanné (au-delà, ça vous fera une erreur 429 ) et les Server-Sent Events ne passeront pas. Voilà, donc si vous voulez un nom fixe et du vrai trafic, il faudra plutôt créer un tunnel nommé à partir d'un vrai compte Cloudflare et d'un domaine de votre choix.

Réserver l'adresse à quelques personnes

Et maintenant, pour limiter l'accès à votre service à quelques personnes, ajoutez --allowed-mail suivi de l'adresse email de celui à qui vous voulez montrer votre merveilleux boulot :

cloudflared tunnel --url http://localhost:8080 --allowed-mail korben@example.com

L'encardré change alors de "ton" en vous annonçant que le tunnel est "protégé" par une authentification de type code à usage unique via Cloudflare Access, ainsi que la quantité d'adresses autorisées. Les adresses elles-mêmes n'apparaissent nulle part, même dans la ligne des réglages où elles sont remplacées par des astérisques, ce qui est plutôt bien vu si vous faites une démo en mode partage d'écran. Ça évite les fuites de données perso !

Avec --allowed-mail, le cadre annonce le code à usage unique et le nombre d'adresses autorisées, sans jamais les afficher

Vous pouvez ensuite répéter l'option autant de fois que nécessaire, séparer plusieurs adresses par des virgules, ou autoriser tout un domaine. Mettez simplement des guillemets autour du "joker" (c'est l'étoile) pour que votre misérable shell ne tente pas de l'interpréter comme un gros teubé :

cloudflared tunnel --url http://localhost:8080 \
 --allowed-mail korben@example.com \
 --allowed-mail bob@example.com \
 --allowed-mail '*@example.com'

Côté Wrangler, si vous bossez sur Workers, un petit npx wrangler tunnel quick-start acceptera la même option :

npx wrangler tunnel quick-start http://localhost:8080 --allowed-mail korben@example.com

De son côté, votre invité VIP n'aura alors plus qu'à ouvrir l'URL que vous lui avez donné et cloudflared renverra son browser vers login.trycloudflare.com. Il tombera alors sur une page Cloudflare Access qui lui demandera son adresse mail. Il recevra ensuite un code dans sa boîte, devra le taper, et arrivera enfin (ouf !!) sur votre merveille application probablement vibe codée (lol).

Et quelqu'un qui n'est pas sur la liste des invité ne verra quand à lui qu'une réponse de base lui expliquant qu'il peut bien aller se faire voir (et sa requête n'atteindra jamais votre application).

Ce que voit votre invité en ouvrant l'URL protégée : la page Cloudflare Access qui lui demande son adresse mail

Et votre liste d'emails, elle, n'est jamais diffusée hors de votre ordi puisque Cloudflare vérifie seulement que la personne contrôle l'adresse qu'elle a saisie. Ensuite c'est cloudflared qui compare les accès en mémoire, avec ce que vous avez tapé. Une fois entré, le visiteur gardera alors sa session jusqu'à 4 heures max.

Et si vous voulez modifier cette liste d'accès, il faudra alors arrêter le tunnel et en relancer un autre, ce qui coupera l'accès à tout le monde et vous donnera une nouvelle adresse à renvoyer. Donc soyez sûr de votre coup avant de casser la tête aux gens qui vont tester votre appli.

Sachez aussi que cette vérification ne pourra se faire qu'avec un vrai navigateur et pas des trucs du genre un webhook Stripe, un GitHub, un script en curl ou encore n'importe quel client automatique qui restera coincé devant cette page de connexion.

Pour ces cas-là précieusement, je vous recommande plustôt d'ouvrir un tunnel public le temps du test et de le couper juste après. Et si le webhook doit tourner durablement, passez sur un tunnel nommé avec Cloudflare Access, sur votre propre domaine.

Le confier à votre agent IA

Maintenant, parlons un petit peu à agents IA parce que oui... Un agent de code a besoin d'un endroit pour vous montrer ce qu'il vient de faire de beau, et Cloudflare décrit justement ce cas de figure dans son article.

Pour éviter qu'un agent IA ne diffuse publiquement ce qu'il vient de faire à la vue de tous, ce que recommande Cloudflare, c'est donc d'ajouter une ligne dans le fichier d'instructions de l'agent AGENTS.md comme ceci :

Quand tu lances un Quick Tunnel, ajoute toujours --allowed-mail moi@exemple.fr.

Sauf qu'une consigne reste une consigne... C'est un prompt que l'agent peut choisir d'ignorer... Donc gardez bien en tête que ces fichiers sont traités comme du contexte et pas comme une configuration imposée.

Maintenant, si vous voulez vraiment bloquer une action, peu importe ce que décide le modèle, ce que je vous recommande d'utiliser à la place, c'est un hook "PreToolUse". Moi, j'en mets partout dans mes configs Claude Code pour plus de sécurité.

Si vous ne savez pas ce qu'est un hook, en fait c'est un petit script contenant la commande en JSON, et que Claude Code lance avant chaque commande bash. Si ce script se termine avec le code "2" l'appel est alors bloqué. Pour faire ça, il faut donc créer dans le dossier .claude/hooks/ de votre projet, le script suivant :

#!/bin/bash
# .claude/hooks/tunnel-protege.sh
COMMAND=$(jq -r '.tool_input.command')

if echo "$COMMAND" | grep -qE 'cloudflared.*tunnel.*--url|wrangler.*tunnel.*quick-start' \
 && ! echo "$COMMAND" | grep -q -- '--allowed-mail'; then
 echo "Quick Tunnel public refusé : ajoutez --allowed-mail, ou demandez-moi d'abord." >&2
 exit 2
fi
exit 0

Puis rendez-le exécutable avec chmod +x, et installez jq si vous ne l'avez pas encore fait.

Déclarez-le ensuite dans le .claude/settings.json du projet, sur l'outil Bash comme ceci :

{
 "hooks": {
 "PreToolUse": [
 {
 "matcher": "Bash",
 "hooks": [
 {
 "type": "command",
 "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/tunnel-protege.sh"
 }
 ]
 }
 ]
 }
}

Maintenant, si ça vous prend trop le chaud de faire ça, sachez que j'ai fait un petit kit à télécharger ici, pour les Patreons :

Ensuite, à partir de là, un cloudflared tunnel --url ou un wrangler tunnel quick-start lancé sans le paramètre --allowed-mail ne fonctionnera pas, et l'agent recevra le message du hook qui lui dira d'ajouter l'option ou de vous demander s'il doit y avoir un contournement.

Et bien sûr, un tunnel nommé lancé avec cloudflared tunnel run, lui, passera normalement.

Comme d'hab, ce genre de garde-fou a ses limites, puisqu'il ne lit que le texte de la commande et ne vérifiera pas l'adresse qui suit l'option. Il ne verra non plus les tunnels qui pourraient être lancés depuis un script ou à l'aide d'une variable d'environnement TUNNEL_URL, qui permet aussi de lancer un Quick Tunnel. Voilà, donc laissez la consigne dans AGENTS.md en plus du hook, au cas où... Les deux devraient bien se compléter.

Pour les soutiens Patreon , le kit ci-dessus reprend donc ce hook avec les consignes à coller dans AGENTS.md, dont l'exception des clients automatiques (l'agent vous demande au lieu de retirer l'option).

Il y a aussi là dedans un script qui lance le tunnel protégé et ne renvoie que son adresse. Et si vous préférez scripter ça vous-même, partez de --output json, qui transformera chaque ligne du log en objet JSON. L'adresse sera alors accessible dans le champ message, et vous pourrez alors l'extraire avec une expression régulière.

Ah et un dernier point avant de lâcher un agent là-dessus sur le portable de votre boulot, je vous invite à lire ce que Proofpoint a documenté concernant des campagnes de malware qui s'appuient sur ce genre de tunnels gratuits. Ça explique pourquoi des outils de sécurité comme Elastic ont des règles qui repèrent cloudflared quand il est utilisé pour exposer un service local. Leur conseil c'est de bloquer les domaines de tunnel quand l'usage n'est pas autorisé, donc si vous comptez utiliser ça dans votre boite, allez voir Dieu Tout Puissant (le sysadmin grognon quoi...) pour lui demander l'autorisation. Il va pester, souffler, éventuellement vous cracher dessus puis finira probablement par accepter, donc pas d'inquiétude ^^.

Et comme la protection par mail est gratuite, au même titre que les Quick Tunnels eux-mêmes, je ne vois aucune raison valable de balancer une démo accessible sur le web sans utiliser cette authentification.

ArseneLupin - Le JEV Like d'Ibou qui décide au lieu de bavarder

Par : Korben ✨

Jev, je ne l'ai jamais utilisé mais Kev, en revanche, je l'ai branché dans mon outil de sélection de sujets de veille pour qu'il me dise notamment si un sujet correspond à ce qui me plaît ou pas. C'est en cours de test, donc je ne vais pas vous livrer de conclusion hâtive sur si ça fonctionne bien ou pas, mais si je vous en parle, c'est parce que Sylvain Peyronnet, le papa du moteur de recherche français Ibou , publie à son tour 3 modèles de la même famille, baptisés ArseneLupin, conçu également pour faire du décisionnel

Pour ceux qui ne suivent pas l'actualité IA, le nouveau truc à la mode en ce moment, c'est Jev, un modèle maison de TypeSafe qui est le premier de ce qu'ils appellent les modèles System One. Au lieu de générer du texte qu'il faut ensuite parser, ce reçoit un état (un texte, un ticket, un objet JSON) et des questions typées : oui ou non (noul), un choix parmi plusieurs options (choice) ou une note sur une échelle (score). Et il renvoie pour chacun de ces choix, des probabilités que votre code peut ensuite exploiter directement pour trier, faire du routage ou prendre des décisions. Par exemple, avec ça, on peut faire de la qualification de tickets de bug ou de l'anti-spam, ce genre de choses.

Alors forcément, suite à ça, des clones ouverts ont débarqué. Le premier que j'ai découvert, c'est Kev , de Jared Palmer, qui s'appuie sur Qwen3.5 et Qwen3.8, soit 0,8 à 27 milliards de paramètres, et laya qui part d'un encodeur ModernBERT-large pour 421 millions de paramètres au total.

Perso, avec Kev dans mon outil de veille, Pour le moment, j'ai un peu de mal à voir si c'est mieux qu'une décision prise par un Qwen 3.6 classique qui génère une réponse textuelle mais Kev a été entraîné sur des textes de 384 tokens au max, et les articles qui tombent dans ma veille dépassent largement ce gabarit...

ArseneLupin, c'est donc la version d'Ibou, annoncée par Sylvain la semaine dernière. Sa v1.1 repose donc sur Qwen3.5-4B, la mini sur Qwen3.5-0.8B et ArseneLupinstral sur Ministral 8B. Les poids sont sous licence Apache 2.0 et le code pour s'en servir et l'intégrer est fourni, mais pas le code d'entraînement ni les données.

C'est encore jeune, donc il n'y a pas eu de benchmark indépendant, mais Ibou en a fait et voici ce qu'ils obtiennent avec une classification d'intentions de recherche en dix catégories. Avec la 1.1, ils obtiennent 50,7 % de bonnes réponses, contre 39,7 % pour la mini et 43,9 % pour Jev 1.13.

Bref, ce sont leurs mesures, mais si elles sont justes, ça veut dire qu'Arsène Lupin est plus efficace que Jev.

Installer ArseneLupin v1.1

Alors pour ce tuto, j'ai pris la v1.1 qui est la plus "balèze".

À la fin de cette section, vous aurez donc un serveur local qui crache du JSON accessible sur le port 8000. Il vous faut Python 3.11 ou une version plus récente et une 10aine de Go libre puisque le modèle complet pèse 9,3 Go en bfloat16.

J'exclus au téléchargement le dossier gguf, qui contient la version 8 bits de 4,5 Go destinée à llama.cpp. Pour démarrer, il faut donc créer un environnement virtuel, puis récupèrer le modèle, et installe le code de service avec la version de transformers qui va bien, c'est à dire la 5.17.0 :

python3 -m venv lupin && source lupin/bin/activate
pip install -U huggingface_hub
hf download IBOU-SEARCH/ArseneLupin-v1.1 --local-dir arsenelupin-v1.1 --exclude "gguf/*"
cd arsenelupin-v1.1
pip install ./code "transformers==5.17.0"

Par défaut, le fichier serve.yaml envoie le modèle sur une carte NVIDIA (cuda:0). Sur un Mac, il faudra donc le basculer sur le GPU d'Apple (mps), et sur une machine sans GPU, ce sera cpu. Je pense que je ne vous apprends rien, vous avez l'habitude,

Ensuite, on lance le serveur. Notez juste que sous Linux, le sed s'écrit sans les deux apostrophes après le -i. :

sed -i '' 's/cuda:0/mps/' serve.yaml
python -m arsenelupin serve --config serve.yaml --calibration calibration/default.json --port 8000

Le serveur ArseneLupin v1.1 à l'écoute sur le port 8000, poids chargés

Au bout de quelques secondes, le serveur écoutera sur 127.0.0.1:8000. Quant à la version GGUF, vous pouvez, si vous voulez, le faire tourner dans un llama.cpp ou équivalent à condition d'en avoir un assez récent qui connait l'archi de Qwen3.5.

Poser vos premières questions

Pour tester, je me suis inspiré de mon outil de veille. On donne au modèle le titre et le résumé d'un sujet et on lui demande si ça parle d'un outil qu'on peut installer, dans quelle rubrique il faut le ranger et à quel point ça pourrait intéresser des gens comme vous, c'est à dire des lecteurs technophiles / bidouilleurs.

Placez donc ça dans un fichier nommé veille.json, dans le dossier du modèle :

{
 "state": {
 "titre": "ArseneLupin, trois modèles de décision publiés par Ibou",
 "resume": "Le moteur de recherche français Ibou publie sur Hugging Face trois modèles qui répondent par oui ou non, par un choix ou par une note, avec des probabilités. Les poids sont sous licence Apache 2.0 et le code de service est fourni."
 },
 "questions": {
 "installable": {"type": "noul",
 "instructions": "Le texte présente-t-il un outil que le lecteur peut installer lui-même ?"},
 "rubrique": {"type": "choice",
 "instructions": "Dans quelle rubrique ranger ce sujet ?",
 "criteria": {"ia": "Intelligence artificielle et modèles de langage",
 "dev": "Outils pour développeurs et infrastructure",
 "securite": "Sécurité informatique, failles et vie privée",
 "materiel": "Matériel, gadgets et bricolage électronique"}},
 "interet": {"type": "score",
 "instructions": "Ce sujet intéressera-t-il un lecteur technophile qui aime tester des outils ?",
 "criteria": ["Pas du tout", "Un peu", "Beaucoup"]}
 }
}

Puis dans un second terminal ouvert dans le même dossier, tapez la ligne de commande curl suivante pour lancer l'évaluation avec ArseneLupin.

curl -s http://127.0.0.1:8000/v1/systemone -H 'Content-Type: application/json' -d @veille.json | python3 -m json.tool

La réponse à la requête de veille : "ia" à 0,72, un oui/non hésitant à 0,53 et un score de 1,47

Comme vous pouvez le voir, pas une ligne de texte généré, chaque question revient avec ses probabilités. On voit donc que la rubrique "ia" l'emporte à 0,72, loin devant "dev" à 0,19, et le niveau "Beaucoup" ressort à 0,59 pour l'intérêt, ce qui donne un score moyen de 1,47 sur une échelle qui va de 0 à 2. Par contre, pour savoir si c'est un outil installable, le modèle hésite quand même un peu avec un timide 0,53 de probabilité pour le oui.

Il renvoie quand même une indication qui est plutôt importante à savoir là décision : "decision": true, car aucun seuil n'est appliqué côté serveur (c'est ce que dit le "decision_status": "unthresholded"). C'est donc à votre code de décider qu'en dessous de 0,7, par exemple, la décision revient à un humain plutôt que de partir dans la base de données automatiquement. Sur mon Mac Studio M4 Max, la requête a pris entre 2,4 et 2,8 secondes pour ces huit options.

J'ai fait un 2ème essai avec un commentaire de spam bien grossier : "Super article !!! Pour gagner 500 € par jour depuis chez vous, cliquez vite sur mon profil, places limitées." La v1.1 le classe en spam à 0,86 et lui colle un ton positif à 0,78, ce qui est vrai au premier degré. Et la version mini du modèle répond deux fois plus vite, en 0,8 seconde, mais descend à 0,76 sur le spam et hésite sur le ton... À voir donc si ça suffit pour vous d'utiliser le modèle mini ou pas, selon vos besoins.

Comment ArseneLupin prend ses décisions

Le code livré avec le modèle se lit facilement et la mécanique est plutôt simple à capter. En fait chaque option devient une question oui/non posée au Qwen affiné, du genre "ce candidat décrit-il la bonne réponse ?".

Ainsi, 4 catégories pour classer un contenu se résume en 4 questions sur le même texte accompagnée d'une petite tête de lecture (2 561 paramètres sur la v1.1) qui transforme le dernier état caché du modèle en score. Un softmax répartit ensuite ces scores en probabilités, et la confidence n'est rien d'autre que la plus forte d'entre elles...

Pour que ça reste rapide malgré toutes ces passes, le serveur lit une seule fois le texte commun aux options, puis calcule toutes les options simultanément.

En fait avec ArseneLupin, on reproduit le principe de Jev mais avec un LLM ouvert (Qwen) en ne lui faisant produire qu'un seul token, limité aux choix proposés. Ce qu'apporte Ibou, c'est donc un modèle LLM ultra affiné (Autant qu'un bon Saint Nectaire) pour ce type d'exercice de prise de décision.

Reste ensuite la confiance à accorder à ces probabilités. Dans le dossier calibration, vous verrez des températures ajustées selon les trois workflows d'exemple fournis par Ibou, et il y a également, dans le fichier default.json, une calibration par défaut. C'est celle-là qu'on a utilisée dans notre exemple, mais vous pouvez aussi régler vous-même votre propre température ajustée selon vos usages.

Maintenant, avant de lui confier quoi que ce soit, posez-vous un peu et donnez-lui une cinquantaine d'exemples que vous avez déjà classés à la main. Comme ça, vous pourrez comparer ArsèneLupin et le LLM que vous utilisez d'habitude pour savoir qui est le plus fiable. N'hésitez pas à y mettre aussi des textes plus ou moins longs parce que le serveur accepte jusqu'à 32 768 tokens par option. Ça tombe bien parce que ça me gênait un peu dans mon intégration avec Kev sur mon outil de veille. Donc je pense que je vais rapidement basculer sur ArsèneLupin pour ma veille en remplacement de Kev.

Et si vous venez de Jev, attention, la requête a la même forme mais pas la réponse !! Pour une question oui/non, Jev renvoie un champ noul là où ArseneLupin renvoie un p_yes, et pour une note, ArseneLupin range ses probabilités dans une liste quand Jev utilise un dictionnaire.

Cela veut dire qu'un client écrit pour l'API de TypeSafe ne lira pas du tout le résultat de ArseneLupin tel quel, donc prévoyez une petite couche de conversion avant de mettre les deux en concurrence sur vos data.

Meeting Recorder - Vos visios transcrites en local sous Omarchy

Par : Korben ✨

Meeting Recorder , c'est un enregistreur de réunions pensé pour Omarchy, la distribution Linux de DHH basée sur Arch et Hyprland. Et y'a pas besoin d'inviter à bot chelou dans votre visio puisque l'app se contente d'écouter votre micro et ce que joue votre ordinateur. Donc ça fonctionne avec n'importe quel logiciel de réunion, et tout est ensuite transcrit sur votre machine, 100% en local

Le micro et le son de l'ordinateur sont ainsi enregistrés sur deux pistes séparées, et deux jauges vous montrent avant de lancer que les deux arrivent bien. C'est comme ça que l'outil sait qui parle... ce qui passe par le micro, c'est vous, et ce que joue l'ordinateur, ce sont les autres. Et s'il y a plusieurs personnes en face, Nemotron 3 Diarization, un modèle de NVIDIA qui tourne en local, sépare simplement leurs voix en "Remote 1", "Remote 2"...etc, que vous pouvez ensuite renommer.

L'écran de fin, Maya au micro, Tom côté ordinateur, et les deux pistes dans la forme d'onde

À la fin de l'appel, c'est whisper qui transcrit tout ce basar, avec le modèle large-v3-turbo par défaut (environ 1,6 Go à télécharger une seule fois), pendant qu'une animation façon années 90 vous fait patienter. Et pas besoin de carte graphique puisque d'après l'auteur, le processeur d'une machine récente boucle un appel court en quelques secondes. Ah et puis trop cool, le français fait partie des langues proposées, donc vous pouvez l'utiliser si vous avez séché les cours d'anglais.

Vous récupérez ensuite le texte, avec l'heure et l'intervenant sur chaque ligne, et un lecteur audio au-dessus. Cliquez alors sur une ligne et la lecture repartira de là. Et si whisper s'est gourré, vous survolez la ligne pour la corriger, la donner à l'intervenant suivant ou la supprimer. Chaque réunion finissant dans un simple dossier de ~/Documents/Meetings, avec l'audio et un fichier transcript.md, vous pouvez tout récupérer et même glisser sur la fenêtre un vocal ou un appel enregistré ailleurs, et Nemotron pourra y détecter jusqu'à 8 voix sans problème.

Pour les réunions de trois minutes ou plus, il y a aussi du chapitrage et c'est l'agent de code réglé par défaut dans Omarchy (Claude Code, Codex...) qui découpe la transcription une fois que c'est terminé. Donc, si vous ne voulez pas que ça parte dans le cloud, il faut prendre le temps de ne régler aucun agent par défaut sur Omarchy.

Et n'oubliez pas non plus de prévenir les gens en début de réunion, car l'article 226-1 du Code pénal punit l'enregistrement de paroles privées sans leur consentement. Hé ouaiiiis !

Côté installation, l'outil est dans le dépôt de paquets d'Omarchy, pour l'instant uniquement sur le canal edge. Sinon, en attendant la prochaine version d'Omarchy, ce script d'une ligne installera le même paquet.

Bref, c'est l'un ou l'autre :

yay -S omarchy-meeting-recorder
ou
curl -fsSL https://raw.githubusercontent.com/jankeesvw/omarchy-meeting-recorder/main/install.sh | bash

Attention, au moment où j'écris ces lignes, la version 1.1.1 plante dès la première transcription sur les processeurs sans AVX-512, un Ryzen 5 5500 ou un Core Ultra 9 285K par exemple. L'audio est bien enregistré, mais vous n'aurez pas de texte, parce que le binaire publié a hérité des instructions AVX-512 de la machine qui l'a compilé. Heureusement, un contributeur a déjà proposé un correctif, donc, soyez patient. Mais si vous êtes vraiment pressé, il faudra juste compiler vous-même l'appli (cargo build --release, les étapes sont dans le README).

Et si vous n'êtes pas sous Omarchy ? Faut chialer ?

Non, car l'app prendra alors l'apparence standard de libadwaita, mais sans l'agent par défaut d'Omarchy. Donc adieu les chapitres. Sous Windows, l'application Meetily fait le même genre de travail en local, Avec mon application macOS Kassis , on peut faire ça aussi. Il suffit de glisser-déposer l'enregistrement de la réunion sur l'appli. Les interlocuteurs sont reconnus et on obtient un transcript en quelques secondes. Enfin, pour transcrire vos enregistrements directement sur un serveur, il y a Speakr, dont je vous ai déjà parlé .

Voilà, en tout cas, je trouve que son dev a bien bossé ! Meeting Recorder c'est sous licence MIT, et le code est sur GitHub pour ceux qui ont un Omarchy sous la main !

Windows 11 - Un clic sur le bon lien et hop, vous avez un compte local

Par : Korben ✨

Jusqu'à présent, personne ne l'avait remarqué, mais sur l'écran d'installation de Windows 11 Home, celui qui vous réclame un compte Microsoft avant de vous laisser aller plus loin, il y a un tout petit lien "Learn more" planqué au milieu d'un paragraphe. Personne ne clique jamais dessus mais Bob Pony, lui, l'a fait et magie-magie, Windows l'a propulsé directement sur la création d'un compte local.

Sur la page qui s'ouvre, on vous demande alors le nom de celui qui va utiliser cet ordi, puis derrière, c'est un mot de passe, trois questions de sécurité, et hop vous voilà sur le bureau avec votre compte local ! C'est top non ? Plus besoin de vous prendre la tête avec une invite de commandes, ou des clés de base de registre !

Plusieurs sites ont fait le test, moi je n'ai pas encore eu le temps, mais apparemment ça fonctionne très bien sur la version Home de Windows 11 mais je ne sais pas pour la version Pro.

Faut dire que ça fait un an que Microsoft ferme les autres portes du compte local. La clé de registre BypassNRO, puis la commande ms-cxh:localonly dont je vous parlais l'automne dernier , ont été rebouchées les unes après les autres dans les préversions, avec à chaque fois la même explication foireuse : Ces bidouilles laissaient soi-disant des gens sortir du process d'installation avec une machine qui n'était pas entièrement configurée. Sauf que ce lien qui mène exactement au même compte local, lui, bah visiblement il a échappé à Microsoft... lol.

Un truc à savoir quand même avant de choisir le compte local, et c'est Microsoft qui le dit : le chiffrement de l'appareil ne s'activera pas tout seul. Quand vous ouvrez la session avec un compte Microsoft, il boote et la clé de récupération va se loger dans ce compte alors qu'avec un compte local, il reste inactif. Ça peut bien sûr se régler en allant dans les Paramètres, Confidentialité et sécurité, Chiffrement de l'appareil, mais faut y penser avant le jour où votre portable partira sous le bras de quelqu'un d'autre pendant que vous tapez votre meilleure sieste dans le TGV...

Alors maintenant, combien de temps tiendra cette astuce ?

Aucune idée, mais on espère tous que Microsoft laissera ça tranquille. Et si le lien a disparu quand vous lirez ces lignes, sachez qu'il reste des chemins qui passent par le média d'installation notamment via Rufus, que je vous ai déjà présenté . Suffit de cocher une case et hop, ça vous fera une clé USB qui ne réclamera aucun compte.

Voilà, si vous avez une machine à installer ce week-end, c'est donc le bon moment de tester cette astuce !

Source : les tests de Windows Latest et de PC Gamer , et XDA pour la méthode Rufus.

TP-Link Deco BE25-5G - Le routeur qui garde la maison

Par : Korben ✨
  • Article en partenariat avec TP-Link -

Quand on déménage, il y a ce moment bizarre où la maison est encore à vous mais où vous n'y êtes plus. L'alarme doit continuer de tourner, les caméras aussi, sauf que la ligne Internet, elle, s'en va avec le reste. Et c'est exactement ce petit souci que ce routeur est venu arranger chez moi.

Le Deco BE25-5G (lien affilié) est un routeur mesh Wi-Fi 7 avec un modem cellulaire dans le ventre. Je l'ai posé dans mon ancienne maison, branché sur un onduleur, avec une carte SIM dedans... et c'est tout. Comme ça j'ai pas eu besoin de garder mon abonnement fibre ouvert pendant des mois pour trois caméras et ma centrale d'alarme.

La nano SIM Bouygues engagée sous le boîtier, numéro de série et QR code masqués

Pour la mise en route, y'a rien à raconter, et c'est un compliment. On glisse la nano SIM dans la fente sous l'appareil, on lance l'app Deco, on suit le process d'install et c'est plié. Et si vous avez déjà des Deco, c'est encore plus rapide puisque celui-ci se marie très bien avec tous les modèles de la gamme.

Du coup, j'ai ressorti certains de mes vieux Deco pour les mettre en satellite et pousser le signal jusqu'au fond du terrain, là où une caméra ne captait pas grand-chose. Ça a très bien fonctionné !

Le dos de l'emballage, avec le détail des ports et du tiroir nano SIM

Côté connectique, on y trouve deux ports 2,5 Gbps et un port 1 Gbps qui basculent entre WAN et LAN tout seuls, plus un port USB dont je n'ai rien fait mais sur lequel j'aurais pu brancher une clé ou un disque pour avoir un peu de stockage partagé. Ensuite, dedans, on trouve pas moins de 8 antennes 5G/4G/3G et trois antennes Wi-Fi. Hé oui, tout ça rentre dans le cylindre blanc de 118 × 118 × 198 mm et ne consomme que 25 W au maximum.

Le constructeur, lui, annonce 4,67 Gbit/s en descendant côté cellulaire, et 2 882 Mbit/s sur le 5 GHz plus 688 Mbit/s sur le 2,4 GHz côté Wi-Fi. Alors comme d'habitude, ces chiffres-là sont des plafonds de classe de modem et personne ne les verra jamais sur son écran. Mais ce que j'ai constaté, moi, c'est que ça a tenu durant tout mon déménagement, que les vidéos en live des caméras étaient clean et que je n'ai donc pas eu besoin d'y retourner en urgence.

TP-Link annonce quand même une connexion combinée, sans fil + filaire en même temps pour mutualiser la 5G et la fibre chez vous... sauf que la fonction n'est pas encore prise en charge par la version actuelle du firmware, donc faudra attendre encore un peu.

Le boîtier a aussi deux prises d'antenne externe à l'arrière, du coup si votre maison est dans un creux et que la 5G y arrive à peine, vous pourrez lui adjoindre des antennes en plus ! Ils ont vraiment pensé à tout !

Un mot encore pour ceux qui voudraient monter le même bricolage de surveillance alarme + caméra en remote. Derrière une SIM mobile, vous n'avez pas d'adresse IP publique, donc oubliez la redirection de port vers un enregistreur local. Mes caméras passaient donc par le cloud de leur constructeur et c'est pour ça que ça a fonctionné. Surveillez aussi votre forfait, parce que des caméras qui poussent de la vidéo en continu, ça peut avaler des gigas bien plus vite qu'on ne croit.

Reste le prix... 399,99 € sur la boutique officielle (lien affilié), en promotion donc (le prix d'origine étant de 429,99 €). C'est cher pour un routeur, c'est vrai mais nettement moins que le BE65-5G que j'avais testé , et si vous avez une maison à garder connectée parce que la fibre ne passe pas ou parce que vous n'en aviez pas spécialement besoin, c'est un super boîtier avec les dernières techno Wi-Fi, des tas de paramètres super cools (contrôle parental, QoS, portail captif, VPN local...etc) sur lequel tous les appareils de la maison pourront se connecter en totale transparence.

OmniVoice - Clonez votre propre voix en local et en français

Par : Korben ✨

L'équipe Next-gen Kaldi de Xiaomi a sorti OmniVoice, un modèle de synthèse vocale qui parle 646 langues et qui est capable de "recopier" une voix à partir d'un extrait de huit secondes minimum. Et tout ça en local et gratuitement !

Le français y est d'ailleurs la cinquième langue du corpus d'entraînement, avec 23 675 heures d'audio de référence sur les 581 000 qu'ils ont avalées. Autant dire que le modèle a entendu du français toute sa vie, et ça s'entend au résultat.

Voilà donc comment cloner votre propre voix, du début à la fin. Comptez 3,3 Go de poids que la première génération ira chercher toute seule, donc prévoyez une connexion pour ce coup-là, et quelques minutes de manipulation une fois qu'ils sont sur votre disque.

Installer OmniVoice

Pour cela, il vous faut Python 3.10 à 3.13 (PyTorch 2.8 n'existe pas encore pour 3.14, vous vous prendriez un "No matching distribution found"), et un environnement isolé (sinon vous allez casser autre chose). Sur Mac, les deux lignes suivantes suffiront puisque le modèle utilise le GPU intégré via MPS :

python3 -m venv ~/omnivoice-env && source ~/omnivoice-env/bin/activate
pip install torch==2.8.0 torchaudio==2.8.0
pip install omnivoice num2words

Sur Linux et Windows, ça devra se faire avec une carte NVIDIA (sous Windows, l'environnement s'active avec omnivoice-env\Scripts\activate) sauf que PyTorch doit venir de l'index CUDA, donc remplacez la deuxième ligne par celle-ci :

pip install torch==2.8.0+cu128 torchaudio==2.8.0+cu128 --extra-index-url https://download.pytorch.org/whl/cu128

Notez que sans carte graphique du tout, ça marche quand même. J'ai rejoué la même installation dans un conteneur Linux en processeur seul, elle passe sans rien changer... mais il m'a fallu cinq fois la durée de l'audio en temps de calcul.

Une fois installé, pour savoir que c'est en place, tapez omnivoice-infer --help et là, la liste des options doit s'afficher, sans la moindre erreur d'import. Le num2words de la troisième ligne, lui, ne sert qu'au chemin Python dont je parle plus bas, alors gardez-le sous le coude.

Les 8 secondes qui font tout

C'est l'étape que tout le monde bâcle et c'est pourtant celle qui est décisive pour avoir un bon résultat. Le projet recommande entre 3 et 10 secondes, pas plus car au-delà, ça ralentit le calcul et ça dégrade le clonage. Prenez donc un passage où vous parlez sans blanc, sans "euh", sans musique derrière, et découpez-le proprement comme ceci avec ffmpeg (ou autre logiciel de votre choix) :

ffmpeg -i mon-enregistrement.m4a -ss 12 -t 8 -ac 1 -ar 24000 moi.wav

La qualité de cet extrait est très importante donc si vous enregistrez votre voix, mettez bien le micro près de la bouche, dans une pièce sans écho, et évitez les MP3 récupéré à partir de YouTube .

Écrivez ensuite dans un fichier ce que dit exactement l'extrait, mot pour mot. Vous pouvez sauter cette étape (le modèle transcrit alors tout seul avec Whisper), sauf qu'il téléchargera 1,6 Go de plus pour ça et qu'il se plante parfois sur un nom propre, ce qui abîme le clonage.

C'est le moment de générer !

Avant de taper quoi que ce soit, relisez bien votre texte et réécrivez les chiffres en toutes lettres. La ligne de commande n'a aucune option de normalisation, donc "2345" sortira n'importe comment alors que "deux mille trois cent quarante-cinq" se lit tout seul. C'est du côté Python que la normalisation se fait, avec normalize_text=True, la langue passée en language="fr" et le num2words de tout à l'heure... sans la langue, votre texte français part chez le normaliseur anglais qui réclamera même une lib sans version précompilée pour les Mac Apple Silicon.

Voici la commande complète :

omnivoice-infer --model k2-fsa/OmniVoice \
 --text "Bonjour, ceci est un test de clonage de voix en français réalisé avec OmniVoice." \
 --ref_audio moi.wav --ref_text "$(cat moi.txt)" \
 --language fr --num_step 32 --output ma-voix.wav

Vous devez voir passer un "Saved to ma-voix.wav" au bout de quelques secondes. Sur mon M4 Max, j'ai compté 4 à 6 secondes de calcul pour 5,4 secondes d'audio, et moitié moins avec --num_step 16 au prix d'un peu de netteté. Au passage, le facteur 40 fois plus rapide que le temps réel qu'annonce le projet sur son site, ça a été mesuré sur un H100 avec des noyaux d'accélération maison, et pas sur un ordi de bureau...

Si la ligne de commande vous rebute, vous pouvez aussi passer par la commande : omnivoice-demo --ip 127.0.0.1 --port 8001 qui permet de faire la même chose mais dans le navigateur, avec le bouton d'import pour l'extrait et un menu déroulant pour la langue. Pensez juste à lancer export GRADIO_ANALYTICS_ENABLED=False avant, parce que l'interface web appelle les serveurs de Gradio au démarrage et qu'on n'a pas envie de leur filer nos data à ceux-là.

L'audio, lui, ne bouge pas de votre machine.

L'extrait de référence de 8 secondes chargé à gauche, la langue calée sur French, et la sortie de 5 secondes à droite une fois le clonage terminé.

Et si vous voulez vraiment débrancher la machine du réseau, faites-le dans le bon ordre, sinon la commande de génération part chercher les poids et se vautre sur un httpx.ConnectError suivi d'un LocalEntryNotFoundError. Récupérez donc le modèle d'abord, dans un dossier bien à vous :

hf download k2-fsa/OmniVoice --local-dir ~/omnivoice-modele

Ensuite vous coupez tout et vous passez ce dossier à --model à la place du nom du dépôt. Ça marche même sur une machine qui n'a jamais vu Internet, il suffit d'y copier le dossier. Et si vous préférez garder le cache par défaut, un export HF_HUB_OFFLINE=1 fait la même chose. J'ai rejoué la génération avec toutes les sorties réseau refusées par le système, le fichier sort quand même en 8 secondes... donc non, votre voix ne part chez personne.

Maintenant, une fois que c'est fait, écoutez le fichier avant d'en faire quoi que ce soit, parce que le modèle avale parfois des morceaux de phrase. Sur mes 24 générations de la même phrase, 5 ont perdu ou déformé un mot. C'était presque toujours le premier ou le dernier... et ce n'est pas une surprise, c'est un bug connu de l'outil. Faut donc relancer parfois plusieurs fois pour avoir un résultat OK.

Dernier truc pour ceux qui passeront par Python : la voix se sauvegarde une fois pour toutes. model.create_voice_clone_prompt() puis .save("ma_voix.pt") produisent un fichier minuscule que les sessions suivantes rechargeront sans repasser par l'extrait ni par la transcription. Regénérez alors une phrase avec, et comparez à l'oreille : si c'est bien la même voix, vous pouvez ranger le WAV de référence.

Voici l'extrait que j'ai généré avec ma voix. Ces 6 secondes d'audio ont pris 14 secondes à la génération sur mon Mac Studio :

Le kit à coller dans votre agent

Si vous faites faire le boulot par Claude Code, Codex ou n'importe quel agent IA, voilà le brief à lui donner tel quel. J'y ai mis les pièges qui m'ont coûté un peu de temps :

Ce que vous avez le droit d'en faire

Alors le code d'OmniVoice est bien sous licence Apache 2.0, mais les poids du modèle, eux, sont sous CC-BY-NC à cause du corpus qui a servi à les entraîner. Cela veut dire que tout usage commercial est interdit. Donc si vous avez prévu un projet afin de gagner de l'argent, regardez plutôt du côté de Chatterbox , qui est sous licence MIT, qui parle également français et qui "tatoue" même ses sorties (vu que maintenant c'est obligatoire avec la loi IA).

Pour l'usage perso, en revanche, rien ne vous arrête, et le règlement européen sur l'IA exclut explicitement de son champ l'activité personnelle non professionnelle.

Ce qui est cool avec Omnivoice, c'est que ce clonage de votre voix se fait à 100% en local et c'est bien tout l'intérêt de la manœuvre ! Et si l'idée c'est plutôt de faire lire vos ebooks par la machine, je vous invite à jeter un œil à MLX-Audio côté Mac.

Source : OmniVoice sur GitHub

oMLX – Faites tourner vos agents IA en local sur votre Mac

Par : Korben ✨

Faire tourner un modèle en local sur un Mac, c'est réglé depuis un moment. Ce qui l'est moins par contre, c'est de brancher un agent de code dessus, parce qu'à chaque reprise de session, le serveur doit malheureusement remouliner des dizaines de milliers de tokens de contexte avant de sortir le premier mot...

Ce calcul, ça s'appelle le cache KV, et la plupart des serveurs le gardent en mémoire. Du coup, quand le modèle se décharge, le cache part avec dans le grand vide...

C'est pourquoi oMLX a pris le parti d'écrire ce cache sur le disque, au format safetensors, car le contexte déjà envoyé une fois, prompt système et fichiers lus compris, se recharge depuis le SSD au lieu d'être recalculé, y compris après un redémarrage du serveur.

De son côté, LM Studio conserve lui aussi son cache MLX sur disque , mais dans un fichier temporaire qu'il efface quand le modèle se décharge. Les deux outils écrivent sur le disque, mais un seul conserve réellement son cache.

Côté raccordement, le serveur oMLX expose l'API OpenAI et l'API Anthropic ce qui permet par exemple à Claude Code de taper directement sur localhost. Et y'a même un tableau de bord qui nous dit quoi faire dans le terminal pour brancher Claude Code ou d'autres avec oMLX.

Sur oMLX, le cache disque est donc actif d'office et son plafond par défaut, parce qu'il en faut bien un, se calcule à 10 % de la capacité du disque qui l'héberge. Sur un SSD d'un téraoctet par exemple, ça fait cent gigaoctets qui peuvent partir en cache sans que personne n'ait rien demandé. Donc prévoyez un peu de place... Après rassurez-vous, ça se vide d'un clic sur un bouton dans le tableau de bord et la taille peut se régler.

Le deuxième piège est plus sournois puisqu'une installation par défaut via pip ne compile pas les kernels Metal, et les modèles GLM-5.2, MiniMax M3 et Qwen3.5 retombent alors sans prévenir sur un chemin générique... Donc je vous incite fortement à utiliser uniquement les DMG proposés qui contiennent déjà les kernels Metal compilés comme il faut.

Reste à savoir ce que ça donne vraiment dans un usage quotidien... Le cache attaque l'attente avant le premier mot mais pas la vitesse à laquelle les mots sortent ensuite donc tout dépend du modèle et de la machine que vous avez. Mais en tout cas, pour un usage avec des agents (coding par exemple), ce sera plus efficace d'utiliser oMLX que Ollama ou LMStudio.

Source : omlx.ai

Nvidia CMP 170HX - La VRAM était bien là, bridée par le firmware

Par : Korben ✨

Je viens d'apprendre qu'une carte Nvidia normalement dédiée au minage de cryptomonnaies, vendue avec 8 Go de mémoire en expose aujourd'hui 64 Go, sans que rien n'ait été remplacé ou soudé dessus... C'est ça la magie de Nvidia, la mémoire était bien là depuis le début, mais était juste maintenue en sommeil par le firmware.

Cette carte, la CMP 170HX est sortie il y a 5 ans pour miner de l'Ethereum. Elle est bâtie sur le GA100, le même silicium 7 nm que l'accélérateur A100 que Nvidia vend aujourd'hui autour de 3 500 dollars en version 40 Go. Et la mémoire HBM2e qu'on y trouve est physiquement présente sur la carte, quoi qu'affiche la fiche technique. Alors certes, débrider une carte Nvidia par logiciel n'a rien de neuf puisqu'on transformait déjà des GeForce en Quadro en 2013.

Mais cette fois, le déverrouillage exploite un bug de chargement de signature dans le BootROM du Falcon, le microcontrôleur de sécurité qui garde le démarrage de la puce. Et ce dernier se fait grâce à un outil nommé cmpunlocker , publié sous licence GPL.

Si vous voulez vous lancer, il vous faudra du Linux x86-64, un accès root et le pilote libre nvidia-open en version 610.43.0x. Votre carte 8 Go passera ainsi à 64 Go, une carte 10 Go à 40 Go, et les unités de calcul bridées reviendront naturellement avec. Et surtout, ce patch survit au redémarrage !

Le PCIe, lui, ne se déverrouille qu'à moitié. Passer de Gen1 à Gen2 est logiciel, mais la largeur reste coincée à quatre lignes parce que Nvidia a laissé 24 condensateurs de couplage vides sur le circuit imprimé. Aller au-delà du x4 veut donc dire les souder à la main et ça c'est pas donné à tout le monde.

Reste que ça donne environ 1 Go/s vers la carte. À titre d'exemple, un utilisateur du forum développeurs de Nvidia a réussi à charger un modèle 70B quantifié en une quarantaine de secondes, contre une dizaine avec la modification matérielle et le Gen2 x16. Pour de l'inférence sur une seule carte, ce goulot ne se paie donc qu'au chargement.

Le même utilisateur mesure un taux de 27,3 tokens par seconde en décodage sur un modèle Qwen2.5-72B, pour 150 à 180 watts, et explique que lors de ses tests, le GPU a réclamé un reset autour de 95% d'occupation mémoire, sur de très grandes fenêtres de contexte. Rien de gênant donc. Deux réserves par contre, et elles ne sont pas décoratives.... La première c'est que l' ECC figure toujours dans la liste des problèmes non résolus du projet, avec le NVLink et le PCIe Gen4, alors que c'est précisément le mécanisme qui pourrait nous dire si la mémoire déverrouillée tient dans la durée. Et la seconde, c'est que le palier des 80 Go a été testé, mais rejeté car instable.

Sur la question qui fâche maintenant, à savoir celle du silicium mis au rebut qui serait bridé car défectueux, ValdikSS, dans un fil sur Hacker News , écrit n'avoir trouvé jusqu'ici aucune carte dont la RAM soit réellement défectueuse. Le bridage ressemble donc à de la segmentation commerciale plus qu'à du recyclage de puces ratées, mais pour le moment, personne n'a fait tourner ces 64 Go assez longtemps pour le prouver.

Reste le prix... La 170HX se trouvait peu de temps avant ça, autour de 250 dollars sur eBay mais depuis que l'exploit circule, elle dépasse les 1 000 $... Bref, le verrou a sauté, et le prix est en train d'exploser !

Source : Tom's Hardware

Sa boîte à goûter fait tourner un LLM en local

Par : Korben ✨

Si vous avez eu une boîte à goûter M.A.S.K. dans les années 80 pour transporter vos BN, alors celle de RadioactiveArtist va vous plaire. Dans sa boite à goûter, pas de Princes ni de Balisto... lui, il embarque un Raspberry Pi 5, un écran tactile de 7 pouces et une IA qui tourne sans internet.

Le clin d'œil est calculé puisque M.A.S.K., c'était ce dessin animé de 85-86 dont les objets du quotidien planquaient tous une seconde vie. Fermé, l'engin reste donc une boîte à goûter d'époque. Mais ouverte, elle devient un cyberdeck complet, avec clavier et enceintes noyés dans la partie basse + un écran qui se redresse sur sa propre charnière.

Ce clic autorise une connexion à Google : adresse IP transmise et traceurs possibles. En savoir plus Voir cette vidéo sur YouTube

Un cyberdeck, pour ceux qui débarquent des âges farouches (vous l'avez ?), c'est un ordinateur portable assemblé à la main dans un boîtier détourné, fait pour être réparé et modifié plutôt qu'acheté.

Dedans, y'a donc un Pi 5 avec 16 Go de RAM et une microSD de 128 Go. L'alimentation passe par un HAT UPS Geekworm, la carte d'onduleur qui se clipse sur le Pi, nourrie par 4 accus 18650. En façade, des lecteurs de cartes, des ports USB 3 et un jack casque, plus un hub audio USB Waveshare qui pilote les enceintes. Par contre, on ne sait rien de son autonomie...

L'Ethernet a été une vraie plaie apparemment puisqu'aucun adaptateur du marché ne rentrait dans l'espace disponible. Il a donc poncé à fond un connecteur RJ45 nu jusqu'à ce qu'il clipse dans le port. Les charnières, elles, se sont révélées bien plus dures que prévu, et les pattes du circuit imprimé de l'écran n'étaient pas faites pour encaisser cette tension. Une plaque ABS récupérée sur une vieille caisse de transport a réglé le problème.

Et la boîte ressort intacte !

Puis je sais pas si vous avez vu dans la vidéo, mais il y a aussi un LLM là-dedans. Un modèle de 3 milliards de paramètres via Ollama, qui répond sans la moindre connexion. L'écran de boot, l'écran de login et les icônes maison, eux, ont été codés avec Claude Code, qu'il a installé sur la machine le temps de la configuration.

Si le format vous parle, le Hackberry Pi CM5 dont je vous ai parlé joue dans la même cour, et les cyberdecks faits maison ont droit à leur guide sur le site.

Bref, à moitié jouet, à moitié machine de terrain, et zéro trou dans la boîte ça, c'est du respect pour l'objet !!

Source

Odysseus - L'IA auto-hébergée de PewDiePie enfin rapide sur Mac

Par : Korben ✨

Odysseus, c'est le workspace IA que PewDiePie a balancé sur GitHub fin mai. Chat, agents, recherche web, email, calendrier, notes et documents, tout est réuni dans un superbe cockpit auto-hébergé dans lequel les modèles et l'historique peuvent rester sur VOTRE machine. Vous avez aussi un éditeur Markdown avec historique de versions, une génération d'images intégrée, et un mode Compare pour opposer deux modèles côte à côte en aveugle (exclusion faite des services tiers liés à la recherche web, l'email et le calendrier, évidemment...).

J'ai voulu l'installer sur mon Mac, mais j'ai quand même rencontré un petit piège qui a failli transformer l'expérience en échec... Voici donc comment le faire tourner correctement sous Mac + quelques idées de ce que vous allez pouvoir faire avec ce truc.

Avant de commencer

Odysseus évolue vite. La branche main est stable et testée, mais la branche dev peut casser n'importe quand. Privilégiez la branche stable en la clonant explicitement :

git clone https://github.com/odysseus-dev/odysseus.git
cd odysseus
git checkout main

Étape 1 : Oubliez Docker sur Mac

Sur Apple Silicon, Docker ne peut pas accéder au GPU Metal. Les modèles tournent sur le CPU, et ça rame comme pas permis. Du coup, sur Mac, on est obligé d'installer ça en natif.

Étape 2 : Installer Odysseus en 2 commandes

Ouvrez un terminal et lancez ça :

git clone https://github.com/odysseus-dev/odysseus.git
cd odysseus
./start-macos.sh

Le script installe alors les dépendances et démarre le serveur. Sur mon Mac, AirPlay squattait le port 7000, donc l'interface s'est ouverte automatiquement sur http://127.0.0.1:7860. Ensuite, au premier lancement, il faut renseigner un nouveau mot de passe pour le compte admin.

Si vous accédez à Odysseus depuis une autre machine (VPS ou serveur distant), ouvrez un tunnel SSH plutôt que d'exposer le port directement sur Internet :

ssh -L 7860:127.0.0.1:7860 user@votre-serveur.com

Ensuite, accédez simplement à http://127.0.0.1:7860 en local. C'est plus sécurisé que d'ouvrir le port sur le public.

Étape 3 : Un modèle rapide, genre Qwen

Pour du rapidos sans que ça devienne stupidos, j'ai choisi pour mes tests Qwen3-30B-A3B. Ce modèle n'active qu'une partie de ses paramètres à chaque réponse, ce qui colle bien à la RAM unifiée d'un gros Mac.

La première fonctionnalité assez cool dans cet outil, c'est le Cookbook qui permet de télécharger des modèles adaptés à notre config. Ce dernier a correctement reconnu mon M4 Max et ses 128 Go mais s'est ensuite planté comme une merde sur llama.cpp avec cette option --flash-attn auto invalide. Après avoir retiré le paramètre, le serveur restait aux abonnés absents tandis que l'interface l'affichait toujours comme actif. Bref, j'ai laissé tombé llama.cpp.

Le Cookbook reconnaît bien le M4 Max et propose des modèles adaptés. Le lancement, lui, a planté.

L'autre option qui s'est offerte à moi, ça a été Ollama ( je vous ai montré comment l'installer par ici ). Vous récupérez le modèle qui vous intéresse avec et vous lancez le serveur ouvert sur le réseau local :

ollama pull qwen3:30b-a3b
OLLAMA_HOST=0.0.0.0:11434 ollama serve

Dans les réglages d'Odysseus, ajoutez ensuite http://localhost:11434/v1. Et hop, ça fonctionne !! La version 1.0.2 propose aussi maintenant MLX dans le Cookbook, mais Ollama reste le chemin qui a vraiment tenu bon durant mes tests. Vous aurez peut-être plus de chances que moi.

L'ajout manuel de l'endpoint Ollama a été le chemin le plus fiable.

Bonus : Si vous n'avez pas de GPU ou que vous préférez la fiabilité, vous pouvez aussi connecter une API externe comme OpenAI ou OpenRouter. Dans les réglages, ajoutez simplement votre clé API et Odysseus basculera sur ces modèles cloud. C'est moins gratuit que du local, mais ça marche sans galère.

3 cas d'usages

Alors, cet outil fait plein de choses et on peut l'utiliser vraiment pour ce qu'on veut, mais pour ma part, je vous ai isolé trois cas d'usage compatibles avec mon activité.

Premier scénario, la tournée de veille du matin. Je lui donne les liens reçus durant la nuit, il les classe par sujet, repère les doublons et propose trois angles courts. Je garde les sources dans un document local, avec les objections et les points à vérifier. Et comme vous l'avez vu sur mes captures d'écran, le chat sait déjà faire du brainstorming puisqu'il m'a sorti trois angles exploitables en quelques secondes...

Trois angles d'articles en 29 secondes, avec un brouillon versionné ouvert à droite.

Deuxième scénario, un dossier par article. J'y range le brief, les liens primaires, les citations, les captures et les versions du texte. L'éditeur Markdown récupère le titre depuis le premier H1 et conserve l'historique. Avec deux modèles configurés, le mode Compare permet d'opposer deux intros ou deux plans côte à côte sans envoyer le brouillon chez un fournisseur.

Troisième scénario, le secrétaire de rédaction local. Il surveillerait une boîte dédiée aux alertes de sécurité, préparerait la liste des sujets urgents et poserait des rappels dans le calendrier. Sur le papier, c'est exactement le type de corvées chiantes qu'un agent devrait pouvoir absorber mais en pratique, jamais de la vie, je ne lui laisse faire des actions automatiques comme envoyer des mails, ou gérer mon calendrier. Pour moi, c'est pas encore assez safe.

J'ai demandé à l'agent de retrouver un document et de le résumer. Il a dépensé près de 1 800 jetons à deviner comment appeler manage_documents, sans jamais lancer l'outil de recherche. De son côté, le calendrier a terminé sur un Could not extract JSON puis la recherche web a trouvé le bon dépôt GitHub, mais le modèle en a choisi un faux.

Le pompon, c'est la fonctionnalité Deep Research. Après 4 minutes de boulot, ça m'a généré 13 pages issues de 6 sources retenues. L'outil a donné la bonne conclusion au document, mais ensuite, a totalement inventé une vidéo, un numéro de marque et plusieurs statistiques. Donc pour l'utiliser dans un cadre journalistique, sans contre-vérification intégrale, ça ne sera pas possible.

Le rapport affirme que le site est vide alors qu'il contient un guide complet. Jolie hallucination, présentée comme une preuve.

Bon, je suis content de l'avoir testé mais Odysseus ressemble encore à un super cockpit dont plusieurs boutons ne sont pas encore reliés au moteur. Le chat via Ollama et les documents sont utilisables, mais le Cookbook, les agents, le calendrier et la recherche factuelle restent trop fragiles. Mais attention, n'allez pas croire que je critique le travail de PewDiePie, car le projet est encore très jeune, donc tous ces petits défauts sont normaux. Le potentiel d'Odysseus est énorme, mais pour le moment, je ne suis pas prêt de lui confier la gestion de mes sources, ou la rédaction d'un brouillon d'article sans perdre des heures à tout vérifier.

Voilà, le code est sur GitHub sous licence AGPL . Je vous laisse découvrir ça !

Merci à Remouk pour le partage et pour finir, je vous laisse avec cette vidéo de Renaud Dékode qui a aussi testé Odysseus :

Ce clic autorise une connexion à Google : adresse IP transmise et traceurs possibles. En savoir plus Voir cette vidéo sur YouTube

Interroger ses fichiers Mac en local, sans cloud, avec bHive

Par : Korben ✨

bHive, c'est une app Mac qui lit l'intérieur de vos fichiers au lieu de se contenter de leur nom, et qui sait maintenant répondre à des questions dessus. Vous lui demandez "qu'est-ce que dit mon bail sur la résiliation anticipée ?", elle va fouiller vos PDF et vous sortir la réponse en clair, tout ça en local sur votre machine, sans rien envoyer nulle part.

Vous pointez bHive vers des dossiers que vous avez déjà, et elle lit ce qu'il y a dedans. Vos documents, les PDF, les images dont elle fait l'OCR, et depuis la 2.0 l'audio et la vidéo, transcrits directement sur le Mac. Ensuite vous cherchez en décrivant ce que vous voulez, plutôt qu'en essayant de vous souvenir du nom que vous aviez collé au fichier. Rien ne bouge, rien n'est copié dans une bibliothèque, vos fichiers restent exactement où ils sont, ils sont tout simplement indexés dans un RAG.

La vraie nouveauté de cette version, c'est "Ask bHive". Vous posez une question, l'app trouve les fichiers concernés, les lit, et vous répond en langage clair. Elle vous montre alors quels fichiers elle a utilisés, donc vous pouvez les ouvrir et vérifier vous-même et surtout, quand elle ne sait pas, elle le dit, au lieu d'inventer un truc qui sonne juste. Ça paraît con dit comme ça, mais c'est avec ça que la plupart des assistants IA vous plantent.

Bon, moi, je n'en ai pas vraiment besoin de cet outil parce que j'ai mis en place mes propres RAG, mais je me dis que si j'avais trouvé ça avant, je ne me serais pas fait chier.

Côté moteur, tout tourne en local, et le modèle intégré à macOS marche tout de suite, donc vous n'avez rien à télécharger. Si vous voulez de la recherche plus fine, il y a bien sûr un modèle plus costaud à récupérer, de 515 Mo.

Il y a aussi une vue "santé de la bibliothèque", histoire que vous sachiez ce qui n'est pas cherchable et pourquoi. Fichiers déplacés, disque externe débranché, format illisible, OCR raté, éléments encore dans la file d'attente. En gros, un tableau de bord de confiance au lieu de vous laisser deviner si la recherche couvre vraiment tout. Vous pouvez aussi sauvegarder vos collections, tags et notes dans un fichier pour les restaurer plus tard.

Je vous avais déjà parlé de Cardinal , qui rend la recherche de fichiers instantanée sur Mac sauf que Cardinal cherche par nom, là où bHive lit ce qu'il y a à l'intérieur et sait vous répondre avec beaucoup plus de richesse. On est une gamme au-dessus selon moi.

Après, bHive 2.0 réclame macOS 26 et une puce Apple Silicon donc si vous êtes resté sur macOS 15 comme un homme de cro-magnon, vous devrez rester sur la vieille version 1.3.1 qui continue de tourner, mais sans toutes ces nouveautés... sniiif.

Voilà, c'est gratuit, et ça respecte vos données puisque tout reste en local.

À tester !

BMASS - Bootez direct votre PC sur une IA locale

Par : Korben ✨

Balaji Bikshandi avait un rêve ! Il voulait booter sa machine directement sur un LLM sans avoir à passer par le moindre environnement de bureau ! Et il y est parvenu avec son outil BMASS , qui s'installe sur une clé USB de 8 Go, et qui embarque Alpine Linux, llama.cpp et un modèle Qwen3 0.6B évidemment quantisé.

Vous allumez l'ordi portable, Alpine démarre depuis la clé et vous tombez sur un prompt BMASS>. Et voilà à partir de là, vous pouvez causer à votre ordinateur en langage naturel. Ensuite, quand vous demandez à BMASS de faire des trucs, celui-ci injecte la commande qui va bien dans une balise et le runtime l'exécute pour de vrai sous un compte Linux non privilégié. Et ensuite, le LLM récupère la sortie brute, pour répondre, à partir de cette "preuve".

Operator: Which operating system is this?
Assistant: <shell>cat /etc/os-release</shell>

Tout le code de BMASS tient en 399 lignes de Python, et nécessite de faire tourner un llama-server en background sur le port 8080 avec 2048 tokens de contexte et 2 threads. Et ensuite lui fait le pont entre le modèle et le shell. Y'a rien de sorcier donc mais comme ça tourne sur du CPU, que c'est hors-ligne, et que ça peut se mettre sur des vieilles machines, c'est plutôt cool...

Voilà je vous laisse avec la vidéo que Balaji a filmée, ça montre le démarrage complet de son IA bootable :

Voir cette vidéo sur YouTube

Ah et petite subtilité qui va vous plaire, le code de BMASS contient une regex baptisée FALSE_EXECUTION_CLAIM dont le boulot est de détecter quand le modèle prétend avoir exécuté une commande alors qu'il n'a rien lancé du tout. Le runtime lui renvoie alors une correction pour lui dire qu'aucune commande n'a été exécutée lors de ce tour. Faut dire que la 0.6B de Qwen hallucine tellement parfois, qu'il lui fallait obligatoirement un garde-fou.

Donc, voilà, côté sécu c'est super léger... y'a juste une regex qui bloque les sudo, doas, pkexec et autres su, mais c'est tout. Pas de conteneur, encore moins de namespace et surtout pas de liste blanche, donc si vous vous lancez, ce sera à déployer uniquement pour rigoler sur une vieille machine sans importance, parce que si demain, le modèle décide de lancer un rm -rf, faudra pas venir chialer ^^.

Petit service au passage si vous voulez tester, la doc d'installation vous fait copier le prompt système dans /opt/bmass/config/system-prompt.txt, sauf que le launcher le cherche dans /opt/bmass/system-prompt.txt.

Dans le genre modèle local qui tient dans presque rien, j'en ai parlé avec Llamafile qui fait tourner un LLM depuis un fichier unique. Et si les bidouilles minimalistes vous amusent, il y a aussi ce mini-PC Linux piloté entièrement en morse .

Perso, je doute que ça serve à grand-chose. Mais le concept est marrant !

Kassis - Transcrivez vos audios et dictez vos textes sur Mac

Par : Korben ✨

Si vous cherchez un logiciel de dictée vocale sérieux sur Mac, vous avez sûrement remarqué que le marché ressemble à un désert. Nuance a débranché Dragon pour Mac en octobre 2018, la dictée intégrée de macOS dépanne pour 2 SMS mais s'essouffle sur un vrai document, et la plupart des services actuels envoient votre voix mouliner sur un serveur à l'autre bout du monde. Et quand vous êtes avocat, médecin, journaliste ou juste quelqu'un qui dicte des trucs confidentiels, bah ça pique un peu.

Alors comme vous le savez, j'ai fini par coder ma propre solution, et bonne nouvelle, Kassis débarque aujourd'hui sur le Mac App Store ! Jusqu'ici, mon app de saisie vocale était réservée à mes abonnés Patreon (je vous en parlais ici à sa sortie), mais vous pouvez maintenant l'installer en 2 clics et la tester gratuitement, sans compte, sans carte bleue.

Le principe reste le même : vous laissez le doigt appuyé sur un raccourci clavier (⌥ + Espace par défaut), vous parlez, vous relâchez, et hop, le texte atterrit pile là où se balade votre curseur. Dans Mail, Slack, Word, votre terminal ou n'importe quelle autre app macOS. Moi, je m'en sers vachement pour discuter avec Claude Code, notamment. Ça fait gagner un temps de dingue et surtout votre voix ne quittera jamais votre Mac. Puis une fois les modèles téléchargés, ça pourra même marcher sans connexion.

Je l'ai pensé pour un usage professionnel, donc que ce soit le secret médical, les dossiers clients, les sources d'une enquête journalistique... Absolument rien ne part dans le cloud. Et contrairement à d'autres solutions, il n'y a même pas besoin de vous créer un compte.

Côté moteurs, vous avez le choix entre 5 modèles de reconnaissance vocale. Tout d'abord, Parakeet qui est ultra rapide et qui est mon préféré au quotidien. Mais également Whisper d'OpenAI, un classique un peu plus costaud, mais très fiable. Et puis des modèles un peu plus confidentiels comme Canary de Nvidia (le grand frère de Parakeet) ou encore Cohere qui est vachement précis. Sans oublier le moteur d'Apple intégré à macOS 26 qui utilise le Neural Engine pour retranscrire votre voix instantanément !

La détection de langue est également automatique parmi 99 langues, donc vous dictez par exemple en français, en anglais ou en japonais sans avoir à toucher un réglage.

Et Kassis ne fait pas que de la dictée ! L'outil sait également faire de la transcription audio en texte à partir d'un fichier audio ou vidéo que vous glissez-déposez sur la fenêtre. Avec ça, il vous ressortira en texte dans le presse-papier tout ce qui a été dit dans le son ou la vidéo, avec l'identification des locuteurs (qui parle et quand). C'est super pratique pour les réunions enregistrées, les interviews, les podcasts, les mémos vocaux ou encore les rushs vidéo.

Le texte qui sort est nickel, et vous pouvez le coller tel quel. Les "euh" et les hésitations dégagent tout seuls, la ponctuation et les majuscules tombent où il faut (typographie française comprise, avec ses espaces avant les points d'interrogation), et y'a même un dictionnaire de substitutions qui apprend vos termes techniques, vos noms propres et vos abréviations. Et les noms de marque que les moteurs massacrent d'habitude ? Une correction phonétique optionnelle se charge de les rattraper.

Et le texte transcrit, vous pouvez également le retravailler en local à l'aide de 7 styles de reformulation (professionnel, concis, structuré, décontracté...), ou une traduction dans 13 langues, toujours sans cloud. Genre vous marmonnez votre brouillon en français, vous relâchez la touche, et c'est un email propre en anglais prêt à partir.

Perso, je m'en sers tous les jours pour dicter mes emails, mes articles et mes prompts, et visiblement je ne suis pas le seul accro, puisque la version 1.1 doit également beaucoup aux retours des utilisateurs de la première heure. Par contre, les possesseurs de vieux Mac Intel, désolé, c'est mort... il vous faudra une puce Silicon.

Côté tarifs, la version gratuite offre donc 2 000 mots pour vous faire une idée et Kassis Pro passe en illimité pour 7,99 € par mois ou 49,99 € par an, avec 7 jours d'essai gratuit sur la formule annuelle. Les allergiques à l'abonnement ont également le choix d'opter pour une licence à vie à 129,99 €, et mes soutiens Patreon gardent leur accès direct, comme avant. L'app est dispo sur l'App Store du monde entier, avec une fiche traduite en 15 langues (même en japonais, 音声入力 !).

Bref, si votre Mac vous sert à écrire, foncez essayer Kassis sur le Mac App Store , la version gratuite suffit pour vous faire une idée.

Kassis fait partie des nombreux logiciels que je développe sous le nom Korben et que vous pouvez tous retrouver sur ma page Korben Logiciels .

Swival – Le papa de libsodium se met aux agents de codage locaux

Par : Korben ✨

Frank Denis , c'est le monsieur qui fait tourner un bon morceau d'Internet sans que personne le sache : libsodium, dnscrypt-proxy, Pure-FTPd, c'est lui. Et dernièrement, il s'est attaqué aux agents de codage IA avec Swival , un outil pensé pour les petits modèles qui tournent en local sur votre machine.

Le truc de Frank c'est d'écrire du logiciel réputé incassable depuis 25 ans. Si vous chiffrez vos requêtes DNS, y'a des chances que ça passe par son dnscrypt-proxy , et si vous utilisez du chiffrement dans à peu près n'importe quelle app moderne, libsodium n'est jamais bien loin. Du coup, quand ce profil-là sort un agent de codage en Python, licence MIT, gratuit, je pense que ça vaut le coup de s'y arrêter 2 minutes.

Il a codé cela parce que les outils d'agentique existants l'ont sérieusement gonflé. C'est beau, c'est neuf, c'est lavé avec Mir Laine mais.... ça plante !! Et l'autre reproche qu'il leur fait c'est concernant la confidentialité. En effet, utiliser un agent, c'est forcément voir partir on ne sait où nos données personnelles... nos clés API, nos URLs internes, nos noms de projets... tout ça est allègrement bouffé par le fournisseur de modèle qui derrière s'en sert pour tout un tas de choses pas cool. C'est notamment pour cela que Swival embarque une option --encrypt-secrets qui détecte les credentials dans les messages et les chiffre avant qu'ils quittent votre machine. Une denrée rare chez les agents de codage, et ça c'est du pur Frank Denis !

Y'a aussi la gestion du contexte, qui est le gros morceau. Les agents classiques sont conçus pour des modèles frontière avec des fenêtres géantes. Sauf que votre LLM local, lui, doit souvent se débrouiller avec 32K de contexte, et là tout déborde très vite. Swival, lui, prend le truc à l'envers. Chaque sortie d'outil est plafonnée direct à la source : 50 Ko max par fichier lu, 100 résultats de grep, 100 entrées par listing. Et une fois que l'agent a fini de fouiller votre code, un système de snapshots vire ses 12 000 tokens de lectures pour les remplacer par un résumé de 200 tokens.

Et c'est pas fini. Rajoutez là-dessus une compaction automatique en 7 niveaux progressifs (du simple ménage au grand débarras), plus des notes de travail qui survivent à tout ça. Résultat, un agent qui tient des sessions à rallonge sans partir en vrille. La doc montre d'ailleurs Swival en train d'avaler une refactorisation multi-fichiers avec Qwen3-Coder-Next dans 32K sous LM Studio sans broncher...

Et pour brancher tout ça, vous avez le choix. 11 backends quand même ! LM Studio par défaut (zéro config, il repère tout seul votre modèle chargé), llama.cpp pareil, HuggingFace, OpenRouter, Google Gemini et Vertex AI. Envie de lourd ? ChatGPT Plus ou AWS Bedrock. Et pour les curieux, les Apple Foundation Models en expérimental, un provider générique compatible OpenAI (ollama, vLLM, mlx_lm.server...) et même une commande externe de votre choix.

Pour trouver un modèle qui tienne dans votre RAM, Hugging Face sait filtrer selon votre matos et une fois que vous avez fait votre choix, l'installation tient en une ligne (via uv, Python 3.13 minimum) :

uv tool install swival

Ensuite, il suffit de taper, par exemple : "Refactore la gestion d'erreurs de src/api.py" et l'agent se met au travail pour peu que vous ayez déjà un LMStudio ou un llama.cpp qui tourne avec un modèle chargé...

Ah j'oubliais, si vous êtes sous Mac vous pouvez même l'installer avec Homebrew :

brew install swival/tap/swival

Ensuite, au niveau des commandes, il y a aussi, par exemple, une commande /audit qui vous permet de faire de la chasse aux failles de sécurité dans votre code. Tout cela avec des agents isolés chacun dans des worktrees séparés et qui sont obligés de reproduire chaque bug avant de l'inscrire dans le rapport.

Et côté sécurité, vous avez deux sandboxes au choix. Soit Agent FS d'un côté (l'agent bosse sur une copie de vos fichiers, votre projet reste intact) ou nono (non, pas le petit robot) de l'autre (avec barrières au niveau du noyau, blocage réseau compris). Sans oublier la mémoire persistante entre vos sessions, le support MCP et un mode serveur pour interconnecter vos agents entre eux.

Voilà donc de quoi venir jouer dans la cour de ZCode côté z.ai et compagnie...

Voilà, je me suis dit que ça allait vous intéresser, donc si vous voulez zieuter le code, direction GitHub , sinon, toute la doc se trouve sur le site officiel .

Merci Friendly_0day pour le lien !

Moebius - Effacer un objet d'une photo depuis votre navigateur

Par : Korben ✨

Simon Willison, le créateur de Datasette et co-créateur de Django, vient de porter un modèle d'inpainting d'image directement dans le navigateur. Sa démo vous permet de choisir une photo, de peindre sur la zone à faire disparaître et ensuite le modèle IA reconstitue ce qu'il manque. Et ce qui est merveilleux avec cette appli c'est que tout tourne sur votre carte graphique en local, comme ça vos données restent chez vous.

Le modèle s'appelle Moebius, dispose de 0,22 milliard de paramètres, et a été développé par une équipe de l'université Huazhong en Chine. À l'origine c'est un modèle PyTorch, que Willison a converti au format ONNX pour le faire tourner via ONNX Runtime Web sur le backend WebGPU, une nouvelle API qui donne aux pages web un accès direct au GPU. Et ce qu'on obtient, c'est un modèle de diffusion qui s'exécute à 100% côté client dans Chrome ou Safari.

Lors de la première utilisation, l'outil télécharge 1,27 Go de poids depuis Hugging Face, ce qui est énorme pour une page web. Mais c'est un one-shot car ensuite, le navigateur range tout ça dans son Cache Storage, et les fois d'après il ne re-télécharge rien.

Je l'ai installé et testé et ça fonctionne vraiment très très bien. J'ai sélectionné quelques tuiles comme un bourrin et ça me les a enlevées très proprement en quelques dizaines de secondes (une fois le modèle initial téléchargé évidemment).

C'est du vrai inpainting génératif en tout cas et pas un truc qui recopie les pixels d'à côté.

Willison raconte dans le README que la conversion PyTorch vers ONNX et l'appli web complète ont été réalisées par Claude Code avec le modèle Claude Opus 4.8, et qu'il n'a "*pas regardé une seule ligne de code *". Il s'est juste contenté de tester dans le navigateur et de signaler ce qui clochait. Hé ouais c'est comme ça maintenant, les temps changent ;)

C'est open source sous licence Apache 2.0, la démo est en ligne, et le code est sur GitHub si vous voulez le lancer chez vous. Testez, et effacez ce gars avec son coup de soleil sur le crâne qui gâche votre plus belle photo de vacances, je ne vous juge pas ^^.

Source : Hackaday

Un boîtier Wi-Fi qui détecte les gens à travers les murs

Par : Korben ✨

Ce serait marrant de détecter quelqu'un dans une pièce voisine, sans utiliser de caméra ou de capteur infrarouge. En fait, c'est possible avec juste du Wifi et c'est ce que nous prouve Talking Sasquach qui vient de se bricoler un petit boitier capable de faire ça.

Je vous rassure, l'idée n'a rien de neuf. Notre corps est plein d'eau, et l'eau ça renvoie et ça absorbe les ondes radio. Du coup, dès que vous bougez un peu votre popotin, bah ça perturbe les signaux Wi-Fi qui traversent la pièce.

Et si vous êtes trop gros, PAF vous passez en zone blanche ! (et pas en sauce blanche !)

Non, ça je l'ai inventé, vous pouvez vous détendre. Mais pour le reste, j'en parlais déjà en 2009 , avec des chercheurs de l'Utah qui reconstituaient carrément une image des gens de l'autre côté du mur, ondes radio à l'appui.

Sauf que là, plus besoin d'un labo puisque tout tient dans la main. Le cœur de l'engin est un M5Stack Cardputer ADV (c'est un ESP32-S3 avec un mini-écran, un clavier et une batterie intégrés) auquel il a collé un second écran TFT dans un boîtier imprimé en 3D. Ça donne un petit look cyberdeck bi-écran à l'appareil et tout ça pour une cinquantaine de dollars!

Sur les 2 coeurs de l'ESP32, y'a un qui gère l'affichage animé du radar tandis que l'autre mouline en continu les données captées par le Wifi. En fait le boitier lit ce qui s'appelle le CSI (Channel State Information) qui est un genre de signature de la façon dont le signal wifi rebondit partout autour de vous. Il surveille alors les variations d'amplitude et de phase sur des dizaines de trames et quand ça dépasse, BOOM, un blip vient s'allumer sur l'écran du radar, comme dans "À la poursuite d'Octobre rouge" ^^.

Après, contrairement à d'autres projets fake que j'ai pu voir passer, vous ne verrez personne à poil avec ça. C'est juste une interférence qui est pointée et pas une silhouette qui est dessinée finement et encore moins une triangulation de votre position.

Le seul garde-fou que Talking Sasquach a mis en place sur son radar, c'est qu'il faut d'abord se connecter au réseau wifi pour capter des choses. Mais en réalité, il n'y était pas obligé et ça peut fonctionner sans avoir à demander un accès à une box internet.

Le code est dispo sur GitHub sous licence MIT, et c'est écrit avec le framework Arduino si vous voulez reproduire le bidule.

Source

GLM 5.2 - Le premier modèle IA open source que je garde

Par : Korben ✨

Les amis, il faut que je vous parle de GLM 5.2 . Je l'utilise en ce moment même à travers Z.ai, et c'est la première fois qu'un modèle open weights me donne satisfaction sur ce que je lui demande de faire. Et dieu sait que j'en ai testé de ces putains de modèles !

GLM 5.2, c'est le dernier-né de Z.ai, le lab chinois connu avant sous le nom de Zhipu AI. Il est sorti en ce mois-ci (en juin), et c'est un gros bébé avec ses 744 milliards de paramètres en Mixture-of-Experts (MoE), dont à peu près 40 milliards qui s'activent pour chaque token, ainsi qu'une fenêtre de contexte qui monte à 1 million de tokens via la déclinaison glm-5.2[1m]. Le tout publié, comme toujours, sous licence MIT, avec les poids téléchargeables sur HuggingFace.

Bref, j'y croyais pas trop, mais j'ai quand même pris le petit abonnement Z.ai et j'ai lancé mes outils habituels et codé quelques nouvelles features sur mes logiciels. Et Ô surprise, il s'en sort très très bien pour mes usages (je dis bien pour mes usages !). J'ai eu aucun bug, pas de discussion à l'infini qui tourne autour du pot, ni de fin de conversation qui part en caractères chinois comme me faisait souvent Qwen.

Après, le truc chouette, c'est que je l'ai branché directement dans Claude Code. Si ça vous intéresse, je me suis fait un petit launcher spécifique. C'est cadeau :

#!/usr/bin/env bash
export ANTHROPIC_BASE_URL="https://api.z.ai/api/anthropic"
export ANTHROPIC_AUTH_TOKEN=VOTRE_CLE_API
export ANTHROPIC_DEFAULT_SONNET_MODEL="glm-5.2[1m]"
export ANTHROPIC_DEFAULT_OPUS_MODEL="glm-5.2[1m]"
export CLAUDE_CODE_AUTO_COMPACT_WINDOW="1000000"
claude "$@"

Vous le sauvegardez sous le nom de votre choix, par exemple "glm". Puis vous faites un :

chmod +x glm

Et ensuite vous le lancez comme ceci :

./glm

L'idée, c'est que comme l'API de Z.ai est compatible Anthropic, il suffit de pointer Claude Code vers leur endpoint, de glisser votre clé, et il cause à GLM 5.2 comme il causerait à Claude. Mes skills, mes scripts, tout marche pareil, c'est le feu !

Je regrette juste une chose, c'est de ne pas pouvoir le faire tourner en local chez moi. Parce que le bestiau, il est TROP gros. Même raboté et quantifié en 2-bit pour la maison , il vous bouffe dans les 240 Go de RAM. Chez moi, j'ai pas le matos, et vous probablement pas non plus. Donc pour le moment, l'API, c'est la seule porte d'entrée réaliste et abordable.

Que ce soit Qwen, Llama, Kimi, DeepSeek, peu importe ce que j'ai testé en local, pour mes usages un peu chiadés, à chaque fois je suis super déçu. Alors celui-là, pour ce que je lui demande, il tient très bien la route.

Maintenant, je vais pas vous vendre ça non plus comme un Claude Killer mais j'ai quand même trouvé un benchmark qui confirme mon ressenti. Sur le leaderboard Arena.ai dédié au code front-end, GLM 5.2 pointe à la deuxième place, juste derrière Fable 5. Et comme tout ce qui le précède est propriétaire, ça en fait le premier modèle open weights à ce niveau du classement.

Donc c'est pas la meilleure IA du monde, hein, mais c'est la première open source qui me donne un résultat qui me convient. Et vous savez tous à quel point je suis chiant et exigeant avec ce genre d'outil. En tout cas, c'est la première fois que je me dis que l'IA open source pourrait vraiment entrer dans mon flux du quotidien, et pas juste rester un joujou pour classer des trucs ou faire du slop sur des blogs de SEO. Maintenant, entre nous, j'attends surtout que Fable 5, ou son équivalent, revienne mettre le feu !!

Si ça vous tente d'essayer, il y a donc le GLM Coding Plan de Z.ai, qui démarre à 18 dollars par mois et qui est surtout taillé pour le code. Il se branche sur Claude Code, Cline et une vingtaine d'outils du même acabit. Petit conseil au passage, ce lien vers le Plan GLM est un lien affilié certes, mais il vous offre 10 % de réduc si vous l'utilisez, et ça me file un petit truc aussi, donc tout le monde y gagne.

Voilà, si vous codez avec autre chose jusqu'ici, ça vaut le coup d'y jeter un œil par curiosité.

Source : Z.ai

Hugging Face sait enfin vous dire si un modèle tourne sur votre machine

Par : Korben ✨

Vous avez une petite carte graphique, un vieux Mac ou juste un bon processeur, et vous cherchez LE modèle d'IA parfait qui pourra tourner en local sans que ça rame ?

Hugging Face vient d'ajouter le filtre qui manquait à sa page Models : un sélecteur de matériel qui ne vous proposera que les modèles réellement compatibles avec votre machine.

Vous renseignez votre config (une RTX 3060, un processeur AMD, une puce Apple Silicon M2…) dans les réglages de votre compte, et le catalogue ne gardera plus que ce qui passe pour un GPU, un CPU ou une puce Apple précis.

Fini l'époque, donc, où il fallait ouvrir chaque fiche, chercher la VRAM requise, sortir la calculette et croiser les doigts au moment du lancement.

Ce filtre d'Hugging Face repose sur la taille des fichiers proposés, notamment les versions quantifiées au format GGUF, ces modèles compressés qui font tourner de grosses IA sur des machines modestes, et sur la RAM ou la VRAM de votre config déclarée. Cette base hardware est constituée de ce que possède réellement la communauté des 300 000 membres qui ont accepté de déclarer leur matériel.

Une fois le bon modèle repéré, vous récupérez les commandes via le bouton "Use this model" présent sur chaque fiche, puis vous lancez tout ça avec les outils habituels de l'IA locale, du genre llama.cpp, Ollama ou LM Studio. Et pour ceux qui veulent aller plus loin sur Apple Silicon, il existe également des serveurs d'inférence maison pour remplacer l'API d'OpenAI par votre propre Mac .

Maintenant, si vous avez un chip un peu exotique, un accélérateur NPU ou une carte à peine sortie, il faudra parfois patienter, voire passer par le forum pour réclamer son ajout dans la base, mais bon, je chipote !

Source

GeoSpoof - Le VPN cache votre IP mais le navigateur vous trahit

Par : Korben ✨

Anthony Sgro vient d'open-sourcer un truc que tout utilisateur de VPN devrait avoir sous la main. C'est extension pour Safari, Chrome et Firefox (et pas Faille-Fox, déso) qui s'appelle GeoSpoof et qui part d'un constat tout bête que la plupart des gens ignorent.

En fait, votre VPN change masque bien votre adresse IP réelle (s'il est bien configuré, hein), d'accord, super, mais votre navigateur, lui, continue tranquillement de tout balancer aux sites web et notamment le lieu où vous vous trouvez vraiment.

Venez pas chez moi, c'est pas mon adresse...

Et il a mille façons de le faire. Y'a d'abord l'API de géolocalisation qui balance vos coordonnées GPS si vous l'autorisez, mais surtout y'a tout le reste, beaucoup plus sournois comme votre fuseau horaire, par exemple. Vous êtes connecté à un serveur VPN à New York mais votre navigateur répond Europe/Paris quand un script lui demande l'heure, et hop, le site comprend en une milliseconde que vous bluffez. Pareil avec l'objet Intl.DateTimeFormat, avec le Date du système, avec WebRTC qui adore fuiter votre vraie IP locale.

Vous pouvez avoir le meilleur VPN du monde, si ces signaux-là pointent tous vers chez vous pendant que votre IP dit le contraire, et vous êtes encore plus repérable qu'un mec sans VPN. C'est exactement ce qu'un VPN ne fait pas tout seul et c'est pour ça que votre abonnement à Youtube Premium, Netflix, ou Disney+ à 30 centimes acheté en Turquie ou je ne sais où, fini par se faire flagger.

GeoSpoof colmate donc ce trou en venant rebrancher directement ces APIs dans le navigateur sur du contenu factice. L'extension s'injecte au tout début du chargement de la page, avant que le JavaScript du site ait eu le temps de tourner et ensuite quand un script demande votre position, votre heure ou votre fuseau, il reçoit la localisation que VOUS avez choisie, et tout est cohérent. Géoloc, timezone, dates, WebRTC, tout raconte la même histoire et y'a plus de signal contradictoire qui dépasse.

Le mode que je trouve le plus pratique, dans GeoSpoof c'est surtout la synchro VPN automatique. L'extension repère l'IP de sortie de votre VPN, et elle aligne toute seule votre localisation navigateur dessus. Si vous changez de serveur, et que vous passez de Tokyo à Montréal, hé bien elle resynchronise sans que vous n'ayez à toucher à quoi que ce soit.

Sinon vous pouvez aussi y aller à la main, chercher une ville précise ou taper vos coordonnées directement. Pour vérifier que ça marche vraiment, l'auteur a même monté une page de test sur geospoof.com/verify , et l'extension passe les outils classiques de fingerprinting comme CreepJS ou BrowserLeaks.

Petit détail qui prouve le soin du travail, les overrides sont déguisés pour répondre [native code] quand un script essaie de vérifier s'ils ont été trafiqués. Héhé, malin !

Là où Anthony Sgro est honnête, c'est qu'il ne vous vend pas l'invisibilité totale. C'est écrit dans la doc que GeoSpoof ne change PAS votre IP. Sans un VPN derrière, votre adresse continue donc de pointer vers chez vous, et le bénéfice restera limité face aux sites qui recoupent l'IP.

Ça ne bypasse pas non plus la détection côté serveur, votre historique de compte ou votre moyen de paiement vous trahiront toujours. Et le mode le plus agressif, qui passe par le protocole de debug de Chrome pour verrouiller le fuseau jusque dans les workers, reste détectable par les outils qui cherchent spécifiquement ce genre de bidouille. C'est juste un outil de cohérence à utiliser en complément du meilleur VPN auquel vous vous êtes abonnés ^^.

Ça tourne sur Firefox, Chrome, Brave, Edge et même Safari sur iOS et macOS via l'App Store. Tout est sous licence MIT, et y'a pas de tracking ni de collecte de données dedans. C'est rare de voir des extension d'une si bonne qualité de finition, encore bravo à Anthony !!

Puis si vous bidouillez déjà votre vie privée avec un truc comme Fingerprint Defender , GeoSpoof complètera le tableau parfaitement sur la partie localisation.

Bref, un VPN sans ça, c'est une porte blindée avec une fenêtre grande ouverte à côté. Allez jeter un œil, ça prend 2 min à installer !

Alexandria - Vos ebooks en livres audio multi-voix, en local

Par : Korben ✨

Je ne suis pas très client des livres audio parce que mon cerveau, en général, part faire des trucs dans son coin et je me retrouve à rien écouter du tout. Je préfère un petit podcast où ça rigole qu'une œuvre littéraire qui demande de la concentration.

Mais je sais que vous appréciez beaucoup les livres audio et il arrive très souvent qu'un bouquin n'ait pas sa version audio. Un vieux roman qui n'est plus édité, un PDF technique, une fanfiction de 800 pages, un article de korben.info ou juste un truc que personne chez Audible ne prendra le temps d'enregistrer parce que ça n'intéresse que vous.

Mais youpi, Finrandojin, un internaute, en a eu marre d'attendre l'audiobook de ses rêves et a codé Alexandria, un générateur de livre audio qui tourne 100% en local sur votre ordi.

Vous balancez un fichier .txt, .md ou .epub, dans l'appli, puis un LLM découpe le texte et annote chaque ligne avec le personnage qui parle et la manière dont il le dit, puis le moteur Qwen3-TTS joue le tout en local comme une vraie troupe de doubleurs professionnels. Et le résultat est assez propre, même si ça ne vaut pas encore un vrai enregistrement fait par un vrai humain. M'enfin, faute de mieux, pourquoi pas !

Et surtout, ce LLM qui fait le découpage, vous le branchez où vous voulez. En local via LM Studio ou Ollama, ou dans le cloud avec OpenAI ou n'importe quelle API compatible. Ensuite, une fois le script annoté, Alexandria vous propose 9 voix pré-entraînées avec contrôle de l'émotion et du ton.

Vous pouvez aussi cloner une voix à partir de 5 à 15 secondes d'échantillon, ou carrément en fabriquer une à partir d'une simple description écrite. Vous tapez par exemple "Une voix masculine chaude et grave, au ton calme et posé" (c'est ma voix quoi...lol) et hop, il vous la fabrique.

La fonctionnalité de génération de personnas fait également gagner un temps de dingue puisqu'en un clic, le LLM analyse le bouquin, invente une description de voix pour chaque personnage, génère l'audio de référence et assigne tout automatiquement.

Et pour les obsédés du détail, il y a même un éditeur web où vous regénérez n'importe quelle ligne individuellement, du training LoRA pour vous fabriquer des voix persistantes, et un export en MP3 en pistes séparées pour bidouiller ça ensuite dans Audacity, ou en M4B chapitré qui rentre direct dans Audiobookshelf, Apple Books ou VLC. Et tout ça bien sûr, dans une dizaine de langues, français compris.

Alexandria exigera par contre une carte graphique avec 8 Go de VRAM au minimum, 16 et plus si vous voulez du débit correct. Et si vous êtes sur Mac, mauvaise nouvelle, l'accélération MPS d'Apple Silicon n'est pas encore supportée, donc ça tournera en mode CPU, donc ce sera lent. Mais c'est pas très grave, vous lancez la génération, et vous retournez lire d'autres articles sur mon site pour passer le temps.

Même galère aussi pour les gens qui ont de l'AMD sous Windows. Les chanceux par contre, ce sont les possesseurs de NVIDIA sous Windows ou Linux et les AMD sous Linux. Maintenant si vous tenez juste à faire parler votre Mac sans y passer trois heures par chapitre , vous serez mieux servi ailleurs qu'avec Alexandria.

Pour l'installation, le plus simple passe par Pinokio en deux clics, et si vous n'avez pas le GPU qui va bien, il y a un notebook Google Colab pour tourner sur un T4 gratuit dans le navigateur. Comptez quand même un téléchargement de 3,5 Go pour les modèles TTS à la première utilisation, ils ne sont pas inclus dans l'install.

Vous l'aurez compris, c'est du DIY un peu gourmand en GPU, mais pour tous vos ebooks à écouter qui n'auront jamais de narrateur, ça ouvre les perspectives ! Le code est sous licence MIT et je vous invite quand même à tester avec un chapitre avant de vous lancer dans un roman entier.

Source

Dream Server - Un serveur IA complet chez vous en une commande

Par : Korben ✨

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 .

J'ai testé les Orbi 970, le système WiFi 7 le plus avancé de chez Netgear

- Contient des liens affiliés Amazon -

Netgear vend son Orbi 970 à 1 999 euros le pack de trois ( en promotion, au lieu de 2400 euros ha ha ). Et le tarif a beau faire tousser, ce système maillé en WiFi 7 (la toute dernière norme sans fil, le 802.11be, qui pousse les débits à environ deux fois et demie ceux du WiFi 6) reste l'un des plus rapides que vous puissiez installer chez vous aujourd'hui.

Le plus gros intérêt du produit ? Netgear l'appelle le quad-band. En clair, le système fait tourner quatre bandes à la fois : une bande 2,4 GHz, deux bandes 5 GHz et une bande 6 GHz. Il en sacrifie d'ailleurs une entièrement à la conversation permanente entre le routeur et ses deux satellites. Ce fameux backhaul explique qu'un boîtier planté à l'autre bout du logement garde un débit intéressant au lieu de s'écrouler dès qu'on s'éloigne.

27 Gbps cumulés. C'est le sens du sigle BE27000, un chiffre que personne n'atteindra jamais en vrai puisqu'il additionne bêtement le débit théorique de toutes les bandes, mais qui plante quand même le décor : on parle d'une machine taillée pour avaler 200 appareils en même temps et couvrir jusqu'à 660 m², avec douze antennes et un processeur quadricœur par boîtier.

Chez moi, le module principal est branché sur ma Livebox 7. J'ai ensuite réparti les deux satellites aux endroits qui me servaient vraiment. Le premier dort dans ma chambre, relié en Ethernet, histoire de tirer le maximum de débit quand je lance une partie en streaming sur GeForce Now, le service de Nvidia qui exécute les jeux à distance sur ses propres serveurs et vous renvoie juste l'image à l'écran.

Le second, je l'ai posé sur mon bureau, une pièce pourtant éloignée de la box. Je l'ai relié à un adaptateur 10 Gb/s en Thunderbolt, lui-même accroché à mon dock Thunderbolt 5 UGREEN . Et là, je me retrouve avec un débit particulièrement solide dans la pièce qui ramait le plus jusqu'ici. Alors je ne vais pas entrer dans les détails des débits, c'est tellement fluctuant et différent selon votre logement et vos configurations, mais sur mon Mac, loin de ma box, branché en Thunderbolt 5 à l'adaptateur 10 Gb/s connecté au satellite du bureau, je tape dans les 3 000 Mb/s sans problème. Autant dire que c'est complètement surdimensionné.

Même chose dehors. J'ai du réseau partout dans mon jardin et mes extérieurs, là où mes anciens équipements abandonnaient au bout de quelques mètres, avec des débits stratosphériques.

Côté connectique, le routeur aligne un port 10 Gbps en entrée, un second en sortie et quatre ports 2,5 Gbps, alors que chaque satellite embarque son propre port 10 Gbps. Le tout est chapeauté par du WPA3, des mises à jour automatiques et la surveillance Netgear Armor signée Bitdefender, offerte pendant un an d'ailleurs.

Sauf que voilà. Ces ports 10 Gbps ne donnent leur pleine mesure que si le reste de votre installation suit derrière. Si votre NAS, votre fibre ou vos ordinateurs plafonnent à 1 Gb/s, vous vous offrez une autoroute à dix voies pour y rouler en scooter (ce qui est un peu mon cas). Mais ça reste un excellent produit, réservé à ceux qui ont les moyens et veulent le meilleur pour leur matériel. Il est en promo en ce moment , mais ce n'est pas donné pour autant !

Comme c'est un test, je ne sais pas encore si je vais les garder, mais je ne vous cache pas que c'est tentant, même si le prix pique un peu. Notez qu'il est possible de n'en prendre qu'un ou deux, le pack de 2 est déjà moins hors de prix .

Bref, c'est à voir ici sur Amazon si ça vous branche .

Surface RTX Spark Dev Box - L'IA locale signée NVIDIA

Par : Korben ✨

Microsoft vient d'annoncer lors de son événement Build 2026 l'arrivée de sa Surface RTX Spark Dev Box, un petit boîtier qui se pose sur le bureau et qui fait tourner des modèles IA de 120 milliards de paramètres en local, sans rien envoyer dans le cloud.

Et bien sûr derrière le badge Surface, c'est NVIDIA qui se tape tout le boulot.

Dans cette boîte noire, vous avez donc la puce NVIDIA RTX Spark, qui rassemble un GPU Blackwell et un processeur Grace pour sortir environ 1 pétaflop de puissance IA et 128 Go de mémoire unifiée.

De quoi donc faire tourner un gros modèle avec une fenêtre de contexte d'un million de tokens, ou carrément affiner (fine-tuner) un modèle sans louer des GPU dans le cloud. Le tout dans un châssis en aluminium pensé pour servir de dissipateur, donc refroidi passivement. Et un malheur n'arrivant jamais seul (je plaisante ^^), Windows 11 Pro arrive préconfiguré dessus pour les devs, avec tous les outils qui vont bien déjà installés.

D'après le site de Microsoft, ce petit joujou sera donc dispo fin 2026, aux États-Unis d'abord.

Détails du châssis

Maintenant, le truc à bien capter, c'est que cette puce RTX Spark, c'est exactement la même famille que la DGX Spark , le mini-PC que NVIDIA vend depuis octobre dernier. Même architecture Grace Blackwell, même pétaflop, mêmes 128 Go unifiés.

Eh oui, Microsoft n'a pas conçu de puce maison pour cette box (ses puces Maia, c'est pour ses datacenters), mais a juste pris la plateforme d'NVIDIA et l'a habillée en Surface avec une image Windows maison. Ce qui n'est pas grave, hein, mais autant le savoir avant de croire à une révolution Microsoft.

Côté tarif, pas de chiffre officiel encore mais les estimations tournent autour de 3500 dollars. Pour vous donner une idée, la DGX Spark d'NVIDIA, sa cousine sous Linux, est passée de 3999 à 4699 dollars récemment, la faute à la flambée des prix de la mémoire. Donc, ce ne sera pas donné, mais vous vous en fichez parce que vous êtes probablement pété de thunes ^^.

Cela dit, même si c'est cher, l'idée de faire tourner un modèle costaud entièrement chez soi, ça reste sacrément séduisant. Vos données ne sortent jamais de la machine, y'a zéro facture d'API qui gonfle à chaque requête, et vous pouvez bidouiller un fine-tuning maison tranquillement. C'est une tendance qu'on voit monter depuis un petit moment maintenant avec par exemple des gens qui glissent un GPU de datacenter dans leur PC gaming juste pour s'affranchir du cloud ^^.

Après, vous n'avez pas besoin d'attendre cette box pour faire de l'IA locale. La DGX Spark existe déjà, un Mac avec assez de mémoire unifiée encaisse de gros modèles aussi, sans oublier qu'il y'a carrément moyen de remplacer l'API d'OpenAI par votre propre Mac . Sans parler des PC AMD Strix Halo...

Non, le vrai plus de Microsoft ici, c'est le combo refroidissement passif et image Windows dev clé en main, taillé pour le futur "Windows agentique" qu'ils nous préparent, et grâce auquel les agents IA tourneront en permanence sur nos machines pour taffer à notre place.

Bref, rien de dingue, c'est certain mais ça peut clairement dépanner ceux qui veulent un PC IA local sans avoir à bricoler. J'ai hâte de connaître le prix en tout cas !

Source

VoxDrop 1.1 - Le moteur vocal d'Apple est devenu mon préféré

Par : Korben ✨

VoxDrop , ma petite app de dictée vocale qui tourne 100% en local sur Mac, passe en version 1.1. Et le gros morceau de cette release, c'est le grand ménage que j'ai fait dans les moteurs de reconnaissance vocale.

Le nouveau venu, c'est donc le moteur d'Apple intégré à macOS 26. Il ne pèse rien à télécharger (0 Mo car il est carrément intégré au système), il gère une tonne de langues et il transcrit quasi en temps réel. Perso, c'est devenu mon préféré et je dicte avec tous les jours depuis des jours ! Seul hic, attention, faudra macOS 26, donc si vous êtes encore sous Sequoia, celui-là vous passera sous le nez.

Du coup j'ai viré Voxtral et Qwen, dont le gain n'était pas dingue, et j'ai mis du lourd à la place : Canary 1B de NVIDIA (le grand frère de Parakeet) et Cohere Transcribe. Ces deux-là squattent le haut du classement des meilleurs modèles de reconnaissance vocale, côté précision donc vous êtes servis !

Le principe, lui, ne bouge pas, vous appuyez sur votre raccourci (⌥+Espace par défaut), vous parlez, et hop, le texte arrive directement là où se trouve votre curseur. Et maintenant, VoxDrop sait aussi transcrire vos fichiers audio ET vidéo par simple glisser-déposer, sur la fenêtre ou sur l'icône dans la barre de menu et identifie même les locuteurs (qui parle, et quand) dans vos enregistrements.

Maintenant, oui, je sais, c'est un outil uniquement macOS parce que j'exploite au maximum les capacités de l'OS d'Apple (CoreML, MLX...etc) pour vous proposer l'expérience la plus rapide qui soit en termes de Speech To Text. Je pourrais porter VoxDrop sous Linux et Windows mais je ne ferais pas mieux que d'autres outils comme Murmure ou Handy qui font très bien le job sur ces OS.

J'ai codé cet outil parce que j'étais frustré par les autres apps que je trouvais peu réactives et là je m'en sers tous les jours, notamment pour dicter mes emails, mes articles et discuter avec Claude Code. C'est instantané et ça me fait gagner un temps de dingue !

VoxDrop peut aussi reformuler ou traduire votre texte en local toujours via Apple Intelligence, en plus du modèle de traduction maison déjà embarqué depuis la version précédente (TranslateGemma). Et j'ai rajouté tous les petits trucs qui changent la vie, comme la suppression automatique des "euh" et autres hésitations pour avoir un texte propre, et j'ai mis aussi le fonctionnement capot fermé du MacBook quand vous bossez sur un écran externe ainsi qu'un dictionnaire de substitutions qui corrige les variantes de vos termes, et un démarrage plus rapide grâce au préchargement du moteur.

Encore une fois, la perf sur cet outil c'est mon obsession.

J'ai aussi corrigé pas mal de bricoles que vous m'aviez remontées, l'espace parasite en début de phrase, le support des AirPods, les raccourcis clavier qui déconnaient et plein de petits gains de stabilité.

Comme pour la version précédente , VoxDrop reste réservé à mes abonnés Patreon. Alors pourquoi pas sur l'App Store ou en open source ? Parce que les deux, c'est un job à plein temps, c'est gérer des clients et du SAV d'un côté, des pull requests et des contributeurs de l'autre. J'ai pas le temps, et franchement pas l'envie.

Je code des outils pour moi depuis l'époque de RockXP, depuis le début des années 2000 et j'en ai profité l'année dernière pour mettre au point un système de licence Patreon maison que j'implémente dans tous mes outils. Comme ça, je développe ce qui me plaît quand je veux pour moi, et ceux qui me soutiennent y ont aussi accès directement, sans pub, ni intermédiaire. C'est un genre de bonus pour mes Patreons quoi...

D'ailleurs, VoxDrop n'est pas mon seul joujou du genre, y'a aussi Evapor8 qui efface le watermark des images générées par Gemini, sous la même licence. Mais ça, je vous en reparle très vite !

Bref, si vous êtes déjà sur mon Patreon , la 1.1 vous attend. Et sinon, vous savez quoi faire. 🙏

Ps : Je mets à jour le site de VoxDrop prochainement, et je vais aussi modifier le nom de l'app car depuis que je l'ai sortie en 2025, y'a eu des copycats qui sont arrivés avec le même nom donc je vais changer ça rapidement pour leur couper l'herbe sous le pied.

J'ai testé les UGREEN FineTrack 2.0, des traceurs qui ne ressemblent pas à des AirTags (et tant mieux)

- Contient des liens affiliés Amazon -

J'ai reçu et testé pendant quelques jours la nouvelle série FineTrack 2.0 d'UGREEN, trois petits traceurs d'objets pensés pour ne plus jamais perdre ses clés, son sac ou son vélo.

Premier truc qui saute aux yeux, aucun des trois ne ressemble à un AirTag. Et c'est tant mieux. Le galet blanc d'Apple, un voleur ou un curieux le repère en une seconde, alors qu'ici on passe beaucoup plus inaperçu. Discrétion, donc.

La gamme compte trois modèles. Le FineTrack Mini 2, un carré ultra-compact de 36 millimètres de côté pour 10,7 d'épaisseur, livré avec une coque en silicone et un porte-clés. Le FineTrack 2, une boule de 34 millimètres avec sa petite dragonne déjà fixée. Et le FineTrack Duo, au format carré.

Les deux premiers embarquent une batterie ni rechargeable ni remplaçable, donnée pour 5 à 7 ans. Impossible évidemment de vérifier une durée pareille en quelques jours, mais sur le principe, ça change tout.

Parce qu'avec une batterie qui tient cinq à sept ans, vous pouvez carrément planquer le traceur et l'oublier. Dans une voiture, sous la selle d'un vélo, dans une valise, sur n'importe quel objet dont vous ne voulez plus vous soucier, sans jamais penser à le recharger. Le jour où la batterie rendra l'âme, dans plusieurs années, vous changerez simplement de traceur. Alors certes c'est du jetable, mais 5 à 7 ans, c'est large…

On se dit forcément qu'avec une batterie rechargeable ils auraient été un peu plus gros, ou moins endurants. Mais bref, à ce niveau d'autonomie, la question ne se pose même plus.

Les deux partagent la même fiche : certification officielle Apple Find My (le réseau Localiser d'Apple, qui se sert des iPhone des autres passants pour retrouver vos affaires), un haut-parleur de 110 décibels pour les faire hurler même enfouis au fond d'un sac, une étanchéité IP68 qui encaisse la poussière comme l'immersion, et des petites notes fluorescentes pour les repérer dans le noir.

Mon préféré, c'est clairement la boule de type ballon de foot, le FineTrack 2. Avec sa dragonne, elle fait un porte-clés vraiment chouette, et je la verrais bien aussi accrochée au sac ou au manteau d'un enfant pour garder un œil dessus.

Si vous tenez à la recharge, le troisième modèle est fait pour ça. Le FineTrack Duo se recharge en USB-C, annonce environ 12 mois d'autonomie pour deux heures de charge, et surtout il fonctionne aussi bien sur iOS que sur Android grâce à sa double compatibilité Apple Find My et Google Find Hub, l'équivalent côté Google. L'idéal pour un foyer où cohabitent iPhone et téléphones Android. Son haut-parleur tape un peu moins fort, 80 décibels, et il embarque une certification de sécurité enfants contre l'ingestion.

Bref, trois traceurs intéressants, discrets et bien finis. Je recommande.

Heretic - Virer la censure d'une IA en une commande

Par : Korben ✨

Y'a des entreprises qui claquent des millions pour bien aligner leurs modèles d'IA afin qu'ils refusent toutes les questions sensibles qui font flipper nos amis puritains d'outre-Atlantique et y'a Heretic , un outil signé Philipp Emanuel Weidmann, qui balaye toute censure sur n'importe quel modèle en moins de 30 minutes avec une simple carte graphique de gamer.

Je vous explique... Vous devez avoir Python et une version récente de PyTorch sur votre machine, puis vous tapez pip install heretic-llm, puis heretic Qwen/Qwen3-4B-Instruct-2507 avec le nom du modèle que vous voulez décensurer.

Et l'outil fait alors sa vie et 20 à 30 minutes plus tard, vous récupérez une version du modèle qui a lâché prise sur l'essentiel de ses refus. Pas de dataset à préparer et surtout pas besoin de comprendre les entrailles d'un transformer, avec ce truc !

Dans un modèle aligné, le réflexe de refuser (le fameux "désolé, je ne peux pas vous aider avec ça") correspond souvent à une direction précise dans ses calculs internes. Les chercheurs appellent ça la "direction de refus". Et l'idée de l'abliteration, c'est de repérer cette direction et de la gommer des poids du modèle. En gros, on coupe le câble qui déclenche le "non", en touchant le moins possible au reste.

D'autres outils d'abliteration existaient déjà , mais leur réglage restait largement manuel et il y a aussi des gens comme mlabonne ou huihui-ai qui publient des modèles décensurés en ajustant les paramètres à la main, modèle par modèle, avec des résultats souvent inégaux. Mais Heretic, lui, automatise complètement le réglage. Pour cela, il s'appuie sur Optuna, un framework d'optimisation qui teste des dizaines de configurations et garde les meilleures tout seul. Et son seul objectif c'est de virer un max de refus tout en abîmant le moins possible le modèle d'origine.

Et de ce que je comprends, ça marche super bien ! Sur Gemma-3-12B, le modèle de Google de base refuse 97 fois sur 100 les prompts sensibles du benchmark maison. Mais après un petit passage dans Heretic, il tombe à 3 refus sur 100, soit le même niveau que les meilleures "nettoyages" manuels.

Et surtout, Heretic affiche une divergence de 0,16 là où les versions faites main grimpent à 0,45 voire 1,04 (C'est une mesure de l'écart de comportement sur les questions normales... plus c'est bas, mieux c'est).

Cela veut donc dire qu'il abîme beaucoup moins le modèle au passage.

Maintenant, tous les modèles n'y passent pas, car un gros calibre demande bien plus de VRAM et cela peut grimper à plusieurs heures. De plus, une étude comparative récente montre que le raisonnement mathématique est ce qui souffre le plus de ce genre d'abliteration, quel que soit l'outil utilisé.

Et surtout, y'a déjà des chercheurs qui bossent sur des défenses pour rendre les modèles résistants à ce genre d'attaque. Donc on verra bien, mais tant que c'est possible autant en profiter car des modèles sans bridage, ça permet notamment à des chercheurs d'étudier leurs propres failles, ou pour des usages du quotidien, de faire passer des demandes banales qui seraient bloquées (genre texte créatif, reverse engineering ou demande de conseils médicaux, ce genre de choses...)

Voilà, si vous bidouillez du LLM en local , allez voir ce projet car ça peut vous "ouvrir" quelques portes ^^.

Rocky - Le pote alien de Projet Dernière Chance débarque sur Raspberry Pi

Par : Korben ✨

J'sais pas si vous avez vu le film ou lu le livre mais Rocky, c'est l'araignée de roche extraterrestre de Projet Dernière Chance (Project Hail Mary) qui communique en chantant. Et Lahiru Maramba, un dev Firebase en poste chez Google, vient de le recréer en vrai avec un Raspberry Pi Zero 2W et un LLM local. Et voilà comme avoir un vrai pote Eridien posé sur votre bureau, qui vous répond en accords polyphoniques au lieu de parler.

L'architecture c'est ce que son concepteur appelle du "Voice Box & Brain". Le Pi Zero 2W tout seul est bien trop faiblard pour faire tourner un modèle de langage, du coup le Pi gère juste le hardware (micro, écran LCD, LED RGB, synthèse des accords) et balance l'audio brut à un Mac qui fait le gros du calcul. Le Mac transcrit ce que vous racontez avec mlx-whisper (un modèle Whisper-Tiny optimisé Apple Silicon), passe le texte à LM Studio qui fait tourner un Gemma 4 quantifié en local, et renvoie la réponse au Pi qui la joue en musique. Latence totale annoncée sur le repo, environ 2 secondes, soit, selon son propre benchmark, le même temps que via l'API Gemini dans le cloud, sauf que là, tout en local !

Le langage Eridien, lui, est fidèle au bouquin d'Andy Weir puisque chaque réponse est synthétisée en accords. Certains mots sont mappés sur des accords émotionnels précis, par exemple "amaze" sort en Mi majeur bien lumineux. Et pour les mots inconnus, ils sont hashés mathématiquement vers une signature de 3 fréquences, déterministe et permanente. Autrement dit, le même mot bizarre produira toujours exactement le même accord, comme un vrai vocabulaire qui se construit. C'est ce genre de petit détail qui fait la diff...

Côté matériel, il faut un Raspberry Pi Zero 2W et un PiSugar Whisplay HAT, un module tout-en-un qui apporte l'écran LCD, le bouton, la LED RGB et l'audio. De son côté, le repo propose 2 chemins d'install : la méthode "It Just Works" avec les drivers système précompilés (apt-get et c'est parti), ou la méthode isolée avec uv pour ceux qui veulent un environnement propre. Côté Mac, vous lancez LM Studio avec le modèle 4-bit quantifié sur le port 1234 et Y'a même un mode cloud avec une clé API Gemini si vous n'avez pas de Mac sous la main, ainsi qu'une fonctionnalité expérimentale planquée avec un générateur de sons façon R2-D2.

Pour la petite histoire, le film Projet Dernière Chance réalisé par Phil Lord et Christopher Miller est sorti en mars, avec Ryan Gosling en Ryland Grace et pour donner une voix à Rocky, les sound designers d'Hollywood ont tout simplement bossé avec un ocarina pour les aigus, une jarre pour les graves, et des chants de baleine, après avoir consulté Andy Weir sur l'anatomie du bestiau.

Je l'ai vu, et franchement, j'ai bien aimé. Je suis bien rentré dedans, même si j'aurais préféré que ce soit un peu plus "hard science" et un peu plus bidouille DIY comme l'était "Seul Sur Mars"... mais bon, il en faut pour tous les goûts.

Après si l'idée d'un compagnon IA DIY vous branche mais que vous voulez un truc plus généraliste et pas un Eridien qui chante, jetez un œil à Adeus , l'assistant IA personnel open source que j'avais couvert.

Quoiqu'il en soit, voici la vidéo complète où Lahiru montre tout le process, du câblage à Rocky qui prend vie :

Bref, c'est gratuit, c'est sous licence MIT, et le repo est juste ici .

Amusez-vous bien à construire votre petit pote Eridien !

TinyStories sur Game Boy Color - Le LLM le plus lent du monde

Par : Korben ✨

La bidouilleuse Maddie Dreese a réussi un sacré exploit les amis ! Elle a fait tourner un vrai modèle IA sur une Game Boy Color tout ce qu'il y a de plus basique.. Pas besoin de PC ni d'appels à un service tiers en ligne, mais simplement avec un peu de code qu'elle a mis sur une cartouche.

Le modèle qu'elle utilise s'appelle TinyStories-260K , et c'est un mini-LLM signé Andrej Karpathy (l'ex-Tesla et OpenAI), conçu à l'origine pour générer des petites histoires pour gamins.

Maddie n'a pas créé un modèle from scratch, mais elle a écrit le moteur (le transformer) qui fait tourner un modèle existant (TinyStories) sur la Game Boy. Le projet est sur GitHub et si vous voulez vous lancer, il vous faudra une Game Boy Color, un EZ Flash Junior (lien affilié) et une microSD pour flasher la ROM.

Côté bidouille, c'est assez velu. Je vous rappelle que le processeur de la Game Boy date de 1998 et ne sait pas faire de calculs avec des virgules. C'est pourquoi Maddie a dû reconvertir tout le modèle en nombres entiers pour qu'il puisse tourner. Et comme la mémoire de la console est ridicule, le contexte de la conversation est stocké directement dans la cartouche durant la génération.

Pour vous donner une idée des proportions, TinyStories-260K, c'est 260 000 paramètres. ChatGPT, lui, en a plusieurs centaines de milliards. Et comme le contexte est plafonné à 16 mots maximum, vous pouvez oublier les longues conversations. Bref, on est à des années-lumière de ce que votre PC pourrait faire tourner .

Et puis c'est lent. Genre vraiment trèèèès lent. Sans parler ce qui est produit comme texte en sortie, qui est souvent du charabia parce qu'à force de compresser la précision du modèle pour le faire rentrer dans la cartouche, il finit par perdre les pédales. Mais ça marche, et c'est tout ce qui compte !

Faut dire que pour une console qui faisait tourner Pokémon Or en 1999, c'est miraculeux ! Maddie de son côté, explique avoir pas mal utilisé Codex pour pondre le code, et le résultat est plutôt chouette.

Voilà, la Game Boy n'a jamais eu vocation à devenir un PC, à part peut-être avec le WorkBoy , le PDA fantôme dont je vous parlais y'a pas longtemps mais là, avec ce projet, elle s'en rapproche encore un peu plus...

ip66.dev - Une base de géoloc IP libre et compatible MaxMind

Par : Korben ✨

Hello les amis, voici ma petite trouvaille du jour, idéale pour ceux qui jouent en ce moment avec des adresses IP : ip66.dev . C'est une base de géolocalisation IP et entièrement libre, livrée au format MMDB (le même que celui de MaxMind) qui permet de remplacer direct un fichier GeoLite2 dans vos libs existantes (Python, Go, Node.js), sans toucher au code.

L'équipe de Cloud 66 maintient cette liste à jour sous licence CC BY 4.0 et tout est utilisable simplement en récupérant le fichier mmdb.

Pour le télécharger :

curl -LO https://downloads.ip66.dev/db/ip66.mmdb

Ensuite pour interroger une IP, l'outil mmdbinspect de MaxMind fera le job. Si vous l'avez pas déjà, une ligne suffit :

go install github.com/maxmind/mmdbinspect/cmd/mmdbinspect@latest
mmdbinspect -db ip66.mmdb 8.8.8.8

À l'intérieur de la réponse, vous trouverez le numéro et le nom de l'ASN, le pays avec son code ISO, le continent, en IPv4 et IPv6 :

Au lieu de moudre des heuristiques opaques, ip66 préfère tout simplement agréger des sources à partir des 5 registres régionaux (AFRINIC, APNIC, ARIN, LACNIC, RIPE NCC) pour les allocations, le BGP via RouteViews et RIPE RIS pour les vues publiques d'annonces, le RFC 8805 geofeed quand les opérateurs déclarent eux-mêmes leurs localisations, sans oublier GeoNames pour tout ce qui concerne les libellés.

Du coup chaque enregistrement dispose de son propre niveau de confiance (Very High, High, Medium, Low) selon la qualité de la source. Y'a même des marqueurs pour identifier les IPs VPN / Tor et compagnie.

Notez par contre, que c'est du country-level, et pas du city-level comme GeoIP2 City ou IPinfo Core, mais pour enrichir des logs, sortir des stats par pays ou bloquer un continent entier, c'est largement suffisant !

Et si vous voulez l'exposer en API plutôt que la requêter en local, ça se branche nickel sur le mmdb-server , un petit serveur Python qui sert les fichiers MMDB en HTTP. Vous lui pointez ip66.mmdb dans son dossier db/ et hop, c'est plié !

Bref, un fichier mmdb à DL, et votre serveur sait maintenant que 8.8.8.8 c'est l'oncle Google.

Une appli Android scanne tous les Raspberry Pi de votre réseau

Si vous avez plusieurs Raspberry Pi qui traînent chez vous, vous connaissez la galère du DHCP. Le routeur leur balance des IP différentes au gré des redémarrages, et impossible de savoir laquelle correspond à votre Pi-hole, votre Home Assistant ou votre média center sans aller fouiller dans l'interface admin du box.

Un développeur du nom de Philipp a sorti une appli Android qui résout ça en repérant automatiquement tous les Pi présents sur le LAN.

L'outil utilise deux méthodes de détection complémentaires. D'abord le MAC OUI, c'est-à-dire les premiers octets de l'adresse MAC qui identifient le constructeur du matériel. Tous les Raspberry Pi partagent une plage d'OUI réservée à la fondation, donc on peut les filtrer même au milieu d'une trentaine d'appareils connectés sur un même réseau.

Ensuite le mDNS, le protocole de découverte multicast qui permet à un Pi de répondre à raspberrypi.local même sans configuration serveur particulière.

L'appli n'est pas qu'un scanner. Elle embarque aussi les pinouts GPIO pour tous les modèles, du Pi 1 au Pi 5 en passant par le Zero et le Pico. Et quelques calculatrices électroniques pour les résistances, la loi d'Ohm et les diviseurs de tension. Du coup ça remplace les marque-pages que vous gardiez sur pinout.xyz et autres sites de référence quand vous bidouillez sur breadboard.

Le code est open source, dispo sur GitHub. Pas de pub. Suffisamment rare pour s'en réjouir, quand on voit les dizaines de scanners réseau sur le Play Store qui vous balancent une bannière toutes les trois secondes ou exigent une autorisation d'accès à votre carnet de contacts pour scanner un sous-réseau privé.

Philipp a clairement développé ça pour son usage personnel avant de le mettre à disposition, et ça se sent dans l'absence de fioritures.

À noter qu'il faut être sur le même sous-réseau Wi-Fi que les Pi pour que le scan fonctionne. Si vous avez segmenté votre réseau IoT, ce qui reste une bonne pratique côté sécurité, il faudra autoriser le multicast entre les VLAN ou faire le scan depuis un appareil branché côté domotique. Sinon le mDNS ne traverse pas et vous ne verrez que les Pi du segment courant.

L'intérêt va au-delà du simple gain de temps. Sur un parc Pi un peu costaud, savoir d'un coup d'oeil lesquels sont actifs permet de repérer rapidement un noeud qui a redémarré sans crier gare ou un conteneur tombé. Et pour ceux qui font du déploiement en série, c'est plus rapide que de scripter un nmap sur tout le /24.

Dans tous les cas c'est cool, un petit utilitaire qui résout un vrai problème quotidien et qui mérite sa place dans la boîte à outils de tout bidouilleur Pi. C'est par ici si ça vous branche .

Source : Hackaday

Slim - HTTPS local et tunnels publics, tout en un

Par : Korben ✨

Monter un serveur HTTPS local pour bosser sur du Next.js ou du Vite, ça reste étrangement chiant. Faut mkcert pour générer les certifs, faut éditer le /etc/hosts à la mimine, installer caddy ou nginx en reverse proxy par-dessus... bref, vous voyez le diiiiliiiire ! Heureusement, Kamran Ahmed , le mec derrière roadmap.sh, vient de balancer Slim , un binaire Go standalone qui fait tout ça d'un coup.

Et tant qu'à faire, il rajoute aussi des tunnels publics à la ngrok au cas où vous voudriez présenter votre travail de dev payé au lance pierre, à un client pressé.

L'idée c'est donc de taper : slim start myapp --port 3000 et hop, votre app tourne OKLM en local sur le port 3000 et devient accessible via https://myapp.test avec un certif totalement valide reconnu à 100% par votre navigateur.

Ça permet d'esquiver tout config manuelle, puisque le binaire crée une autorité de certification locale (CA) dès le premier lancement, signe ensuite les certifs par domaine, et met à jour /etc/hosts tout seul, sans oublier de rediriger les ports 80/443 sur 10080/10443 sans même avoir besoin de root.

Et cette CA est ajoutée au trousseau du système, donc votre Chrome, Safari ou Firefox (ze best !!) la considèrent immédiatement comme légitime, sans alerte de sécurité. Du tout-en-un comme je l'aime quoi !

L'install se fait en une ligne (pensez à regarder comme d'hab le contenu du fichier .sh avant de le lancer, je ne le répéterais jamais assez) :

curl -sL https://slim.sh/install.sh | sh

Ensuite, pour les domaines, vous avez le choix entre .test (par défaut), .loc ou .dev. Notez que Kamran a explicitement banni le .local parce que ce TLD est réservé à mDNS et que ça fout en l'air toute la résolution DNS sur macOS et Linux. Ouf !

Le routing par chemin est aussi de la partie. Si vous bossez sur une app Next.js qui tourne sur le port 3000 et une API séparée sur le 8080, vous pouvez tout router en 1 seule commande :

slim start myapp --port 3000 --route /api=8080 --route /ws=9000

Tout tape alors sur https://myapp.test, et c'est slim qui fait le découpage. Et si vous avez plusieurs services à orchestrer, un fichier .slim.yaml à la racine du projet permet de tout déclarer d'un coup et de lancer le bouzin avec slim up.

WebSocket et HMR sont également gérés nativement, donc ça marche direct avec Vite et Next.

Maintenant, l'autre moitié de l'outil c'est slim share --port 3000 --subdomain demo qui vous délivre une URL publique sur slim.show pour exposer votre localhost sur le net. Vous pouvez ainsi ajouter un mot de passe, un TTL d'expiration, voir les logs en direct... bref, c'est du ngrok-like classique mais déjà inclus dans le même binaire ce qui évite d'aller vous créer un compte séparé. Suffit de lancer un slim login pour activer le partage public.

Alors Slim c'est cool mais y'a pas de support Windows officiel pour l'instant... ce sera donc macOS ou Linux uniquement.

Et si vous êtes sur des stacks où vous avez déjà investi dans Tunnelto pour son dashboard d'introspection HTTP ou dans Tunnl.gg pour son approche zéro-client, slim n'apportera pas forcément de quoi migrer. Mais si vous galérez à empiler mkcert + caddy + ngrok à chaque nouveau projet, c'est pil poil ce qu'il vous faut.

Le code est sur GitHub et un grand merci à Philobois pour le partage !

Talkie-1930 - Le LLM qui pense qu'on est en 1930

Par : Korben ✨

Une IA qui pense que 2026 ressemble à un monde fait de bateaux à vapeur et de vastes réseaux ferroviaires, et qui considère qu'une seconde guerre mondiale est très peu probable... voilà Talkie-1930, le nouveau modèle de langage à 13 milliards de paramètres lancé par Nick Levine, David Duvenaud et Alec Radford (l'un des architectes de GPT-2 chez OpenAI).

LE truc avec ce modèle d'un nouveau genre, c'est qu'il n'a JAMAIS lu un mot écrit après le 31 décembre 1930. Pas de Wikipedia, pas de Reddit, pas de GitHub....et j'en passe.

Si ça vous branche, vous pouvez tester la démo direct sur talkie-lm.com/chat , et les poids sont dispos sur HuggingFace sous licence Apache 2.0 !

Alors pourquoi 1930 et pas 1950 ou 1900 ?

Hé bien tout simplement parce que c'est la date précise à laquelle les œuvres tombent dans le domaine public aux États-Unis. L'équipe a donc pu aspirer 260 milliards de tokens de livres, journaux, périodiques, revues scientifiques, brevets et jurisprudence antérieurs à cette date sans risquer la moindre poursuite légale.

Et c'est là que ça devient amusant parce que quand on demande à Talkie-1930 de décrire le futur, il imagine comme je vous le disais en intro, un monde dominé par les bateaux à vapeur et les trains et c'est logique car c'était l'horizon technologique de son corpus à l'époque. Le modèle considère aussi qu'une seconde guerre mondiale est improbable (il ne connaît évidemment que la Première) et du coup, ça donne un terrain d'expérimentation fascinant pour étudier le raisonnement temporel et la généralisation hors distribution moderne.

L'équipe a publié trois checkpoints : talkie-1930-13b-base (modèle brut), talkie-1930-13b-it (pour le chat) et talkie-web-13b-base (un jumeau d'architecture identique mais entraîné sur FineWeb à titre de comparaison). Cette approche "modèle jumeau" permet par exemple de mesurer précisément ce qui vient de l'architecture vs ce qui vient des données.

Pour la phase de post-training, l'équipe a utilisé Claude Sonnet 4.6 comme juge dans une procédure DPO (Direct Preference Optimization). Ils ont également généré des conversations synthétiques entre Claude Opus 4.6 et Talkie pour le fine-tuning supervisé. Bref, c'est un modèle ultra-vintage entraîné à l'aide de modèles ultra-modernes.

L'équipe travaille déjà sur un système OCR custom pour les documents historiques (les OCR conventionnels n'atteignent que 30% de l'efficacité d'apprentissage face à du texte transcrit manuellement) et vise un modèle de niveau GPT-3 pour l'été 2026, avec un corpus pouvant atteindre plus d'un trillion de tokens.

Bref, Talkie-1930 c'est un projet de recherche assez chouette pour tous ceux qui aiment creuser les LLMs. Le code est sur GitHub sous Apache 2.0, et la démo en ligne marche très bien si vous voulez juste tester sans installer.

Amusez-vous bien !

Source

Un tracker Bluetooth à 5 euros dans une carte postale a suffi à localiser une frégate néerlandaise

Par : Korben

5 euros. C'est le prix du tracker Bluetooth qu'un journaliste néerlandais a caché dans une carte postale et envoyé à une frégate de la marine royale des Pays-Bas. Le navire, le HNLMS Evertsen, est un bâtiment de défense antiaérienne affecté à la protection du porte-avions français Charles de Gaulle en Méditerranée. Sa valeur est estimée à 585 millions de dollars.

Le journaliste, de la chaîne régionale Omroep Gelderland, a simplement utilisé le système postal officiel que le ministère de la Défense néerlandais met à disposition pour envoyer du courrier aux soldats et marins en mission.

Les instructions sont publiques, détaillées, et librement accessibles en ligne. Les cartes postales et enveloppes ne sont pas passées aux rayons X, contrairement aux colis. Du coup, le tracker est arrivé à bord sans être détecté.

Le tracker a fonctionné pendant environ 24 heures. Il a montré le navire quittant le port d'Héraklion en Crète, naviguant d'abord vers l'ouest le long de la côte, puis bifurquant vers l'est en direction de Chypre. Pour un groupe aéronaval en mission, la position d'un navire d'escorte est une information opérationnelle sensible, et un adversaire qui sait où se trouve l'Evertsen peut en déduire la zone probable du porte-avions Charles de Gaulle.

Le ministère de la Défense a réagi en interdisant les cartes de voeux contenant des piles dans le courrier militaire, forcément. C'est la réponse directe au test bien sûr, mais bon, l'info qui gêne le plus c'est que le système de courrier militaire néerlandais ne filtre pas le contenu des enveloppes classiques, c'est un peu étonnant.

Bref, seulement 5 euros de matériel et un timbre ont suffi à localiser un navire de guerre en pleine mission. Le rapport coût-efficacité est quand même étonnant.

Source : Business AM

llmfit - L'outil qui sait quel LLM votre PC peut encaisser

Par : Korben

Vous avez un super GPU de la mort qui tue et vous voulez faire tourner un modèle d'IA en local, mais entre la VRAM dispo, la quantification qui change tout et les 500 modèles existant... c'est tout simplement le bordel pour savoir lequel va passer crèèème sans faire ramer votre machine. On galère tous à tester des modèles au pif en voyant la RAM exploser, mais aujourd'hui on a une solution.

Car c'est exactement le problème que résout llmfit , un outil en Rust qui scanne votre hardware et vous classe les modèles compatibles par score. GPU NVIDIA, AMD, Intel Arc, Apple Silicon, sur macOS, Linux ou Windows, tout y passe ! Sur mon Mac, cette commande détecte instantanément la VRAM unified memory, les cœurs CPU et le type de GPU dans mon système, puis elle passe en revue sa base d'environ 500 modèles HuggingFace pour me dire lesquels tournent chez moi.

L'interface llmfit dans un terminal, sobre et efficace

Du coup, chaque modèle est évalué sur 4 axes : qualité, vitesse, occupation mémoire et capacité de contexte. En fait, le scoring s'adapte à votre usage, si vous voulez du chat rapide, la vitesse pèse plus lourd, et si c'est du raisonnement, c'est la qualité qui prime. À vrai dire, c'est plus malin que de comparer bêtement les paramètres sur la page HuggingFace. Et la quantification est choisie dynamiquement, de Q8_0 (la plus fidèle) jusqu'à Q2_K (la plus compressée), histoire de caser un max de trucs dans votre config.

L'interface par défaut c'est un TUI (une interface dans le terminal) avec navigation à la vim (j/k, /, tout ça) qui affiche un tableau avec les scores dans votre terminal. Pour le mode CLI, y'a llmfit --cli, et pour ceux qui veulent intégrer ça dans un pipeline, un petit llmfit serve et ça lance un serveur REST sur votre machine.

Le truc vraiment sympa je trouve c'est surtout la simulation hardware. Vous appuyez sur S dans le TUI et vous testez d'autres configs sans rien changer à votre machine. Genre "et si j'avais 24 Go de VRAM au lieu de 8 ?". Ça évite d'acheter une nouvelle carte graphique pour rien, quand on peut vérifier en deux secondes que la config actuelle suffit déjà amplement pour son usage quotidien de chat et de génération de petits scripts en local au fil de la semaine. Pas mal non ?

Y'a aussi le mode plan qui fait l'inverse, vous donnez un nom de modèle et l'outil vous dit de quel hardware vous avez besoin. D'ailleurs si vous êtes sur Mac et que l'IA en local vous branche, n'oubliez pas au passage que apfel vous permet de libérer le modèle caché dans macOS.

Côté installation, brew install llmfit sur Mac, scoop install llmfit sous Windows, ou un curl -fsSL https://llmfit.axjns.dev/install.sh | sh partout ailleurs. Une commande, c'est tout. Et ça tourne aussi en Docker !

Le support multi-GPU est également là avec agrégation de la VRAM, et l'outil tient compte des architectures MoE comme Mixtral dans son scoring (ces modèles ne chargent pas tous leurs experts d'un coup, du coup la VRAM nécessaire est plus faible qu'on pourrait croire). L'outil propose aussi 10 thèmes de couleurs, Dracula, Nord, Catppuccin... pour ceux qui ont des opinions sur les palettes de leur terminal.

Par contre y'a un hic, la base est figée à environ 500 modèles embarqués dans le binaire, donc si un nouveau modèle sort demain, faudra attendre la prochaine release. Et disons que les estimations de vitesse sont des ordres de grandeur, pas des valeurs exactes (difficile de faire mieux sans lancer vraiment l'inférence). Mais bon, pour les classiques comme Llama, Qwen, Mistral ou Gemma, c'est bien couvert. Et bien sûr, le projet est open source sous licence MIT, donc c'est chouette comme dirait le hibou (déso, pas déso ^^).

Si llamafile vous avait déjà simplifié le lancement de modèles, llmfit s'attaque au problème d'avant : choisir LEQUEL lancer.

Bref, ça vaut le coup de tester, dites-moi quel modèle ça vous recommande !

CATAI - Des chats pixel art boostés à l'IA sur votre dock

Par : Korben

Des chats en pixel art qui se baladent sur votre dock macOS et qui causent grâce à un LLM local... non vous ne rêvez pas car c'est ce qu'on peut obtenir avec CATAI , qui vous fera adopter 6 matous virtuels avec chacun sa personnalité.

En gros, c'est le Tamagotchi de votre dock, sauf qu'au lieu de biper quand il a faim, il vous cite du Nietzsche. Vous lancez l'app, et hop, un chat orange débarque. Il marche, il mange, il dort, il s'énerve... soit 368 sprites dessinés à la main (c'est devenu assez rare pour le souligner !!). Et quand le dock est masqué, le chat se téléporte directement sur le bord supérieur de votre fenêtre active. Parce que vous le savez, un chat, ça squatte toujours les rebords les plus improbables.

Vous pouvez en coller jusqu'à 6 en même temps, chacun avec sa couleur et son caractère. Le noir (Ombre) est philosophe et vous pose des questions existentielles, le blanc (Neige) s'exprime en vers, le gris (Einstein) vous balance des faits scientifiques et le brun (Indiana) raconte des aventures. De temps en temps, ils miaulent tout seuls dans des bulles pixel art. "Mrrp !", "Prrr...", "ronronronron". Perso, je trouve ça craquant.

Et quand vous cliquez sur un chat, ça ouvre une bulle de discussion connectée à Ollama (le moteur d'IA locale que vous connaissez sûrement). Si vous avez déjà un modèle qui tourne, votre matou vous répond alors avec sa propre personnalité. La mémoire de conversation est même persistante entre les sessions (max 20 messages par chat, pour garder un contexte de conversation raisonnable).

Comme c'est du Swift pur, juste les Command Line Tools suffisent pour compiler le fichier source :

swiftc -O -o cat cat.swift -framework AppKit -framework Foundation

La compilation prend genre 3 secondes sur un M1, et le binaire pèse dans les 500 Ko, soit moins qu'une photo iPhone. Y'a aussi un build.sh qui crée un .app propre avec son icône si vous préférez.

Les plus anciens d'entre vous se souviendront peut-être de Neko, le petit chat qui courait après votre curseur, porté sur Mac en 1989 par Kenji Gotoh. L'un des premiers desktop pets connus. Sauf que là, comme on est en 2026, le chat vous fait la conversation via un LLM local. Si vous bidouillez déjà avec Ollama ou que vous avez découvert le LLM caché de votre Mac , c'est un usage auquel vous n'aviez probablement pas pensé.

Notez que sans Ollama, ça fonctionne, les chats se baladent mais restent muets (ce qui est déjà sympa en soi). Et si vous collez un modèle trop lourd genre un 70B, ça va ramer vu que le streaming passe par localhost. Un petit Qwen 2.5 ou Llama 3.2 3B fait largement le taf pour des réponses de chat en 2-3 phrases.

Merci à William pour la découverte.

Gemma Gem - Un agent IA dans Chrome, 100% local

Par : Korben

Les extensions Chrome qui promettent de l'IA, ça pullule de ouf et à vrai dire, la plupart se contentent d'envoyer vos données sur un serveur distant. C'est naze ! Heureusement, l'extension Gemma Gem prend le problème à l'envers puisque son modèle tourne directement dans votre navigateur via WebGPU, sans clé API, sans cloud, et vos données ne sortent jamais de votre machine. C'est comme le kir, royal !

Comme c'est pas sur le Chrome Web Store, faudra la builder vous-même... Vous clonez le repo, vous lancez pnpm install puis pnpm build et vous chargez le dossier dans chrome://extensions en mode développeur et ensuite, elle téléchargera le modèle de Google (environ 500 Mo pour la version légère, genre le poids d'un gros jeu mobile), et pif paf pouf, ensuite vous aurez un agent IA qui vit sa best life dans votre Chrome.

Cliquez alors sur l'icône en bas à droite, une fenêtre de chat s'ouvre et vous pourrez interroger n'importe quelle page. Et si vous préférez un modèle plus costaud, l'E4B pèse 1,5 Go et permet d'obtenir des réponses plus fines.

Sauf que c'est pas juste un chatbot de plus. En effet, l'extension fait du tool calling en boucle à l'aide de 6 outils : read_page_content, click_element, type_text, scroll_page, take_screenshot et run_javascript. Elle peut ainsi lire une page, cliquer sur des boutons, remplir un formulaire et même balancer du JavaScript dans le contexte de la page.

Comme l'inférence WebGPU ne peut pas tourner dans un service worker Chrome (y'a pas d'accès au GPU, c'est une limitation connue depuis des années), le développeur a trouvé une parade : il utilise un offscreen document, c'est-à-dire une page HTML invisible que Chrome maintient en arrière-plan et qui, elle, a accès au GPU. Résultat, le modèle calcule dans cette page fantôme, le service worker joue le facteur entre les morceaux, et le content script affiche le chat. Je trouve ça bien pensé comme découpage !

Toute la boucle d'agent (le code qui décide quand appeler un outil et quand répondre) est isolée dans un dossier agent/ sans aucune dépendance Chrome. Cela veut dire que vous pouvez prendre ces 5 fichiers .ts (agent-loop.ts, prompt-builder.ts, tool-parser.ts, types.ts et index.ts), les coller dans un projet Node.js ou Deno, et hop, vous avez votre propre boucle agentique. Yaniv Kessler, le développeur a pensé le truc pour que ça serve ailleurs.

Les deux variantes (E2B et E4B) sont compressées en q4f16 avec 128K tokens de contexte en théorie, même si en pratique la fenêtre effective dépend de votre VRAM. Cela dit, c'est largement de quoi avaler une page web complète sans broncher ! Et le modèle reste en cache après le premier téléchargement, du coup au deuxième lancement, c'est quasi instantané. Par contre, si vous êtes sur un vieux Chromebook avec un Intel UHD intégré et 4 Go de RAM, ça risque de mouliner à fond. Et sur Firefox (qui est le meilleure navigateur du monde, comme je n'ai de cesse de vous le dire), le WebGPU est encore un peu expérimental, donc pour l'instant ce sera Chrome ou rien... Sniiif.

Si vous avez déjà testé des extensions comme Localsumm qui faisaient tourner Phi-3 en local pour résumer des pages, disons que Gemma Gem pousse le concept beaucoup plus loin avec ses capacités d'agent. Et si le sujet de l'IA locale dans le navigateur vous branche, jetez un oeil à Clippy qui fait tourner des LLM localement sur votre desktop.

Notez quand même que sur Hacker News, le projet a déclenché pas mal de débat. Certains pointent le risque du tool run_javascript qui donne au modèle les pleins pouvoirs sur le DOM (genre, supprimer des trucs ou poster un formulaire à votre place). C'est vrai que c'est important mais bon, c'est le même modèle de permissions que n'importe quel script web classique, sauf que là au moins vos données restent chez vous.

Bref, 500 Mo de modèle, pas de cloud, et votre navigateur qui devient plus autonome que votre fils de 22 ans. Pas mal non ?

Apfel - Le LLM caché de votre Mac enfin libéré

Par : Korben

J'sais pas si vous saviez mais Apple a planqué un LLM dans votre Mac et ne veut pas que vous y touchiez... enfin, pas directement. En effet, leur modèle est là, intégré au système via le framework FoundationModels, il tourne sur le Neural Engine sans connexion internet mais Apple l'a verrouillé derrière Siri. Du coup, impossible de l'appeler depuis un script ou un pipe shell et c'est là qu' apfel intervient !

L'outil s'installe en une commande :

brew install Arthur-Ficial/tap/apfel

Et hop, vous avez accès au modèle directement depuis votre terminal. Faut Apple Intelligence actif également, sinon, ça ne fonctionnera pas.

Ensuite, vous lui posez une question, et il vous répond. Vous lui "pipez" un fichier, et il le traite. Et le tout sans rien télécharger puisque le modèle est déjà sur votre machine !

C'est un LLM de 3 milliards de paramètres, quantifié en 2 et 4 bits, qui tourne nativement sur la puce Apple Silicon (M1 et au-delà) et il se défend plutôt bien face à Qwen-2.5-3B, si on en croit les benchmarks. La fenêtre de contexte est limitée à 4096 tokens (entrée + sortie combinées), soit environ 3000 mots, donc faut pas espérer lui faire digérer un roman mais pour transformer du texte, classifier des données ou résumer un paragraphe... ça fait bien le taf.

Apfel expose donc ce modèle de trois façons différentes. En CLI pure (compatible stdin/stdout, sortie JSON, codes d'erreur propres), en serveur HTTP compatible OpenAI sur localhost:11434 (avec streaming SSE, tool calling et CORS activé), et en chat interactif multi-turn.

Le serveur OpenAI c'est malin parce que d'un coup, tous vos outils savent causer à l'API OpenAI (Cursor, Continue.dev, n'importe quel SDK) et peuvent utiliser l'IA locale de votre Mac sans rien changer à leur code. Et le support MCP (Model Context Protocol) natif c'est très chouette aussi puisqu'il suffit de lancer apfel avec le flag --mcp, pour qu'il découvre automatiquement les outils disponibles, exécute les appels et renvoie les résultats.

D'ailleurs côté vie privée, c'est du béton armé car le framework FoundationModels d'Apple n'a pas accès à vos contacts, emails, calendrier ou photos et tout tourne sur le Neural Engine et le GPU, sans connexion internet.

Si vous avez déjà bidouillé avec Ollama et les modèles locaux , apfel c'est un peu la même philosophie... sauf que là vous n'avez rien à télécharger et contrairement à Perspective Intelligence qui transforme votre Mac en serveur web avec PostgreSQL et tout le tralala, apfel reste hyper minimaliste.

Attention quand même, faut être sous macOS 26 Tahoe minimum donc si vous êtes encore sous Sequoia 15.x ou Ventura 13.x, c'est mort, le framework FoundationModels n'existe pas sur ces versions. Et si vous avez un Mac Intel... ben non plus, le Neural Engine c'est Apple Silicon only.

Le projet inclut aussi des scripts démo sympas dans le dossier demo/.

Y'a par exemple cmd qui convertit du langage naturel en commandes shell, explain qui décortique les messages d'erreur, gitsum qui résume vos commits récents, ou encore mac-narrator qui commente l'activité de votre système en temps réel (c'est votre Mac qui se raconte à lui-même).

Perso, cmd c'est celui qui m'a le plus plu, même si bon, avec 4096 tokens de contexte, faut pas lui demander des commandes ffmpeg de 200 caractères.

Mais au-delà des démos, c'est en vrai que ça devient fun. Je vous montre quelques usages classiques d'abord :

apfel -f README.md "Résume ce projet en 3 phrases"

apfel -f code.py -s "Tu es un développeur expérimenté" "Trouve les bugs"

echo "Traduis ça en allemand : Salut" | apfel

Et les trucs un peu plus funs :

git diff HEAD~1 | apfel -f CONVENTIONS.md "Review ce diff par rapport à mes conventions"

apfel -f old.swift -f new.swift "Qu'est-ce qui a changé entre ces deux fichiers ?"

demo/oneliner "compte les IPs uniques dans access.log"

Vous pouvez même piper la sortie en JSON pour chaîner avec jq, ou lancer le mode --serve et brancher Cursor dessus pour avoir de l'autocomplétion locale gratuite. Et si vous êtes du genre parano, le mode --chat avec --context-strategy summarize gère automatiquement le contexte quand la conversation dépasse les 4096 tokens.

Et côté écosystème, y'a aussi apfel-gui (une interface SwiftUI native pour chatter avec le modèle, avec speech-to-text et text-to-speech on-device) et apfel-clip qui est en développement (ce sont des actions IA qui s'ajoutent dans la barre de menus pour corriger la grammaire, traduire, résumer) et le tout sous licence MIT, évidemment.

Bref, c'est un super modèle mais avec 3 milliards de paramètres et 4096 tokens de contexte, faut pas s'attendre non plus à remplacer Claude ou GPT. Les maths complexes, la génération de code avancée et les longues conversations, c'est pas son truc mais pour du scripting, de la classification ou transformer du texte à la volée... ça dépanne carrément !

Et ce modèle préfère refuser plutôt qu'halluciner, ce qui est plutôt une bonne surprise je trouve. Voilà, si vous avez un Mac Apple Silicon sous macOS Tahoe, apfel et ses outils valent le coup d'œil pour vos petites tâches IA basiques / rapides de tous les jours.

❌