Help us shape the future of Go! Take the 2026 Go Developer Survey

tenon

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 16, 2026 License: EUPL-1.2

README

tenon

tenon est un agent de code en terminal, écrit en Go. Il lit votre projet, propose des modifications et exécute des commandes, sous votre contrôle.

Il est conçu pour l'Europe :

  • les fournisseurs préconfigurés sont européens (Mistral AI, Scaleway, OVHcloud) ou locaux (Ollama, vLLM) ;
  • tout envoi de données hors de l'UE demande votre accord explicite ;
  • par défaut, les écritures, les commandes et les appels d'outils MCP attendent votre validation ;
  • tout est tracé dans un journal d'audit chaîné et vérifiable ;
  • les secrets et des données personnelles sont masqués avant tout envoi ;
  • les commits qui contiennent du code écrit par l'agent peuvent être marqués.

Tout point d'accès compatible OpenAI est utilisable. tenon fonctionne sous Linux et macOS.

Installation

Binaires

Chaque version publiée sur la page Releases GitHub fournit :

  • une archive .tar.gz par plateforme : linux/amd64, linux/arm64, darwin/amd64, darwin/arm64 ;
  • des paquets .deb et .rpm pour Linux (amd64, arm64) ;
  • un fichier SHA256SUMS, signé avec minisign (SHA256SUMS.minisig) ;
  • un SBOM CycloneDX.

Vérifiez la signature avec la clé publique minisign du projet, fournie à la racine du dépôt (tenon.pub) :

RWR+vfCWjGO42uRKOxNSrKz5afZPCWJf8iJPO04kFdkhLldZHhxo532F

Puis vérifiez les empreintes :

minisign -Vm SHA256SUMS -p tenon.pub
sha256sum -c SHA256SUMS --ignore-missing   # macOS : shasum -a 256 -c SHA256SUMS --ignore-missing

Ensuite, copiez le binaire tenon dans un dossier du PATH, ou installez le paquet :

sudo apt install ./tenon_*.deb   # Debian, Ubuntu
sudo dnf install ./tenon_*.rpm   # Fedora, RHEL
Depuis les sources

Go 1.26 ou plus récent est nécessaire ; utilisez le dernier correctif de Go 1.26 (≥ 1.26.9 au 2026-10-15), les précédents ont des failles connues de la bibliothèque standard. Les dépendances sont incluses dans le dépôt : aucun proxy de modules n'est contacté.

git clone https://github.com/tenon-code-eu/tenon.git
cd tenon
GOFLAGS=-mod=vendor go build -o tenon ./cmd/tenon

Démarrage rapide

tenon key set mistral                      # enregistre la clé dans le trousseau système
tenon                                      # interface interactive, dans le dossier du projet
tenon -p "explique la structure du projet" # un tour sans interface, pour les scripts

La clé peut aussi venir de la variable MISTRAL_API_KEY. Sans clé, utilisez un modèle local : tenon --provider ollama.

Pour marquer les commits qui contiennent du code écrit par l'agent :

tenon git install-hook

Documentation

Licence

tenon est distribué sous licence EUPL-1.2.

In English

tenon is a terminal coding agent written in Go, for Linux and macOS. It reads your project, proposes changes and runs commands under your control.

  • Preconfigured providers are European (Mistral AI, Scaleway, OVHcloud) or local (Ollama, vLLM). Any OpenAI-compatible endpoint works.
  • Sending data outside the EU requires explicit consent (--allow-non-eu, or a prompt in the interactive interface).
  • By default, writes, commands and MCP tool calls wait for your approval. Everything is recorded in a hash-chained audit log (tenon audit verify).
  • Secrets and some personal data are masked before anything leaves your machine.
  • Commits containing agent-written code can carry AI-Assisted-By trailers (tenon git install-hook).

Quick start: tenon key set mistral, then tenon (interactive) or tenon -p "<prompt>" (scripts). Use --lang en or lang = "en" in the configuration for an English interface. The documentation is in French: usage, security and limits, example configuration.

Licence: EUPL-1.2.

Directories

Path Synopsis
cmd
tenon command
internal
audit
Package audit writes a hash-chained JSONL audit log and verifies it.
Package audit writes a hash-chained JSONL audit log and verifies it.
config
Package config charge la configuration globale et projet (TOML).
Package config charge la configuration globale et projet (TOML).
engine
Package engine contient la boucle agentique : il relie le fournisseur, les outils, les permissions, le contrôle sortant et l'audit, et émet des événements typés consommés par les interfaces.
Package engine contient la boucle agentique : il relie le fournisseur, les outils, les permissions, le contrôle sortant et l'audit, et émet des événements typés consommés par les interfaces.
event
Package event defines the session event log model.
Package event defines the session event log model.
gitmark
Package gitmark marque les commits qui contiennent du code écrit par l'agent : des trailers git (AI-Assisted-By, AI-Session) sont ajoutés au message par un hook commit-msg qui ne bloque jamais le commit.
Package gitmark marque les commits qui contiennent du code écrit par l'agent : des trailers git (AI-Assisted-By, AI-Session) sont ajoutés au message par un hook commit-msg qui ne bloque jamais le commit.
i18n
Package i18n fournit les chaînes FR/EN de la CLI, du mode headless et du prompt système.
Package i18n fournit les chaînes FR/EN de la CLI, du mode headless et du prompt système.
instructions
Package instructions charge AGENTS.md et TENON.md depuis la racine du projet pour les injecter dans le prompt système.
Package instructions charge AGENTS.md et TENON.md depuis la racine du projet pour les injecter dans le prompt système.
llm
Package llm defines the provider-neutral types exchanged with LLM backends.
Package llm defines the provider-neutral types exchanged with LLM backends.
mcp
Package mcp connecte tenon à des serveurs MCP (stdio et HTTP streamable) et expose leurs outils comme des tools.Tool.
Package mcp connecte tenon à des serveurs MCP (stdio et HTTP streamable) et expose leurs outils comme des tools.Tool.
mcp/mcptest
Package mcptest fournit le serveur MCP stdio des tests : le binaire de test relancé avec EnvServer=1 joue un serveur selon EnvMode.
Package mcptest fournit le serveur MCP stdio des tests : le binaire de test relancé avec EnvServer=1 joue un serveur selon EnvMode.
policy
Package policy contient le moteur de permissions : chaque appel d'outil y est vérifié avant exécution.
Package policy contient le moteur de permissions : chaque appel d'outil y est vérifié avant exécution.
provider
Package provider talks to LLM backends over HTTP.
Package provider talks to LLM backends over HTTP.
secrets
Package secrets recherche les clés API des fournisseurs : d'abord dans l'environnement, puis dans le trousseau système (Keychain sur macOS, Secret Service sur Linux).
Package secrets recherche les clés API des fournisseurs : d'abord dans l'environnement, puis dans le trousseau système (Keychain sur macOS, Secret Service sur Linux).
session
Package session persists a session's events as redacted JSONL and reloads them.
Package session persists a session's events as redacted JSONL and reloads them.
tools
Package tools définit l'interface des outils de l'agent et les outils fichiers.
Package tools définit l'interface des outils de l'agent et les outils fichiers.
ui/headless
Package headless exécute un tour d'agent sans interface interactive : toute demande de permission est refusée, la sortie est du texte ou du JSON.
Package headless exécute un tour d'agent sans interface interactive : toute demande de permission est refusée, la sortie est du texte ou du JSON.
ui/tui
Package tui contient l'interface interactive de tenon.
Package tui contient l'interface interactive de tenon.
ui/tui/diff
Package diff calcule l'aperçu des modifications affiché par la TUI avant qu'une écriture (write_file / edit_file) soit approuvée.
Package diff calcule l'aperçu des modifications affiché par la TUI avant qu'une écriture (write_file / edit_file) soit approuvée.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL