Outil
Choragos
Kora, en local
Le modèle qui répond ne tourne pas dans un centre de données. Il tourne dans la pièce où je travaille.
Sur deux jours d'usage réel, les 3 et 4 septembre 2026, Choragos a passé 402 appels au modèle qui tourne sur ma machine et 50 appels à des services en ligne. Facture de la période : 0,51 $. Ces chiffres ne sont pas une estimation — ils ont été lus le 4 septembre dans la base de l'application, qui compte chaque appel.
Le modèle s'appelle gemma4:12b. Il pèse 7,6 Go sur le disque, occupe 8,4 Go de mémoire vidéo une fois chargé avec son contexte de 32 768 jetons (mesuré le 15 septembre 2026), et tourne sur la carte graphique de mon ordinateur de bureau. Il n'y a ni abonnement, ni quota mensuel, ni condition d'utilisation à accepter pour lui parler. Quand la connexion tombe, il répond quand même.
Ce n'est pas une démonstration technique posée dans un coin : c'est l'assistante que j'utilise. Elle s'appelle Kora. Elle lit mes dossiers, cherche sur le web, écrit des fichiers, coupe la musique, retient ce que je lui demande de retenir — et elle m'écoute quand je lui parle à voix haute.
Le cloud n'est pas exclu. Il est optionnel, et il se voit. Les cinquante appels en ligne de ces deux jours sont tous partis parce que je l'ai explicitement demandé — « demande son avis à Claude » — et chacun a laissé une ligne dans le tableau de bord, avec son coût.
Partie I
La constellation
Choragos est une application de bureau. Elle s'ouvre sur une scène en trois dimensions où Kora occupe le centre — un noyau liquide qui bat, se déforme, et change de couleur quand elle travaille. Autour d'elle, six agents sur leurs orbites : Claude, ChatGPT, DeepSeek, Mistral, Groq et un second modèle local. Deux lunes tournent autour de Groq, qui sont ses spécialisations.
Ce n'est pas un tableau de bord déguisé. Les orbites ne sont pas décoratives : elles portent une information. Un agent qui répond s'entoure d'un halo, un agent sollicité par Kora se rapproche d'elle le temps de l'échange, et un filament lumineux relie les deux pendant la délégation. Quand quelque chose se passe, ça se voit à l'écran sans avoir à ouvrir un journal.
Au lancement, Kora est seule. Les agents n'apparaissent que si je les appelle — « Kora, au travail » — et repartent quand je lui demande de se mettre en pause. C'est une mise en scène, mais elle dit quelque chose de vrai : la plupart du temps, je n'ai besoin que d'elle, et donc que de ma propre machine.
Un clic, une conversation
Chaque orbe s'ouvre sur son propre panneau de conversation, avec ses propres fils, conservés dans une base de données locale. On peut poser la même question à trois modèles et comparer les réponses côte à côte, ou laisser un fil travailler pendant qu'on regarde ailleurs.
Partie II
Ce qu'elle fait
Kora dispose de vingt et un outils réels. Elle cherche sur le web et lit des pages, liste des dossiers et lit des fichiers, écrit dans un dossier qui lui est réservé, ouvre une application ou une URL, contrôle la musique, prépare un ménage de fichiers, retient un fait dans sa mémoire, ou passe la main à un modèle en ligne quand je le lui demande.
Voici un échange réel, tel qu'il s'est déroulé pendant que je préparais cet article. Trois questions, trois comportements différents — et le troisième est le plus intéressant.
À « sur quelle machine tu tournes ? », elle répond de tête : elle sait qu'elle est sur un poste Linux, c'est écrit dans ses instructions. À « il me reste combien de place sur le disque ? », elle ne devine pas — elle appelle l'outil infos système, lit la vraie valeur, et répond avec. L'application écrit sous la réponse quels outils ont réellement été appelés, pour que je puisse vérifier après coup plutôt que la croire sur parole.
Puis je lui demande d'ouvrir mon dossier Images. Là, elle n'exécute pas.
Elle demande. La bulle affiche l'action exacte, le chemin exact, et la raison qu'elle donne. J'ai cliqué « Refuser ». Sa réponse tient en une phrase : « Le dossier Images n'a pas été ouvert. » Pas d'excuse, pas de reformulation ambiguë, pas de « c'est fait » de complaisance.
C'est la règle qui structure tout le reste : Kora ne peut jamais affirmer avoir fait quelque chose sans avoir réellement appelé l'outil correspondant. Ce n'est pas une consigne de politesse dans son prompt — c'est vérifié par du code, à plusieurs endroits, parce qu'une consigne seule ne tient pas.
Partie III
La voix
Je lui parle. Je dis « Kora », elle répond « Oui ? », je donne ma commande. Toute la chaîne tient sur la machine : le mot d'éveil, la transcription, et la voix qui répond.
Le mot d'éveil n'est pas un service en ligne : c'est un petit modèle entraîné sur ma machine, avec ma voix. Dix fois « Kora », dix secondes de voix sans le mot — sans ça, le modèle apprend « sa voix » au lieu du mot — et trois minutes de calcul. Tout se fait depuis un panneau de l'application.
Ce modèle n'est pas très bon, et c'est assumé : il attrape un « Kora » sur dix trop tard, et il se déclenche parfois sur de la musique. La parade n'est pas de le rendre meilleur — c'est de ne jamais lui donner le dernier mot. Quand il croit entendre le mot, il arme le canal en silence ; c'est la transcription qui tranche ensuite. Deux détecteurs médiocres et indépendants valent mieux qu'un seul excellent.
La transcription est faite par whisper.cpp, en local. Elle a longtemps été le point lourd de la chaîne : le binaire distribué est compilé pour le processeur seul, et transcrire une seconde et quart de parole prenait plus de trois secondes — pendant qu'une carte graphique ne faisait rien. Recompilé pour utiliser le GPU, le même travail sur les mêmes fichiers donne le même texte, en cinq fois moins de temps.
Médianes mesurées sur 291 puis 104 transcriptions réelles, dans les deux régimes. La voix qui répond, elle, est synthétisée en local par Piper — une voix française installée sur la machine, réglable au curseur. Un service en ligne reste disponible pour les longues lectures, mais il n'est pas nécessaire.
Et depuis peu, je peux la couper en parlant par-dessus : dire « Kora » pendant qu'elle lit interrompt la lecture, et répondre « oui » pendant qu'elle pose sa question tranche sans attendre qu'elle finisse sa phrase.
Une précision qui compte : l'audio ne quitte jamais la machine — la transcription est forcée en local sur ce chemin, même quand un service en ligne est configuré, et un énoncé qui ne commence pas par « Kora » n'est même pas transcrit. En revanche, si je lui adresse une phrase qui n'appelle aucun outil et ne répond à aucune question — de la conversation, donc — le texte de cette phrase peut partir vers un modèle en ligne. C'est une dérogation assumée, limitée à ce seul cas, et le modèle local prend le relais dès qu'il n'y a ni clé ni réseau.
Oui et non ne se valent pas
Quand elle demande une confirmation à voix haute, approuver exige de commencer par une formule précise, suivie de deux mots au plus. Refuser est beaucoup plus large, et un silence de douze secondes refuse aussi. Une toux, une phrase venue de la pièce d'à côté ou une transcription fantaisiste ne peuvent donc mener qu'au refus, jamais à une exécution.
Partie IV
Les garde-fous
Un assistant qui peut ouvrir des fichiers, lancer des applications et supprimer des captures d'écran est un assistant qui peut faire des dégâts. La question n'est pas de savoir s'il se trompera, mais ce qui arrive quand il se trompe.
Chaque outil est classé dans un des trois niveaux : onze sans effet de bord s'exécutent librement, six à effet réel mais rattrapable déclenchent une pause obligatoire, quatre non rattrapables affichent une bulle rouge. Un outil qui ne serait pas classé est traité comme le plus dangereux — l'oubli ne peut jamais ouvrir une porte.
Deux journaux séparés écrivent sur le disque : l'un enregistre ce que Kora a envisagé, avant toute confirmation, l'autre ce qui a réellement été décidé. Une action refusée laisse donc une trace, et une intention formulée juste avant une fermeture de fenêtre aussi.
Par-dessus, une surveillance tourne en permanence et ne connaît que des règles mécaniques — aucun modèle n'y intervient. Elle voit ce qui va bien autant que ce qui va mal.
Kora n'a aucune connaissance de ce mécanisme. Ce n'est pas un de ses outils, il n'est jamais mentionné dans ses instructions, et le seul canal exposé est en lecture seule. Un système qui se surveille lui-même en se racontant sa propre histoire ne surveille rien.
Enfin, un plafond de dépense quotidien est vérifié dans le processus qui fait les appels réseau, avant qu'un octet ne parte : un dollar par jour et soixante crédits de recherche web, réglables. Au-delà, l'appel est refusé et la surveillance alerte. Les modèles locaux ne sont pas concernés — ils ne coûtent rien.
Le garde-fou dont je me sers le plus n'est pourtant aucun de ceux-là. C'est un pense-bête, dans l'application, qui liste ce que Kora sait faire — et surtout par quel chemin, et avec quel niveau de confiance.
Ce panneau n'est pas écrit à la main : il est dérivé du code. Un outil ajouté sans sa note fait échouer les tests. C'est la seule façon que j'aie trouvée pour qu'une documentation reste vraie plus de deux semaines.
Partie V
Les murs
Il serait facile de s'arrêter ici. Ce serait malhonnête : ce projet a des limites dures, et certaines ne bougeront pas.
La voix reste lente. Entre la fin de ma phrase et l'action, je mesure trois secondes et demie en médiane — et une commande sur dix dépasse quatorze secondes. C'est très loin des deux cents millisecondes d'un tour de parole humain. La transcription n'est plus le principal coupable depuis qu'elle tourne sur le GPU ; ce qui reste, c'est le silence d'attente avant de décider que la phrase est finie, l'appel au modèle, et la synthèse de la réponse. Il y a du travail possible sur les trois. Il n'y a pas de miracle.
On ne peut pas améliorer les fausses détections et les mots ratés en même temps. Le mot d'éveil affiche 97 % de précision et 9 % de « Kora » manqués : serrer le seuil pour l'un dégrade mécaniquement l'autre. Ce n'est pas un défaut de réglage, c'est une propriété de tout détecteur. La seule sortie connue est celle qui est en place — ajouter un second signal indépendant.
Seize giga-octets de mémoire vidéo, partagés. Près de trois sont déjà pris par le bureau, la scène 3D et le navigateur avant même de charger quoi que ce soit. Tout ce qu'on met en mémoire vidéo en retire autre chose : un modèle plus gros, une transcription accélérée, une empreinte vocale se disputent le même espace. Et comme il n'y a qu'une carte, une seule génération tourne à la fois : une écriture en tâche de fond a déjà fait attendre quarante-quatre secondes une commande vocale qui n'a mis que deux secondes à s'exécuter une fois son tour venu.
Un modèle de douze milliards de paramètres a un plafond. Une consigne écrite dans son prompt ne tient pas quand elle contredit un réflexe du modèle : il existe dans ce projet une demande où l'interdiction explicite a été ignorée huit fois sur huit. Ce qui marche, ce n'est pas de mieux écrire la consigne — c'est de rendre l'erreur mécaniquement impossible, ou de changer de modèle.
Et puis il y a la liste, tenue dans l'application, de ce qu'elle ne sait pas faire. Elle est plus longue que ce que j'aimerais, et c'est très bien ainsi.
À la voix, une seule action s'exécute sans me demander : le contrôle de la musique. Tout le reste — ouvrir, écrire, supprimer — passe par la même bulle qu'au clavier, et une bulle rouge attend un oui explicite. Jusqu'au 15 septembre 2026, le canal vocal n'ouvrait qu'un jeu d'actions réversibles ; depuis, il passe par le même moteur que le panneau de conversation, avec les mêmes paliers — la frontière est devenue un garde-fou. Un modèle en ligne appelé en secours n'a aucun outil, donc il peut expliquer mais jamais agir. Et l'arrêt d'urgence à la voix n'est plus entendu quand le mot d'éveil filtre tout ce qui ne commence pas par « Kora » — le bouton rouge, lui, marche toujours.
Ce que ces murs ont de commun
Aucun ne se franchit en écrivant un meilleur prompt. Deux se contournent avec de l'argent — plus de mémoire vidéo, une seconde carte. Les autres se contournent avec du travail, ou se déclarent. Confondre les deux catégories fait perdre des mois.
Conclusion
Où ça en est
Choragos est un projet personnel, en développement actif, et ne se télécharge pas. Ce n'est pas un produit, et je ne cherche pas à en faire un. C'est un poste de travail : le mien.
Relevé du 26 septembre 2026, lu dans l'application : modèle local gemma4:12b, 9 orbes ; 29 outils et 103 capacités au total — recherche 14, quotidien 88, jeu 28 — dont 48 vues marcher et 55 jamais revérifiées ; 9 manques listés. Depuis le 6 septembre 2026 : 2191 appels au modèle local, 143 aux modèles en ligne, 305 recherches web, 1,43 $ en tout.
Ce qui fonctionne aujourd'hui, et que j'utilise vraiment : la conversation avec un modèle local, les outils sur mon système avec leurs confirmations, la recherche web avec ses sources, la mémoire que je peux relire et corriger, la commande vocale de bout en bout, le contrôle de la musique, et le ménage de fichiers sur validation. Ce qui reste à faire est écrit dans l'application, pas dans une note d'intention.
Choragos a une application sœur, KAIROS, qui s'occupe d'autre chose : penser sur un canvas plutôt que parler à des modèles. Les deux partent de la même intuition — que l'intelligence artificielle est utile quand elle reste à sa place, et qu'on garde les moyens de vérifier ce qu'elle raconte.
Ce qui m'a le plus surpris en construisant Kora n'est pas ce qu'un modèle local sait faire. C'est le nombre de fois où il a fallu l'empêcher de dire qu'il l'avait fait.
Cette page dit ce que Kora fait. Ce qu'on tente en la construisant — une IA qui apprend d'une seule personne, et pourquoi ça ne peut être que local — est un autre texte : Ce qu'on tente ici.