Depuis ce printemps, sachez qu'un git clone ordinaire peut maintenant récupérer un dépôt qui n'existe sur aucun serveur spécifique. En fait, le code est stocké dans Freenet, le réseau pair-à-pair qu'Ian Clarke a relancé en mars. Et comme y'a plus d'hébergeur, bah y'a plus personne pour fermer un compte ou shooter le dépôt.
Car Git est décentralisé depuis toujours et fonctionne très bien comme ça, puisque chaque clone contient l'historique complet, ce qui permet à 2 clones de se synchroniser directement. Ce qui lui manquait par contre, c'était l'hébergement, et c'est là-dessus que les forges que nous connaissons, Github en tête, sont venues capitaliser. Y'a bien des initiatives comme
Grasp qui essaie d'en sortir grâce au protocole Nostr
mais
freenet-git
lui range carrément le dépôt dans un contrat que les nœuds recopient, et se publie lui-même à l'adresse freenet::99TmCayXn6Tm/freenet-git.
Cloner ou publier du code exige donc le paquet freenet-git et un nœud qui tourne sur votre machine, ce qui fait qu'on ne supprime pas vraiment le serveur, mais on le ramène juste chez soi.
Le socle compte plus que l'application dans cette présentation. Les contrats et les delegates forment la couche où une app tourne sans backend, et quatre tournent déjà dessus : River pour le chat de groupe, Delta pour les sites, Atlas pour la recherche, et freenet-git pour le code. Mail, Raven et Harvest existent aussi, à un stade plus jeune.
L'adresse du dépôt sort des 12 premiers caractères de la clé publique de son propriétaire, et à ce stade expérimental, lui seul peut pousser dedans. Y'a pas non plus de pull requests, ni d'issues puisque c'est le modèle du noyau Linux d'avant les forges, où chacun publie son clone et le mainteneur vient y piocher ce qui l'intéresse.
Reste le plus dur maintenant, retrouver un dépôt.
Car sans annuaire, un nœud doit deviner lequel de ses voisins mettra le moins de temps à trouver ce qu'on lui demande. Le réseau traite ça comme un problème d'apprentissage et parie sur le bon voisin à partir des requêtes passées grâce à Renegade, une bibliothèque open source sortie en 2021, capable de faire ce calcul.
Il faut une chaîne Rust, et ~/.cargo/bin doit être dans votre PATH. Les installeurs du nœud sont sur freenet.org/quickstart.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Rust n'entre dans le PATH qu'au shell suivant, donc ouvrez un nouveau terminal avant la commande d'après. Elle dépose deux binaires, freenet-git et le remote helper que Git appellera tout seul.
cargo install freenet-git
Aucune identité n'est nécessaire pour lire. La bibliothèque standard de Freenet fait un bon test, elle porte son historique complet et ses tags.
git clone freenet::96rknpy1GYhZ/freenet-stdlib
C'est create qui publie réellement le contrat. Il affiche PUT confirmed by host et l'adresse du dépôt, dont le préfixe se recopie dans le remote. La phrase de passe voyage par une variable d'environnement parce que Git garde la main sur l'entrée standard durant le push.
freenet-git init-identity --name "Votre Nom" --email vous@example.com
cd ~/code/mon-projet
freenet-git create --name mon-projet
# -> URL: freenet:VOTRE_PREFIXE/mon-projet
git remote add freenet freenet::VOTRE_PREFIXE/mon-projet
export FREENET_GIT_PASSPHRASE='votre-phrase-de-passe'
git push freenet main
Et voilà ! Avec ça vous pouvez faire du vrai git décentralisé même si la vraie limite est ailleurs...
En effet, les nœuds gardent en cache ce qu'on leur réclame et évacuent le reste, donc un dépôt que personne ne clone finit au bout d'un moment par ne plus être clonable. Et ça c'est dommage... C'est pourquoi une commande (rescue), le remet en circulation depuis une machine qui a encore les données. Le projet ne présente toutefois pas ça comme un bug, mais comme son modèle de durabilité actuel.
Mais autant le savoir avant d'y déposer votre code.
![]()
Aujourd'hui je vais vous parler d'un jeu de karting façon Mario Kart qui fonctionne sans moteur 3D et sans même une seule ligne de code.
En réalité, il s'agit d'un modèle de 130 millions de paramètres qui est capable de deviner à quoi doit ressembler l'image suivante. Cela a été mis en ligne hier soir par Asankhaya Sharma, c'est le gars derrière OptiLLM . Ça s'appelle Neural Drive et ça imite Super Tux Kart , le Mario Kart libre dont je vous ai déjà parlé.
Neural Drive est donc un modèle qui regarde les sept dernières images ainsi que les touches que vous enfoncez sur votre clavier. Son job c'est simplement de peindre l'image suivante. Ainsi, si vous appuyez sur la flèche du haut, il dessinera une carte qui avance, si vous tournez à gauche, il dessinera un virage...etc.
Donc, il n'y a aucun code derrière, c'est juste une hallucination que vous pilotez en 384 x 192.
Les 262 Mo du fichier ONNX se téléchargent dans votre onglet et c'est votre carte graphique qui transpire ensuite, avec le WebGPU. Il y a donc zéro serveur derrière, exactement comme l'agent Gemma que je vous montrais en avril .
Je l'ai testé chez moi sur mon Mac Studio dans Firefox et je suis à 2,5 frames par seconde, ce qui représente 405 millisecondes de génération par image sur mon GPU Apple. Donc autant vous prévenir qu'à ce rythme-là c'est injouable. Vous appuyez sur une touche, le monde se redessine mollement, et vous conduisez comme dans un rêve où vos jambes ne répondent plus... Mais ça reste dingue quand même !
Sharma annonce que sur les MacBook M récents on peut obtenir environ 10 images par seconde, et sur des GPU ça devrait approcher le temps réel, 15 à 20 images par seconde. L'écart avec ma mesure vient sûrement du fait que je suis en train de compiler tout un tas de conneries au moment où j'écris cet article... donc testez plutôt que de me croire sur parole. Et si vous êtes sur mobile, les petits boutons sous l'écran servent de contrôles tactiles, si vous avez de la patience.
Aucune de ces images n'existe dans un fichier de jeu. Le chrono en haut à droite est illisible parce que le modèle le repeint à chaque frame.
Le plus marrant, c'est tout ce qu'il vous dessine en plus de la route. Il régénère aussi l'interface : le compteur de tours, la minimap en bas à gauche, les petites têtes de Tux empilées sur le côté, le chrono en haut à droite. Sauf qu'il ne sait pas ce qu'est un chrono. Du coup les chiffres bavent, se réécrivent tout seuls, vous annoncent un tour 1 sur 300 ! Ce modèle ne compte pas le temps écoulé, il peint simplement des pixels qui ressemblent à du temps. Et pendant ce temps-là le décor fond carrément en haut de l'image, avec des bouts de falaise qui coulent dans le ciel.
Côté cuisine, c'est un LatentDiT de 130,8 millions de paramètres (768 de dimension, 12 couches) posé sur un petit ConvVAE qui compresse l'image d'un facteur 8. Le gros du boulot d'optimisation c'est que le modèle d'origine avait besoin de 8 étapes de débruitage par image, et la version distillée n'en fait plus que 2. C'est ce qui vous fait passer de "démo qui rame" à "démo qui rame un peu moins". Vous démarrez à l'une des 18 positions pré-enregistrées dans un fichier de seeds, et si votre navigateur n'a pas WebGPU, ça bascule sur le CPU avec un message d'avertissement sans ambiguïté : "prêt (CPU, ce sera lent)".
Vous avez aussi les poids PyTorch, dont le checkpoint non distillé de 523 Mo, si l'envie vous prend de bidouiller l'entraînement. C'est la même famille d'idées que DIAMOND, l'IA qui rêve pour mieux jouer , ou que Mirage 2 , sauf qu'ici tout a été ramené à la taille d'une page web. Le kart ne pèse plus que 262 Mo et tient dans un onglet de navigateur !
Bref, c'est une démo, pas un jeu. Mais c'est la première fois que je fais tourner un monde entier chez moi sans envoyer un seul octet à un serveur.
Ça se teste ici , et les poids sont là .
![]()
Un humanoïde qui traverse un immeuble, appelle l'ascenseur, ouvre un colis avec un outil et range les courses dans un tiroir, tout seul, et sur une seule consigne qui lui est donnée en langage naturel, ce n'est pas de la sorcellerie ! Non, c'est la démo qu'a sortie Flexion Robotics , une startup suisse, qui lance Reflect v1.0, son nouveau "cerveau" IA pour robots.
Car Flexion ne fabrique pas de robots. Cette spin-off zurichoise, fondée en 2024 par d'anciens chercheurs Nvidia, vend du logiciel, une couche d'intelligence qui se pose sur un humanoïde existant et le pilote de bout en bout.
Là où Alibaba donne un corps à son IA avec une suite logicielle complète, Flexion ne vise que le cerveau. Vous écrivez ce que vous voulez en langage naturel, et le robot part faire sa vie pour vous satisfaire au mieux. Vous pouvez même changer la consigne en plein vol, du genre "non, reviens par ici" et il abandonnera tout pour revenir dans vos bras.
En général, en robotique (comme avec les LLMs finalement...), l'autonomie longue sur les tâches, c'est l'enfer. Une mission de 16 étapes, des erreurs qui s'enchaînent et paf, tout s'écroule. Alors pour encaisser ça, ils ont entraîné leur propre modèle de vision-langage, un chef d'orchestre qui surveille, raisonne et replanifie en direct. Et ils ont misé sur l'apprentissage par renforcement à tous les étages, du mouvement fin jusqu'à la décision. Et voilà comment (en labo), ils passent de 38 % à 90 % de réussite sur ce genre de missions longues.
Ensuite côté capacités, c'est du costaud puisqu'on a un robot qui manipule des colis de 100 g à 3,5 kg, repositionne les cartons, appuie sur les boutons d'ascenseur au centimètre près, utilise des outils, enchaîne les escaliers et slalome entre les obstacles avec sa charge. Et quand il rate une prise, s'pas grââve, il retente ou replanifie sa route grâce à ses caméras.
En ce moment, les annonces d'humanoïdes pleuvent en Chine... On a eu par exemple Agibot qui affiche 99 % de succès sur une démo usine de six jours, ShengShu qui présente Motubrain , son cerveau unifié, et ça ne risque pas de s'arrêter, sans parler des robots chinois un peu plus bas de gamme, revendus en marque blanche qui commencent à pulluler comme les aspi robots ou les tondeuses autonomes...
À voir maintenant si l'un d'eux ira un peu trop loin en milieu ouvert... En attendant, Flexion est très honnête puisque la société explique que Reflect v1.0 reste limité à des tâches bien définies, et qu'ils ne sont pas encore prêts pour l'autonomie universelle... pour l'instant.
Source : Interesting Engineering
![]()
Si vous faites un peu de reverse engineering sous Android, vous savez que les malwares modernes font absolument tout ce qu'ils peuvent pour planquer leurs mauvaises intentions, un peu comme vos parents toxiques... Code obfusqué, chargement dynamique, packing...etc, etc.
Mais c'était sans compter sur une équipe de chercheurs italiens menée par Giorgio Giacinto ont carrément changé de stratégie avec RAMwavDroid qui au lieu de désassembler le code , permet de le transformer en son et ensuite, laissent une IA l'écouter. Et cela permet d'obtenir un niveau de 98% de détection des malwares.
J'vous explique la sorcellerie de ce truc...
En effet, d'habitude, pour analyser une appli Android, on décompile l'APK et on récupère le code, notamment des fichiers smali, un équivalent lisible par un humain du code bas niveau Dalvik.
Mais avec leur RAMwavDroid, vous prenez le fichier, et chaque octet, qui vaut une valeur entre 0 et 255, devient directement une amplitude sonore. Pas de normalisation, ni de désassemblage mais simplement une forme d'onde, stockée dans un vrai fichier WAV ou MP3 + des réseaux de neurones qui apprennent à reconnaître la texture sonore d'un malware.
Le transformer utilisé, c'est Wav2Vec2, qui était même à la base entraîné sur de la voix humaine.
Comment RAMwavDroid transforme les octets d'une appli en forme d'onde
Mais alors pourquoi passer par le son ?
Hé bien parce que les antivirus classiques s'appuient sur le "sens" du programme, ses permissions, ses appels API, la structure de son code...etc. Or c'est exactement ça que les vrais malwares un peu filous brouillent pour passer entre les mailles. Alors que la texture brute des octets, elle, reste la même, peu importe l'habillage que son concepteur a donné à son malware.
Et ça, une oreille artificielle finit par le repérer.
Mais le vrai coup de génie c'est que plutôt que d'analyser le fichier au repos, RAMwavDroid lance l'appli dans un émulateur et prend un instantané de sa mémoire vive juste après le démarrage. Ça permet de parcourir les fichiers chargés en mémoire, les processus, et surtout le code que le packing a déjà déchiffré pour pouvoir s'exécuter. Cette analyse forensique de la mémoire fait alors grimper la précision de près de 94% en statique à jusqu'à 98% en dynamique.
Le spectrogramme d'une appli malveillante, vu comme un son
Sur un extrait de dataset de malwares utilisé pour leurs tests, composé de 600 applis (moitié saines moitié vérolées), RAMwavDroid tape jusqu'à 98% de bonnes réponses, avec dans sa meilleure configuration quasiment aucun faux positif.
Un faux positif, c'est quand il n'y a pas de malware, mais que l'antivirus clignote quand même en rouge, donc ça montre bien l'efficacité de leur technologie. On est au même niveau que VirusTotal qui fait bosser des dizaines de moteurs de détection en parallèle.
Bien sûr, c'est un résultat de laboratoire sur un échantillon limité d'apps, et le code source n'est pas encore disponible publiquement, donc on ne peut que les croire sur parole. Surtout que leur système fonctionne uniquement dans un émulateur (pour accéder à la RAM) et ça c'est un truc typique que les malwares sont capables de détecter... Donc bon, à voir...
En plus ce système se fait avoir par les applis bourrées de gros SDK légitimes qui noient également le signal, et par les malwares minimalistes trop simples pour faire du bruit. Bref, la robustesse face à l'obfuscation avancée, ce sera pour plus tard mais j'ai trouvé cette façon de faire plutôt originale.
Peut-être qu'à terme, les créateurs de malware mixeront leur binaire avec un MP3 de Jul ou Gims pour tromper ces futurs détecteurs audio ^^.
![]()
Vous connaissez ce refrain qu'on entend partout dans la presse, comme quoi ChatGPT ou Claude "comprendrait vraiment" ce que vous racontez, qu'il aurait une "morale", une "intention" , voire bientôt une conscience ?
Bah Adrian de Wynter, chercheur principal chez Microsoft, vient d'y répondre de la plus belle des manières en prouvant que si c'est le cas, alors Age of Empires II a lui aussi des attributs très humains.
Et c'est on ne peut plus sérieux (enfin... presque).
En effet, dans son papier de recherche il explique qu'il s'est monté un petit réseau de neurones à l'intérieur du bon vieux AoE2, et nous explique tranquillement que n'importe quel système posé sur un "substrat" assez puissant (comprenez : le "moteur" sur lequel ça tourne, peu importe lequel) peut afficher ce genre de propriétés. Ça marche donc avec le jeu de Microsoft, mais aussi les LEGO, ou carrément l'agglomération de Boston.
Son raisonnement c'est que quand un fanboy IA (ou un employé d'Anthropic, loool) affirme qu'un LLM "a" une morale ou "comprend" le langage sans dire précisément comment il le mesure, il ne décrit pas vraiment la machine mais projette tout simplement ses attentes sur elle. Car les expériences ont beau rester les mêmes d'un substrat à l'autre, leur interprétation, elle, change selon ce qui les produit. Du coup, déclarer que ces attributs humains existent dans l'absolu, sans critère mesurable, mène soit à un raisonnement circulaire, soit à une conclusion qui ne dit rien de très probant.
Mais attention, je vous vois venir les Anti-IA Bro ! Il ne dit pas que les LLM sont nuls... Non, non, il dit juste qu'on les mesure mal.
À la place, de Wynter propose donc de travailler à partir d'une "hypothèse nulle", qui est un grand classique de la démarche scientifique consistant à ne plus partir du principe que l'IA pense, mais au contraire, partir de l'inverse. De se dire en fait qu'elle n'a rien d'unique, et c'est ensuite à l'expérience de prouver le contraire avec des mesures explicites. C'est d'après lui précisément ce qui manque à la tonne de papiers qui crient à l'"émergence" dès qu'un modèle fait un truc inattendu.
Et le bonhomme sait de quoi il parle puisque c'est déjà lui qui avait fait jouer GPT-4 à Doom en 2024, en s'inquiétant au passage de la facilité avec laquelle on pouvait lui faire tirer sur tout ce qui bouge. C'est aussi lui qui a épluché plus de 2000 publications sur les LLM pour montrer le manque de rigueur du domaine. Et en bonus de tout cela, il a démontré également que Age of Empires II était Turing-complet , donc capable en théorie de faire tourner n'importe quel calcul. Des gens "codaient" déjà dans le jeu depuis des lustres, mais en avoir une preuve formelle aujourd'hui, c'est cool !
Mais bon après derrière la vanne, y'a surtout un vrai sujet qui est que de prêter des intentions humaines à une IA, ça pousse surtout les gens à trop faire confiance à un chatbot, à lui confier des trucs intimes, parfois à s'y attacher pour de bon. Alors mettre un réseau de neurones dernier cri et une bonne vieille partie d'AoE2 sur le même plan, c'est sûr que c'est vexant pour l'ego de l'IA et de ses ingénieurs, mais carrément plus sain pour le nôtre !
Bref, la prochaine fois qu'on vous vend une IA "qui comprend" ou que vous penserez que seul ChatGPT vous comprend vraiment, repensez aux petits paysans qui coupent du bois dans Age of Empires qui sont tout aussi conscients que votre IA préférée.
![]()
Si vous avez un Mac avec une puce Silicon et que vous en avez marre de raquer pour des tokens à chaque requête API à un LLM à la con, y'a un projet qui mérite, je trouve, le détour. Ça s'appelle vLLM-MLX , et c'est un serveur d'inférence local qui transforme votre Mac en machine à générer du texte, à analyser des images et vidéos, et même capable de gérer de l'audio... et tout ça sans que l'inférence ne passe par le cloud des zaméricains.
Pour installer le bouzin, ça se fait avec :
uv tool install vllm-mlx
Puis vous lancez suivi du nom d'un modèle et hop, vous obtenez un endpoint API compatible OpenAI qui tourne en local sur votre machine :
vllm-mlx serve %MODEL%
Au début je pensais que j'étais parti pour une séance de configuration qui aller durer des heures mais en fait non. Par exemple moi j'ai lancé ça :
vllm-mlx serve mlx-community/GLM-4.7-Flash-4bit
Vous pouvez aussi opter pour un modèle plus petit :
vllm-mlx serve mlx-community/Qwen2.5-Coder-3B-Instruct-4bit
Du coup, si vos scripts causent déjà avec l'API d'OpenAI, basculer sur ça en local rien qu'en changeant l'URL de base, c'est un jeu d'enfant !
Côté perfs, et là je reprends les benchmarks officiels du repo (M4 Max 128 Go, mono-requête), on tourne autour de 418 tok/s sur un petit Qwen3-0.6B en 8-bit. Ensuite, ça tombe à environ 206 tok/s sur du Llama-3.2-3B et 128 tok/s sur un gros Qwen3-30B-A3B.
Le débit grimpe aussi quand plusieurs requêtes tapent en même temps à la porte... Donc sur les petits modèles ça file vite, mais par contre, sur les gros, faudra pas s'attendre à la même vitesse, hein... Et un Qwen3-30B vous bouffera dans les 18 Go de RAM unifiée, donc sur un Mac à 8 ou 16 Go vous pouvez oublier les gros modèles (Mais qui n'a pas encore un Mac Studio 128 Go ?? hein ? Quiiii ?).
Et c'est pas juste un serveur de texte comme je vous le disais, puisque le projet gère les modèles de vision type Gemma 3, Qwen3-VL, Pixtral, pour analyser images et les vidéos, et côté audio y'a du TTS natif (avec Kokoro, Chatterbox et compagnie) + de la transcription Whisper qui monte jusqu'à 197x le temps réel avec whisper-tiny, ou 55x avec le modèle turbo.
Attention par contre, il vous faudra la version avec l'extra audio (espeak-ng et un modèle spaCy), car c'est pas inclus dans la commande de base. Mais une fois en place, y a de quoi se monter un vrai assistant vocal 100% local et causer synthèse vocale sans louer un GPU chez Azure ou AWS.
Même le endpoint /v1/messages est compatible Anthropic, ce qui permet de brancher Claude Code ou OpenCode directement sur votre serveur
comme je vous l'expliquais ici
. Suffit d'utiliser ces variables d'environnement et votre éditeur IA ira taper sur votre propre machine plutôt que sur des serveurs distants.
unset ANTHROPIC_API_KEY
export ANTHROPIC_BASE_URL="http://127.0.0.1:8000"
export ANTHROPIC_AUTH_TOKEN="dummy"
claude --model mlx-community/GLM-4.7-Flash-4bit
ou :
claude --model mlx-community/Qwen2.5-Coder-3B-Instruct-4bit
Avouez que c'est trop cool hein ? Vous pouvez trouver tous les modèles pour MLX ici sur HugginFace si vous cherchez un truc plus spécifique.
Y'a aussi un endpoint d'embeddings pour faire du RAG en local, de l'appel d'outils externe via MCP avec une douzaine de parsers et le support des modèles de raisonnement qui extraient proprement le processus de réflexion entre les balises <think> pour Qwen3 et DeepSeek-R1.
J'adore !
Côté bidouille si vous vous lancer, sachez qu'il y a 2 ou 3 flags vachement utiles à connaitre.
Par exemple, le --warm-prompts (couplé au continuous batching) précharge les préfixes populaires au démarrage et, dans le bon scénario, vous gagne entre 1,3 et 2,25x sur le temps de première réponse.
Sur les gros modèles MoE genre Qwen3-30B-A3B, le --moe-top-k réduit aussi le nombre d'experts activés pour gratter 7 à 16% de débit. Le hic, c'est que vous y perdez un poil de qualité.
Et pour les agents qui brassent des contextes énormes, le --ssd-cache-dir déverse le cache de préfixes sur SSD pour soulager la RAM, au prix d'un peu de latence quand ça tape sur le disque.
Bref, si vous cherchez une alternative à Ollama qui tape direct dans le GPU de votre Mac avec du batching et du multimodal, le tout avec une compatibilité API aux petits oignons, foncez les amis ! C'est open source (Apache 2.0), ça dépote et ça s'installe en deux commandes !
Et si vous êtes sur PC plutôt que sur Mac, j'ai écrit la suite sur Lemonade SDK , l'équivalent côté AMD qui tape dans le NPU Ryzen AI.
Merci à Christian pour la découverte !
![]()