Codez avec l'IA. Vos données restent en Europe.
tenon est un agent de code open source pour le terminal. Il lit votre projet, propose des changements et lance des commandes, avec des modèles européens ou locaux. Chaque action attend votre accord, et chaque étape entre dans un journal vérifiable.
brew install tenon-code-eu/tap/tenon
curl -fsSL https://raw.githubusercontent.com/tenon-code-eu/tenon/main/install.sh | sh
Le script vérifie le hash SHA-256, et la signature minisign si elle est installée. Lire le script
- licenceEUPL-1.2
- Go1.26
- Linux · macOS
- Versions signées minisign
- SBOM CycloneDX
- Conçu en Europe
Le harness tenon
Dix-huit composants, une seule règle : rien ne sort sans passer par vos permissions, votre masquage et votre journal.
- Outils — Lire, écrire, chercher, lancer une commande : chaque outil reste ancré à la racine du projet.
- Isolation système — Commandes shell et serveurs MCP stdio confinés par le système (Landlock, sandbox-exec) : écriture dans le projet seulement, réseau fermé sauf accord.
- Permissions — Écritures, commandes et appels MCP attendent votre accord. Un dépôt ne peut rien assouplir.
- Moteur — La boucle d'agent : lire, proposer, exécuter, tour après tour, chaque événement émis vers le journal.
- Masquage — Secrets et certaines données personnelles masqués avant que la requête ne quitte la machine.
- Routage par sensibilité — Chemins et marquages comme DIFFUSION RESTREINTE rendent la session sensible : elle ne part plus qu'au modèle local, et chaque décision entre au journal.
- Profil · liste blanche — Profils eu-only, secnumcloud, strict-local et liste blanche d'hôtes : vérifiés au démarrage et avant chaque envoi.
- Fournisseurs — Mistral AI, Codestral, Scaleway, OVHcloud, Albert API, ou local avec Ollama et vLLM. Hors UE : votre consentement.
- Journal d'audit — Chaque ligne scelle la précédente par hachage. tenon audit verify le prouve, l'horodatage RFC 3161 le date.
- Horodatage RFC 3161 — Seul le hash de tête du journal part vers une autorité d'horodatage : un journal réécrit après coup est détecté.
- Export de conformité — tenon audit export : un rapport HTML et JSON pour votre DPO, construit depuis le journal, sans contenu de conversation.
- Skills — Des SKILL.md au format Agent Skills, chargés à la demande, incapables d'élargir les permissions.
- Sous-agents — Des tâches confiées à d'autres agents, avec les mêmes permissions, le même masquage et le même audit.
- Hooks — Vos commandes avant et après les outils : bloquer, demander, ajouter du contexte. Les hooks d'un dépôt ne tournent jamais.
- MCP — Serveurs stdio ou http à juridiction déclarée, filtrés par profil et par la politique.
- Points de reprise — Chaque message est un point de restauration : /rewind rend les fichiers, la conversation, ou les deux.
- Assistant CRA — tenon cra : SBOM, VEX, échéances de signalement et dossier technique du Cyber Resilience Act, scan OSV hors ligne.
- Politique d'organisation — Un plancher signé avec minisign, vérifié à chaque démarrage, que personne ne peut desserrer.
Le voyage d'une requête
Le harness vu de l'intérieur : une demande fait tourner la boucle d'agent, et chaque étape s'inscrit en direct dans le journal d'audit, avec les vrais événements de tenon.
Le harness tenon vu de l'intérieur : une demande va faire tourner la boucle d'agent.
- Vous écrivez votre demande dans le terminal.
- Vos hooks peuvent ajouter du contexte ou bloquer la demande.
- Le moteur assemble le contexte et charge le skill utile, sans élargir ses droits.
- Avant chaque appel du modèle : masquage des secrets, puis routage. Contenu classé : modèle local seulement.
- Itération 1 : le modèle demande à lire main_test.go. Lecture dans le projet : autorisée d'office.
- Le résultat revient au moteur, qui relance le modèle : c'est la boucle.
- Itération 2 : le modèle veut modifier main.go. Une écriture : tenon vous demande l'accord.
- Un point de reprise copie le fichier avant l'écriture : /rewind pourra l'annuler.
- Itération 3 : une commande shell. Accord, puis l'isolation système se referme autour d'elle.
- Confinée : écriture dans le projet seulement, ~/.ssh illisible, réseau fermé. Résultat : ok.
- Itération 4 : le modèle répond, le tour se termine. La réponse arrive dans votre terminal.
- Chaque événement est scellé, horodatable et exportable pour votre DPO.
Où partent vos données
Avant chaque envoi, tenon masque les secrets et applique vos règles. La destination dépend de votre configuration, et elle est inscrite au journal.
- Votre projet
-
tenon
- Masquage des secrets et de données personnelles
- Écritures, commandes et appels MCP soumis à votre accord
- Journal chaîné par hachage, horodatable (RFC 3161)
- Contenu classé : modèle local seulement
-
Sur votre machineFournisseurs européensHors UE
Des preuves pour l'audit, pas des promesses
tenon ne rend pas un système conforme à lui seul. Il produit les traces que vos équipes conformité et votre DPO demandent.
tenon audit export --out rapport
| Repère | Ce que tenon fait |
|---|---|
| AI Act, art. 12 · journalisation | Chaque requête, outil et décision entre dans un journal chaîné par hachage. tenon audit verify détecte une ligne modifiée ; l'horodatage RFC 3161 détecte une réécriture. |
| AI Act, art. 14 · contrôle humain | Par défaut, écritures, commandes et appels MCP attendent votre accord. Un dépôt ne peut pas assouplir vos règles. |
| AI Act, art. 50 · transparence | Les commits qui contiennent du code écrit par l'agent peuvent être marqués. |
| RGPD · transferts hors UE | Fournisseurs européens ou locaux préconfigurés. Tout envoi hors UE exige votre consentement, et les profils eu-only, secnumcloud et strict-local le verrouillent. |
| Organisation · politique signée | Un administrateur impose un plancher signé avec minisign : profil, hôtes autorisés, règles, niveau d'audit. Personne ne peut le desserrer. |
Installer tenon
Linux et macOS. Tout point d’accès compatible OpenAI fonctionne.
Homebrew
brew install tenon-code-eu/tap/tenon
Script
curl -fsSL https://raw.githubusercontent.com/tenon-code-eu/tenon/main/install.sh | sh
Vérifier une version
Chaque version publie ses archives, paquets .deb et .rpm, une SBOM CycloneDX et un SHA256SUMS signé avec minisign.
minisign -Vm SHA256SUMS -p tenon.pub
En préparation
Extensions VS Code et JetBrains, application de bureau.