Technicien systèmes et réseaux en formation · TSSR · 2i Academy, Normandie
YannBucaille
Je monte des serveurs, j'écris des outils et je construis des interfaces, du binaire jusqu'à l'IA locale. Mes projets sont rangés ici par couche, de l'écran jusqu'au socle.
Ce que l'on voit à l'écran, et les modèles qui tournent derrière, en local.
01.1 · runtime d'IA local · code privé
Nexus
Le projet que je fais évoluer depuis le plus longtemps : un runtime d'IA local et mono-utilisateur, conçu pour que chaque décision reste lisible.
Le modèle propose ; la politique du backend, le périmètre de l'espace de travail et un exécuteur contrôlé autorisent. Les outils sont en lecture seule et une approbation ne peut déclencher ni écriture, ni commande shell. Mémoire par portée, sessions indépendantes des projets, plugins déclarés par manifeste, dont un module d'échecs avec un apprentissage hors ligne.
Cockpit « Horizon » · Ctrl+K ouvre la palette de commandes · le code reste privé
Un tableau de bord local pour surveiller, déboguer et comparer des exécutions de modèles de langage.
Chaque prompt exécuté devient un run consultable, avec sa trace en frise chronologique. Les fournisseurs sont interchangeables : un mock local ou n'importe quel point d'accès compatible OpenAI. Un Model Lab compare les réponses de plusieurs modèles côte à côte.
On décrit une modification dans une barre flottante posée sur son site local ; le modèle choisi modifie les vrais fichiers et la page se recharge.
Il fonctionne avec une API, un modèle local ou un agent en ligne de commande. Python 3.10 et plus, aucune dépendance, une intégration continue sur GitHub Actions et un paquet publié sur PyPI.
Premier lancement réel avec Claude Code · accéléré ×3
Des équations qu'on entend. On écrit y = f(x), un point parcourt la courbe et sa hauteur devient la hauteur du son.
La règle : f = 130,81 Hz × 2y. y = 0 donne un do3, +1 monte d'une octave. La courbe se trace en direct sous sa formule, typographiée par MathJax, et le lab exporte la vidéo avec ffmpeg.
Great Fairy Fountain (Koji Kondo), reprise à la harpe · une corde pincée Karplus-Strong par voix
Node.jsMathJaxffmpeg
01.5 · entendre une IA douter
le son du doute
Chaque mot qu'un modèle de langage écrit devient une note. Quand il hésite, les mots qu'il a failli dire sonnent faux et la cassette se met à pleurer.
Ollama donne les cinq suites les plus probables de chaque token ; le doute est leur entropie, ramenée entre 0 et 1. La mélodie, l'harmonie et le tempo sont composés à l'avance : seul le doute, mesuré token par token, ajoute des notes fantômes, fait pleurer la bande et change le visage de la cassette. Les tests vérifient que la partition ne dépend jamais des réponses. Qwen 3.5 4B tourne en local, à température 0.
Qwen 3.5 4B invente une lune de Neptune · 1 min 43, avec le son
AERAPrototype : la webcam détecte en local deux mains et leurs 21 articulations ; un pincement pouce-index saisit une fenêtre et la déplace.TypeScript · Vite · Canvas 2D · Fastify
IrisReconstruction de Cats Identifier : détection et identification séparées, modèle entraîné puis évalué avant toute promotion explicite.Python · Flask
Orca ComputeBanc d'essai sur des cas SWE-bench réels : préparation des dépôts, notation dans Docker, mise en quarantaine des cas ambigus.Python · Docker · SWE-bench
MnemonicMémoire vectorielle locale : retrouver un souvenir par similarité de sens, stocké en JSONL ou dans un index FAISS.Python · FAISS
NexNotesNotes audio et texte, transcription locale par Whisper, sans cloud.Python · Whisper · CustomTkinter
Couche 02
Bureau & GPU
Mon environnement Linux, ce qui s'y affiche et ce qui le fait bouger.
02.1 · fond d'écran audio-réactif
Woofer
Un fond d'écran Wayland qui réagit à la musique : les basses poussent l'image, chaque kick la fait vibrer.
Woofer lit le son directement dans PipeWire, calcule le rendu sur le GPU avec wgpu et se place sous les fenêtres grâce à wlr-layer-shell. Treize préréglages, du cône de haut-parleur au verre brisé, se changent à chaud avec woofer ctl ; --idle-fps 0 arrête le rendu dans le silence.
Toutes les 25 minutes, une carte de russe apparaît dans un coin de l'écran : trois réponses, la prononciation à la française, une explication en une phrase.
2 007 cartes sur dix niveaux, de l'alphabet jusqu'à l'argot et aux proverbes. La prononciation est calculée depuis l'accent tonique (молоко́ → ma·la·ko), la répétition est espacée façon Anki et chaque niveau s'ouvre quand le précédent est maîtrisé. La popup est une fenêtre GTK 4 posée par layer-shell au-dessus du bureau Wayland ; une fenêtre de révision suit l'activité sur 30 jours et les points faibles.
Une vraie session, filmée par Rusky lui-même sur une base de démonstration
Des binaires petits, rapides, qui font une chose et la prouvent.
03.1 · CLI Linux, macOS, Windows
c2pa-strip
Retire les Content Credentials (C2PA) des JPEG, PNG et WebP sans réencoder un seul pixel.
Le manifeste est rangé dans une boîte JUMBF. L'outil analyse le conteneur propre à chaque format et ne retire que le magasin C2PA : en JPEG, ses segments APP11, en gardant EXIF et ICC. À chaque push, la CI signe des images avec l'outil officiel c2patool, les nettoie et vérifie que le fichier est identique à l'original non signé.
Choisir une saison, un épisode, et le regarder dans mpv sans quitter le terminal.
L'interface TUI est écrite avec Bubble Tea : navigation au clavier, recherche par titre, reprise du dernier épisode vu. Un cache local accélère la recherche et la lecture, et mpv garde la position de chaque épisode. Tout passe aussi par des sous-commandes : cartman play 10 8, cartman resume, cartman search.
Enregistrée depuis le vrai binaire · choix d'une saison, puis des épisodes
03.3 · jeu de gestion en terminal · code non publié
PowerPrinter
Un jeu de gestion dans le terminal, des groupes électrogènes improvisés jusqu'aux essaims de Dyson autour de vraies étoiles.
Chaque étape est une chaîne de goulots d'étranglement : raffinerie, fonderie de voiles, lanceur, puis faisceau stellaire. Fermé, le jeu continue selon les vraies règles (contrats de combustible, usure, stockage) et affiche un bilan au retour. Il se sauvegarde toutes les 10 secondes, et à la réception de SIGTERM ou SIGHUP.
Une vraie partie · bilan hors ligne, chaîne de production, carte des étoiles
GoTUIsimulation hors ligne
Couche 04
Services
Ce qui tourne en continu sur mes machines, et ce qui le surveille.
04.1 · laboratoire personnel documenté
Homelab Pivuche
Un PC sous Arch Linux qui héberge mes machines virtuelles, avec un dossier technique complet : réseau, services, exploitation et migration.
Le proxy est le point d'entrée, apps01 héberge Forgejo sous Docker, monitor01 supervise avec Prometheus et Grafana, ai01 accueille Nexus. La documentation consigne aussi les incidents, comme des conteneurs relancés sans leurs ports publiés qu'il a fallu recréer.
Trois managers Debian, des stacks réparties sur plusieurs machines : Phoenix donne une vue claire de ce que fait le cluster.
Il observe nœuds, services, stacks, tâches et réplicas. Un watchdog sur chaque manager journalise les transitions et les erreurs d'API. Le navigateur ne lit qu'un instantané JSON, jamais le socket Docker, qui reste derrière un proxy sur le réseau overlay interne. Le tout se déploie en mode global sur les managers éligibles.
Une machine qu'on peut détruire et reconstruire, à l'identique, en une commande.
05.1 · infrastructure as code
debian-rebuild
Un serveur Debian 13 durci, créé et configuré entièrement par script sous KVM/libvirt, puis vérifié par 22 tests.
Accès par clé SSH uniquement, root refusé, sudo toujours avec mot de passe. Pare-feu nftables en liste blanche, fail2ban, modules noyau inutiles bloqués, auditd sur les comptes, sudo, SSH et le pare-feu, mises à jour de sécurité automatiques. Lynis note le durcissement à 84/100, contre 67 pour la même VM avant.
$ scripts/rebuild.sh
>> Destruction : 1 s
>> Déploiement : 139 s
>> Tests : 10 s
Reconstruction complète et testée en 2 min 30 s.
$ scripts/test.sh
[OK] La VM a l'IP réservée 192.168.122.40 (bail DHCP)
[OK] La VM répond au ping
[OK] La VM sort sur Internet via le NAT (deb.debian.org)
[OK] La VM résout les noms DNS
[OK] SSH par clé fonctionne pour admin
[OK] SSH ne propose pas l'authentification par mot de passe
[OK] Connexion root refusée
[OK] sshd : PermitRootLogin no, PasswordAuthentication no
[OK] SSH : aucun transfert de ports, d'agent ni d'affichage X11
[OK] sudo refusé sans mot de passe
[OK] sudo accepté avec le mot de passe d'admin
[OK] nftables actif, politique d'entrée à drop
[OK] HTTP (80) ouvert : la page d'état répond
[OK] Port 8080 joignable depuis la VM elle-même
[OK] Port 8080 bloqué depuis l'hôte par le pare-feu
[OK] fail2ban surveille sshd
[OK] Mises à jour de sécurité automatiques activées
[OK] Aucune mise à jour en attente
[OK] Noyau : filtrage anti-usurpation, redirections refusées (sysctl)
[OK] Modules inutiles bloqués (stockage USB, dccp, sctp...)
[OK] AppArmor actif
[OK] auditd surveille comptes, sudo, SSH et pare-feu
# Lynis 3.1.4 : 67/100 avant durcissement, 84/100 après
Je contribue en externe aux projets que j'utilise tous les jours : le shell de bureau Caelestia et Quickshell, sur lequel il repose, ou uutils coreutils, les outils de base de Linux réécrits en Rust.
2 fusionnées · 9 en revue · 1 fermée · sur 12 créées synchronisé avec GitHub
À côté, l'extension caelestia-websearch ajoute la recherche web au lanceur Caelestia (Google, YouTube, Wikipédia, GitHub, Reddit, Maps), sans toucher au lancement d'applications, avec une installation locale sauvegardée et une désinstallation propre.
Survolez ou sélectionnez une technologie : les projets qui l'utilisent s'allument dans la pile.
alternance TSSR · france entière · présentiel ou/et télétravail · 3 semaines en entreprise, 1 en formation · alternance TSSR · france entière · présentiel ou/et télétravail · 3 semaines en entreprise, 1 en formation ·
Couche 07 · à construire
Il manque une couche à la pile : votre entreprise.
Formation
TSSR, technicien supérieur systèmes et réseaux · 2i Academy