Sections de la base de connaissances ▾

Navigation

▸ Commencez ici Par rôles

Catégories

Outils 52
Glossaire 12

Outils

Goose + JoinGonka Gateway : votre propre fournisseur et clé dans le trousseau

Goose est un agent IA open source et extensible qui fonctionne sur votre machine : application de bureau pour macOS, Linux et Windows, CLI pour le terminal et API pour l'intégration. Il lit et modifie des fichiers, exécute des commandes et connecte des services externes via des extensions MCP. Écrit en Rust, il est distribué sous licence Apache 2.0. Le projet a grandi chez Block et fait désormais partie de l'Agentic AI Foundation au sein de la Linux Foundation ; le dépôt canonique est github.com/aaif-goose/goose, l'ancienne adresse block/goose redirige vers celui-ci.

Goose décrit ses fournisseurs de manière déclarative : un fichier JSON dans le répertoire custom_providers permet d'ajouter une nouvelle source de modèles à la liste. JoinGonka Gateway utilise le format OpenAI Chat Completions et se connecte donc avec une seule commande d'installation ou un seul fichier. Après cela, l'agent fonctionne sur les modèles du réseau décentralisé Gonka — DeepSeek V4 Flash, GLM-5.3 Flash et MiniMax M2.7 — au même prix : $0.0069 par million de jetons d'entrée.

Une particularité de Goose est utile à savoir : il ne garde pas les clés des fournisseurs dans la configuration, mais dans le gestionnaire de secrets système. Selon la présence ou non d'un tel stockage sur votre machine, une étape manuelle supplémentaire peut être nécessaire après l'installation — une section dédiée y est consacrée. Les commandes et messages ci-dessous ont été vérifiés par une exécution réelle de goose 1.51.0 via la passerelle le 23 septembre 2026. Après confirmation de l'adresse, 3M de jetons gratuits seront crédités sur votre compte — assez pour reproduire tout cela vous-même.

Démarrage rapide : installation et commande unique

Étape 1 : installer Goose. Les méthodes officielles pour le CLI, d'après la documentation du projet :

# macOS and Linux: the script puts the binary in ~/.local/bin
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash

# macOS, Homebrew
brew install block-goose-cli

La variable CONFIGURE=false désactive l'assistant goose configure que le script lance sinon immédiatement après l'installation : c'est l'installateur qui configurera le fournisseur. Si le répertoire ~/.local/bin n'est pas dans le PATH, le script vous le dira. Pour Windows, le même dépôt contient un script download_cli.ps1, et l'application de bureau se télécharge depuis la page de documentation ; elle et le CLI lisent les mêmes réglages, donc tout ce qui suit vaut pour les deux. Vérification — goose --version.

Étape 2 : obtenir une clé. Inscrivez-vous sur gate.joingonka.ai/register, confirmez votre adresse et créez une clé avec le préfixe jg- dans la section « Clés API ». Une seule clé et un seul solde valent pour tous les modèles du réseau.

Étape 3 : lancer l'installateur.

npx @joingonka/setup --tool goose

L'installateur demandera la clé — elle n'est pas transmise en argument de ligne de commande, pour ne pas rester dans l'historique du shell — et fera ce qui suit :

  • créer le fichier de fournisseur custom_providers/custom_joingonka.json avec l'adresse de la passerelle et les trois modèles du réseau avec leurs vraies fenêtres de contexte, en permissions 600. Les noms custom_joingonka et CUSTOM_JOINGONKA_API_KEY sont ceux que Goose dérive lui-même du nom « JoinGonka », donc la clé saisie dans l'assistant ira au bon endroit ;
  • faire de JoinGonka le fournisseur par défaut avec le modèle DeepSeek V4 Flash — mais uniquement si aucun fournisseur n'est encore choisi, ou si le nôtre est choisi avec un modèle vide ou disparu du réseau. Il ne touche pas à un autre choix et affiche la commande pour essayer : goose session --provider custom_joingonka --model … ;
  • placer la clé dans secrets.yaml, uniquement si le stockage des secrets de Goose est bien basé sur un fichier ; sinon il dira clairement qu'il reste une étape — détails dans la section sur la clé ;
  • faire des copies de sauvegarde des fichiers modifiés et, à la fin, envoyer une requête réelle à la passerelle pour vérifier immédiatement la clé, l'adresse et le modèle.

L'installateur trouve le répertoire de configuration comme Goose lui-même : ~/.config/goose sous Linux et macOS, %APPDATA%\Block\goose\config sous Windows, <root>/config si GOOSE_PATH_ROOT est défini. Un autre modèle se choisit avec le flag --model et les raccourcis deepseek, glm ou minimax ; un modèle explicitement indiqué est toujours écrit. Le mode sans question récupère la clé depuis la variable d'environnement :

JOINGONKA_API_KEY=jg-your-key npx @joingonka/setup --tool goose --model glm --non-interactive

Configuration manuelle : fichier de fournisseur et config.yaml

Tout ce que fait l'installateur peut être effectué manuellement. Le fournisseur est un fichier JSON distinct ~/.config/goose/custom_providers/custom_joingonka.json ; le nom du fichier correspond au champ name :

{
  "name": "custom_joingonka",
  "engine": "openai",
  "display_name": "JoinGonka",
  "description": "JoinGonka Gateway — Gonka AI inference (OpenAI-compatible)",
  "api_key_env": "CUSTOM_JOINGONKA_API_KEY",
  "base_url": "https://gate.joingonka.ai/v1/chat/completions",
  "models": [
    { "name": "deepseek-ai/DeepSeek-V4-Flash-0731", "context_limit": 380000 },
    { "name": "zai-org/GLM-5.3-Flash", "context_limit": 390000 },
    { "name": "MiniMaxAI/MiniMax-M2.7", "context_limit": 200000 }
  ],
  "supports_streaming": true,
  "requires_auth": true
}
ChampValeurPoints importants
namecustom_joingonkaC'est le nom du fichier et la valeur du paramètre --provider
engineopenaiLe format OpenAI Chat Completions est la méthode principale de la passerelle. En dehors de celui-ci, Goose reconnaît anthropic et ollama
api_key_envCUSTOM_JOINGONKA_API_KEYNon pas la clé elle-même, mais le nom du secret. Le fichier ne contient pas la valeur elle-même — l'endroit où Goose la cherche est expliqué dans la section suivante
base_urlhttps://gate.joingonka.ai/v1/chat/completionsL'adresse complète, comme dans l'exemple de documentation de Goose : cette forme est également comprise par les anciennes versions
modelstrois entrées avec context_limitSans context_limit, Goose utilise la fenêtre définie dans son propre catalogue de modèles, ou 128 000 tokens pour un modèle inconnu, et compresse l'historique lorsqu'il atteint 80 % de la fenêtre. Les modèles réseau ont des fenêtres allant de 200 000 à 390 000
supports_streaming, requires_authtrueLa réponse est reçue en streaming, les requêtes nécessitent une clé. Ne désactivez pas le streaming : sans cela et sans limite dans la requête, la passerelle limitera la réponse à une valeur par défaut courte

Il n'y a pas de limite de réponse distincte prévue pour l'entrée du modèle dans Goose. Pour ces modèles, il ne transmet pas de limite dans la requête du tout — nous l'avons vérifié via son journal de requêtes — et en mode streaming, la passerelle limite elle-même la réponse au plafond du modèle : 32 768 tokens pour DeepSeek V4 Flash, 8192 pour GLM-5.3 Flash et MiniMax M2.7. Il n'est pas nécessaire de définir la variable globale GOOSE_MAX_TOKENS pour cela : elle est unique pour tous les fournisseurs à la fois.

Goose lit le fichier de fournisseur avec un analyseur JSON strict : un commentaire ou une virgule traînante, et le fournisseur disparaît de la liste. Vous pouvez également le créer via l'assistant (goose configure → Custom Providers), mais l'assistant ne demande pas la fenêtre de contexte — vous devrez l'ajouter manuellement.

Le fournisseur et le modèle par défaut sont définis dans ~/.config/goose/config.yaml. C'est ainsi que Goose les enregistre lui-même :

active_provider: custom_joingonka
providers:
  custom_joingonka:
    enabled: true
    model: deepseek-ai/DeepSeek-V4-Flash-0731
    configured: true

L'ancienne disposition — clés plates GOOSE_PROVIDER et GOOSE_MODEL à la racine du fichier — fonctionne également : Goose la lit et la convertit lui-même vers la nouvelle lors de la première sauvegarde des paramètres, comme c'est le cas après goose configure. L'installateur sur un fichier vide écrit précisément des clés plates — n'importe quelle version les comprend. Les variables d'environnement du même nom sont prioritaires sur le fichier : si elles sont définies dans le shell, le choix du config.yaml ne prendra pas effet, et l'installateur vous en avertira.

Où se trouve la clé : keyring, secrets.yaml ou variable d'environnement

Dans le fichier du fournisseur chez Goose, il n'y a que le nom du secret — CUSTOM_JOINGONKA_API_KEY. Goose cherche la valeur dans l'ordre suivant : dans la variable d'environnement portant ce nom, puis dans le stockage système de secrets (keyring, sur macOS — Keychain), puis dans le fichier secrets.yaml à côté de la config. Les secrets atterrissent dans ce fichier lorsque le stockage de Goose est de type fichier, et ils y restent en clair, avec les droits 600. Et dans config.yaml, Goose ne cherche pas du tout les clés (documentation).

Le stockage devient fichier si le keyring est désactivé — via la variable GOOSE_DISABLE_KEYRING avec n'importe quelle valeur ou la ligne GOOSE_DISABLE_KEYRING: true dans config.yaml — ou s'il est indisponible : serveur sans session graphique, conteneur, CI. Dans le second cas, Goose écrit dans le journal « Keyring unavailable. Using file storage for secrets. » et bascule lui-même sur le fichier — c'est exactement ce que nous avons observé dans le conteneur. L'installateur ne sait pas écrire dans le keyring, et ne le désactivera pas à votre place : Goose cesserait de voir les secrets qui y sont déjà stockés. D'où les scénarios :

SituationCe que fera l'installateurCe qu'il vous restera
Bureau avec keyring : macOS, Windows, Linux avec session graphiqueConfigurera le fournisseur et le modèle, n'écrira pas la clé et affichera « ONE STEP LEFT »Enregistrer la clé une fois via l'assistant
Serveur ou conteneur sans keyring, secrets.yaml pas encore présentIdem : impossible de deviner le stockage fichier par des indices indirectsPasser par l'assistant — Goose placera lui-même la clé dans secrets.yaml, ensuite l'installateur la mettra à jour là-bas
GOOSE_DISABLE_KEYRING défini ou secrets.yaml déjà présentÉcrira la clé dans secrets.yaml avec les droits 600, préservera les autres secretsRien
La clé est fournie au fournisseur par une commande (champ auth)N'écrira pas la clé : chez Goose auth et api_key_env sont mutuellement exclusifsRien

L'étape restante. Lancez goose configure et répondez aux questions de l'assistant — voici comment elles se présentaient lors de notre exécution :

  • What would you like to configure? → Configure Providers ;
  • Which model provider should we use? → JoinGonka (chez nous, il était en premier) ;
  • Would you like to set CUSTOM_JOINGONKA_API_KEY? (optional) → Yes, puis à Enter value for CUSTOM_JOINGONKA_API_KEY, collez la clé — des carrés apparaîtront à la place des caractères. La clé est enregistrée immédiatement ;
  • Would you like to configure advanced settings? → No ;
  • Select a model — Goose récupère la liste auprès de la passerelle : MiniMaxAI/MiniMax-M2.7, deepseek-ai/DeepSeek-V4-Flash-0731, zai-org/GLM-5.3-Flash. Le curseur est sur la première ligne — pour conserver le modèle choisi par l'installateur, sélectionnez DeepSeek V4 Flash avec les flèches. Après une requête de vérification, l'assistant se terminera par « Configuration saved successfully ».

Dans Goose Desktop, le chemin est le suivant : Settings → Models → Configure providers → JoinGonka → clé → Submit. Vous ne voulez pas coller la clé à la main — placez-la dans une variable et lancez l'assistant depuis le même shell : Goose affichera « CUSTOM_JOINGONKA_API_KEY is set via environment variable » et proposera d'enregistrer la valeur :

read -s CUSTOM_JOINGONKA_API_KEY && export CUSTOM_JOINGONKA_API_KEY
goose configure

Et pour une seule exécution, la clé peut être transmise sans être enregistrée du tout : CUSTOM_JOINGONKA_API_KEY=jg-your-key goose session, dans PowerShell — $env:CUSTOM_JOINGONKA_API_KEY = "jg-your-key"; goose session. La variable d'environnement prime sur la valeur enregistrée, mais ne vit que jusqu'à la fermeture du shell.

Vérification : ce qui doit se passer

Commencez par vérifier les paramètres que Goose voit réellement :

goose info -v

Dans le bloc « goose Configuration », vous devez retrouver les lignes GOOSE_PROVIDER: custom_joingonka et GOOSE_MODEL avec l'identifiant du modèle. Ensuite, faites un test ponctuel sans session interactive : placez dans un répertoire vide un fichier contenant un bug évident et demandez-lui de le trouver.

goose run --no-session -t "Read calc.py and tell me in one sentence whether it has a bug."

L'option --no-session n'enregistre pas l'exécution dans l'historique. Un en-tête du type ● new session · custom_joingonka deepseek-ai/DeepSeek-V4-Flash-0731 apparaîtra, suivi de l'appel d'outil — ▸ shell avec la commande cat calc.py — puis de la réponse indiquant le bug détecté. Pour imposer un autre modèle le temps d'une exécution, utilisez --model : zai-org/GLM-5.3-Flash ou MiniMaxAI/MiniMax-M2.7. Lors de notre test du 23 septembre 2026, les trois modèles du réseau ont bouclé le cycle « requête → outil → résultat → réponse ». Par défaut, le CLI Goose masque le raisonnement des modèles — pour l'afficher, utilisez la variable GOOSE_CLI_SHOW_THINKING=1 lorsque la sortie s'affiche dans le terminal. Côté passerelle, la requête est visible dans votre espace client : section « Utilisation », avec le détail « Par modèles » et « Par clés ».

En cas de problème, le diagnostic se lit généralement directement dans le message :

Ce que vous voyezCe que cela signifieQue faire
Error missing required key CUSTOM_JOINGONKA_API_KEY: Configuration value not foundGoose n'a trouvé la clé ni dans l'environnement, ni dans le gestionnaire de secretsEnregistrez la clé via l'assistant. Si la clé se trouve dans secrets.yaml et que l'erreur persiste, c'est que Goose conserve désormais les secrets dans le keyring — enregistrez à nouveau la clé via l'assistant
Authentication failed … Status: 401 Unauthorized. Response: Invalid API key.La passerelle a rejeté la cléEnregistrez la clé à nouveau — en entier, sans espaces. N'oubliez pas que la variable d'environnement CUSTOM_JOINGONKA_API_KEY prime sur la valeur enregistrée
Error Unknown provider: custom_joingonkaLe fichier du provider n'a pas pu être lu : commentaire, virgule superflue ou faute de frappe dans le JSONCorrigez le fichier ou supprimez-le et relancez l'installateur : face à un fichier corrompu, l'installateur n'écrit rien et se contente de le signaler
Bad request (400): Model "…" not found. Available: …Faute de frappe dans le nom du modèleLa passerelle liste elle-même les identifiants disponibles — copiez celui qu'il vous faut
Rate limit exceeded: Model "…" is currently overloaded in the Gonka network (rate limit)La capacité disponible du modèle sur le réseau est saturée aux heures de pointeGoose relance automatiquement la requête, mais avec des pauses courtes. Changez de modèle — /model en session ou --model au lancement — ou patientez une minute ; l'état du réseau est visible sur la page de statut
402Le solde est épuiséRechargez votre compte dans la section « Facturation » ; la clé, elle, reste fonctionnelle

Combien ça coûte

Un agent consomme des jetons différemment d'un chat. Dès la configuration standard, Goose envoie au modèle les descriptions de dix-huit outils intégrés, et lors de notre test, chaque tour entraînait environ 4,6 mille jetons d'entrée avant même votre question. La tâche « lire un fichier et trouver une erreur » a pris deux à trois tours et 10 à 15 mille jetons, presque entièrement en entrée ; Goose effectue lui-même une requête courte supplémentaire pour inventer un nom à la session. Les extensions inutiles peuvent être désactivées dans goose configure → Toggle Extensions — c'est le moyen le plus simple de réduire l'entrée.

Via le JoinGonka Gateway, les jetons coûtent $0.0069 par million en entrée et $0.021 par million en sortie — le prix est identique pour tous les modèles du réseau et est récupéré sur cette page à partir d'une source en temps réel.

ScénarioConsommationVia Gateway
Tâche unique : lire un fichier, trouver une erreur10-15K jetonsquelques centimes
Journée de travail actif3-7M jetonsquelques centimes
Mois de développement actif~150M jetonsenviron un dollar

Les estimations dans la colonne de droite sont basées sur les prix de septembre 2026. À titre de comparaison — comment payer pour des modèles dans Goose en général :

MéthodeModèle de paiementCe qui limite
Abonnement Claude, ChatGPT ou Gemini via ACPMontant fixe par moisQuotas et plafonds de limite côté fournisseur
Clé fournisseur directePar jetons selon le tarif du fournisseurLa facture augmente avec la longueur des sessions
JoinGonka GatewayPar jetons, solde prépayéLa consommation est visible dans le tableau de bord ; pas d'abonnements ni de quotas mensuels

La consommation exacte et le solde restant sont consultables dans le tableau de bord, sections « Utilisation » et « Facturation ». Pourquoi DeepSeek V4 Flash est configuré par défaut — avec le plus grand plafond de réponse du réseau —, est détaillé dans l'aperçu du modèle.

Points d'attention

Mode de confirmation. Par défaut, Goose fonctionne en mode auto — totalement autonome : il modifie et supprime les fichiers, lance des commandes et utilise des extensions sans rien demander. Sur votre propre projet, c'est pratique ; sur du code qui ne vous appartient pas, mieux vaut durcir le mode :

# inside a session
/mode smart_approve

# permanently, as a line in config.yaml
GOOSE_MODE: smart_approve
ModeComportement de Goose
autoAgit sans confirmation — mode par défaut
smart_approveLaisse passer seul les actions à faible risque, demande pour les autres
approveDemande avant chaque appel d'outil
chatSe contente de discuter : ni outils, ni modifications

C'est une propriété de Goose lui-même, indépendante du fournisseur du modèle.

Changer de modèle. En session — la commande /model avec l'identifiant, par exemple /model zai-org/GLM-5.3-Flash ; pour une exécution — l'option --model de goose run et goose session ; définitivement — goose configure ou la ligne model dans config.yaml. Le fournisseur, lui, reste le même. GLM-5.3 Flash, qui raisonne, est excellent pour la logique embrouillée, mais sa réponse plafonne à 8192 tokens, dont une partie part dans le raisonnement — détails dans la présentation du modèle.

Exécutions sans surveillance. goose run convient aux scripts et à la CI : l'option -q ne laisse dans la sortie que la réponse du modèle, --output-format json renvoie un résultat exploitable. Les garde-fous --max-turns (combien de tours l'agent effectue sans intervention humaine) et --max-tool-repetitions (combien de fois d'affilée un même outil peut être appelé avec les mêmes arguments) protègent contre les boucles.

Confidentialité. Les statistiques d'usage anonymes de Goose sont désactivées par défaut (GOOSE_TELEMETRY_ENABLED). La passerelle ne conserve pas le contenu des prompts ni des réponses — seuls des agrégats de consommation restent dans les statistiques.

Goose se connecte au JoinGonka Gateway avec une seule commande — npx @joingonka/setup --tool goose — ou via un seul fichier : fournisseur custom_joingonka dans custom_providers (engine: openai, adresse https://gate.joingonka.ai/v1/chat/completions, modèles avec context_limit réels) plus le fournisseur et le modèle par défaut dans config.yaml. Goose ne garde pas la clé dans la configuration, mais dans le trousseau (keyring) ou dans secrets.yaml : sur une machine avec keyring, il ne reste qu'une étape — goose configure → Configure Providers → JoinGonka → clé, et au choix du modèle, il est préférable de laisser DeepSeek V4 Flash. Vérification — goose run et la section « Utilisation » dans le tableau de bord ; le prix est identique pour DeepSeek V4 Flash, GLM-5.3 Flash et MiniMax M2.7, donc le modèle est choisi en fonction du comportement, et non du budget.

Vous voulez en savoir plus ?

Explorez d'autres sections ou commencez à gagner des GNK dès maintenant.

Obtenir une clé et des jetons gratuits →