Sections de la base de connaissances ▾
Navigation
▸ Commencez ici Par rôlesCatégories
- Cursor + Gonka AI — LLM pas cher pour le codage
- Claude Code + Gonka AI — LLM pour le terminal
- OpenClaw + Gonka AI — Agents IA accessibles
- OpenCode : votre propre modèle dans le terminal
- Continue.dev + Gonka AI — IA pour VS Code/JetBrains
- Cline + Gonka AI — Agent IA dans VS Code
- Aider + Gonka AI — programmation en binôme avec l'IA
- LangChain + Gonka AI — Applications IA pour des centimes
- n8n + Gonka AI — Automatisation avec IA pas chère
- Open WebUI + Gonka AI — Votre propre ChatGPT
- LibreChat + Gonka AI — ChatGPT open-source
- Hermes Agent + DeepSeek sur le réseau Gonka : un agent autonome à petit prix
- Kilo Code + Gonka AI — Agent IA dans VS Code
- Roo Code + Gonka AI — Agent IA autonome dans VS Code
- LlamaIndex + Gonka AI — Applications RAG pour une bouchée de pain
- PydanticAI + Gonka — Agents IA typés pour une bouchée de pain
- Vercel AI SDK + Gonka AI — Applications IA en TypeScript pour une bouchée de pain
- TanStack AI + Gonka — Applications IA en TypeScript pour une bouchée de pain
- API démarrage rapide — curl, Python, TypeScript
- JoinGonka Gateway — présentation complète
- Management Keys — SaaS sur Gonka
- L'API AI la moins chère : comparaison des fournisseurs 2026
- Comment acheter des tokens AI et une clé API : 3 méthodes en 2026
- Limite de requêtes Cursor Pro atteinte — analyse et alternative économique
- Claude Code moins cher — analyse de facture et changement
- Cline brûle votre argent — pourquoi l'agent consomme autant
- OpenClaw coûte cher — pourquoi l'agent consomme des tokens et comment économiser
- OpenRouter : une alternative bon marché — comparaison avec JoinGonka Gateway
- Meilleur modèle AI pour le codage en 2026 : comparaison et tarifs
- Alternative bon marché à GitHub Copilot sans limites
- Alternative bon marché à Windsurf sans crédits ni limites
- L'API la moins chère pour les agents AI en 2026
- ZCode : inférence GLM abordable au lieu du GLM Coding Plan
- JetBrains IDE + JoinGonka Gateway — votre endpoint au lieu des crédits
- GitHub Copilot BYOK — vos modèles plutôt que vos quotas
- Zed + JoinGonka Gateway — inférence bon marché dans l'éditeur
- Pi + JoinGonka Gateway — agent de terminal sur inférence à bas prix
- Codex CLI : utilisez votre propre clé plutôt qu'un abonnement
- DeepSeek Harness : votre propre fournisseur via JoinGonka Gateway
- MiniMax Code : agent MiniMax avec votre clé via Gonka
- Warp + JoinGonka Gateway — agent de terminal sur votre propre endpoint
- Trae + JoinGonka Gateway — modèles du réseau Gonka dans AI-IDE
- Cherry Studio + JoinGonka Gateway — client AI de bureau
- omp (Oh My Pi) + JoinGonka Gateway : agent avec rôles de modèles
- OpenHands + JoinGonka Gateway : agent sur votre propre endpoint
- Qwen Code après la fermeture de qwen-oauth : fonctionnement via JoinGonka Gateway
- Goose + JoinGonka Gateway : votre propre fournisseur et clé dans le trousseau
- Crush + JoinGonka Gateway : agent Charm sur les modèles du réseau Gonka
- Zoo Code + JoinGonka Gateway : migrer de Roo Code vers les modèles Gonka
- Kimi Code CLI : agent Moonshot AI sur votre clé via Gonka
- Factory Droid + JoinGonka Gateway : BYOK sur les modèles du réseau Gonka
- MiMo Code + JoinGonka Gateway : agent Xiaomi sur les modèles du réseau Gonka
Outils
Crush + JoinGonka Gateway : agent Charm sur les modèles du réseau Gonka
Crush est un agent de codage terminal de Charm, l'équipe dont les bibliothèques pour interfaces console servent à construire des dizaines de milliers de programmes. Il lit et modifie les fichiers de projet, exécute des commandes, récupère le contexte auprès des serveurs de langage (LSP), connecte des outils externes via MCP et sait changer de modèle en pleine session sans perdre le contexte. Fonctionne dans les terminaux macOS, Linux et Windows, ainsi que sur Android et BSD ; licence — FSL-1.1-MIT. Le pédigrée du projet est notable : le dépôt d'archive opencode-ai/opencode renvoie directement à Crush — le projet a été poursuivi par son auteur original et l'équipe de Charm.
Crush accepte deux types de fournisseurs tiers — avec API compatible OpenAI et Anthropic. JoinGonka Gateway se connecte comme openai-compat : avec une commande d'installation ou une dizaine de lignes de configuration. Ensuite, l'agent fonctionne sur les modèles du réseau décentralisé Gonka — DeepSeek V4 Flash, GLM-5.3 Flash et MiniMax M2.7 — à un prix unique : $0.0069 par million de jetons d'entrée.
Deux particularités de Crush doivent être connues avant la première session : il répartit les modèles dans deux emplacements, large et small, et le modèle choisi dans l'interface est stocké dans un fichier d'état séparé, qui prévaut sur la configuration. Une section dédiée leur est consacrée. Les commandes et messages ci-dessous ont été vérifiés par une exécution réelle de Crush 0.96.1 via la passerelle le 23 septembre 2026. Après confirmation de l'adresse, 3M de jetons gratuits seront crédités sur le compte — assez pour tout refaire vous-même.
Démarrage rapide : installation et une seule commande
Étape 1 : installer Crush. Les méthodes officielles depuis le README du projet :
# Homebrew
brew install charmbracelet/tap/crush
# npm
npm install -g @charmland/crush
# Arch Linux
yay -S crush-bin
# Windows
winget install charmbracelet.crush
# Go
go install github.com/charmbracelet/crush@latestOn y trouve aussi les dépôts de paquets pour Debian, Ubuntu, Fedora et RHEL, Nix et Scoop, et la page des releases propose des binaires prêts à l'emploi. Pour vérifier : crush --version, qui renvoie une ligne du type crush version v0.96.1.
É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'installeur.
npx @joingonka/setup --tool crushL'installeur vous demandera la clé — elle n'est pas passée en argument de ligne de commande, pour ne pas rester dans l'historique du shell — et fera quatre choses :
- inscrire le fournisseur
joingonkadans~/.config/crush/crush.json: typeopenai-compat, adresse de la passerelle, clé en clair et trois modèles du réseau avec leurs fenêtres de contexte, plafonds de réponse et prix par million de tokens, qu'il récupère en direct auprès de la passerelle au moment de l'installation — c'est sur cette base que Crush calcule le coût de la session. Le fichier recevra les droits600; - définir les modèles : dans le slot large, DeepSeek V4 Flash ; dans le small, MiniMax M2.7 ; et GLM-5.3 Flash restera dans la liste pour une sélection manuelle. Il ne le fait que si le slot large est vide ou pointe vers notre modèle retiré du réseau ; un choix tiers est conservé, avec une indication en sortie sur la façon de basculer ;
- vérifier que le choix prend effet : le modèle sélectionné dans l'interface de Crush est stocké dans le fichier d'état, qui prime sur la config — d'où la section sur large et small ;
- faire une sauvegarde, laisser les autres fournisseurs et réglages tels quels, et terminer par une requête réelle vers la passerelle pour valider immédiatement la clé, l'adresse et le modèle.
Pour choisir un autre modèle, utilisez le flag --model avec les raccourcis deepseek, glm ou minimax ; un modèle explicitement indiqué est toujours écrit. L'installeur prend en compte les répertoires non standard comme le fait Crush lui-même : CRUSH_GLOBAL_CONFIG pour la config, CRUSH_GLOBAL_DATA pour le fichier d'état, ainsi que XDG_CONFIG_HOME et XDG_DATA_HOME. Pour les serveurs et les scripts, il existe un mode sans questions, où la clé est lue depuis une variable d'environnement :
JOINGONKA_API_KEY=jg-your-key npx @joingonka/setup --tool crush --model glm --non-interactiveLe format principal de Crush est désormais crushrc, mais l'installeur écrit crush.json : toutes les versions le comprennent. Si vous avez déjà un crushrc, Crush fusionnera les deux fichiers, crushrc l'emportant en cas de conflit de clés, et l'installeur n'y touche pas.
Configuration manuelle : crush.json ou crushrc
Tout ce que fait l'installateur peut être écrit à la main. Voici un ~/.config/crush/crush.json fonctionnel — ce fichier, nous l'avons fait passer par la passerelle :
{
"$schema": "https://charm.land/crush.json",
"providers": {
"joingonka": {
"name": "JoinGonka (Gonka)",
"type": "openai-compat",
"base_url": "https://gate.joingonka.ai/v1",
"api_key": "jg-your-key",
"models": [
{ "id": "deepseek-ai/DeepSeek-V4-Flash-0731", "name": "DeepSeek V4 Flash (Gonka)",
"context_window": 380000, "default_max_tokens": 32768,
"can_reason": true, "supports_attachments": false },
{ "id": "MiniMaxAI/MiniMax-M2.7", "name": "MiniMax M2.7 (Gonka)",
"context_window": 200000, "default_max_tokens": 8192,
"can_reason": false, "supports_attachments": false },
{ "id": "zai-org/GLM-5.3-Flash", "name": "GLM-5.3 Flash (Gonka)",
"context_window": 390000, "default_max_tokens": 8192,
"can_reason": true, "supports_attachments": false }
]
}
},
"models": {
"large": { "provider": "joingonka", "model": "deepseek-ai/DeepSeek-V4-Flash-0731" },
"small": { "provider": "joingonka", "model": "MiniMaxAI/MiniMax-M2.7" }
}
}| Champ | Valeur | À retenir |
|---|---|---|
type | openai-compat | Type destiné aux services tiers dotés d'une API compatible OpenAI. Le type openai, la documentation de Crush le réserve aux requêtes passant par OpenAI lui-même |
base_url | https://gate.joingonka.ai/v1 | Avec /v1 à la fin : le chemin /chat/completions, Crush l'ajoute lui-même |
api_key | votre clé jg-… | Crush fait passer la valeur par la substitution du shell, donc à la place de la clé vous pouvez écrire $JOINGONKA_API_KEY — la variable doit alors être exportée là d'où Crush est lancé |
context_window | fenêtre du modèle | C'est sur cette base que Crush affiche le remplissage du contexte et décide quand compresser l'historique |
default_max_tokens | plafond de réponse | Part dans chaque requête sous max_tokens. Chez les modèles raisonneurs, le raisonnement entre aussi dans ce budget |
Crush n'accepte que du JSON strict : un commentaire ou une virgule superflue, et il ne démarre pas. Les champs de prix (cost_per_1m_in, cost_per_1m_out et les deux champs pour le cache) ne servent qu'au compteur de coût : l'installateur y inscrit le prix réel de la passerelle, et sans eux Crush fonctionne et affiche zéro — seul l'éditeur avec le schéma de $schema les signalera comme obligatoires.
Le même fournisseur au format crushrc, c'est du Bash ordinaire avec les commandes intégrées de Crush. Le fichier ~/.config/crush/crushrc :
provider add joingonka \
--name "JoinGonka (Gonka)" \
--type openai-compat \
--base-url "https://gate.joingonka.ai/v1" \
--api-key "${JOINGONKA_API_KEY:?set JOINGONKA_API_KEY}"
model add joingonka/deepseek-ai/DeepSeek-V4-Flash-0731 \
--name "DeepSeek V4 Flash (Gonka)" \
--context-window 380000 --default-max-tokens 32768 --can-reason true
model add joingonka/MiniMaxAI/MiniMax-M2.7 \
--name "MiniMax M2.7 (Gonka)" \
--context-window 200000 --default-max-tokens 8192
model add joingonka/zai-org/GLM-5.3-Flash \
--name "GLM-5.3 Flash (Gonka)" \
--context-window 390000 --default-max-tokens 8192 --can-reason true
model large joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
model small joingonka/MiniMaxAI/MiniMax-M2.7Ici, le modèle s'écrit sous la forme provider/model-id : avant la première barre oblique, le nom du fournisseur, ensuite l'identifiant du réseau tel quel. La forme ${JOINGONKA_API_KEY:?…} garde la clé hors du fichier, mais sans variable exportée Crush ne démarre pas — mieux vaut une erreur au démarrage que des requêtes avec une clé vide.
Modèles large et small et fichier d'état
Le modèle dans Crush n'est pas choisi comme un tout, mais pour deux emplacements :
| Emplacement | Ce qui s'y exécute | Ce que le programme d'installation définit | Comment changer |
|---|---|---|---|
large | Agent principal : toutes les actions incluant la lecture et l'édition de fichiers ainsi que les commandes | DeepSeek V4 Flash : fenêtre de 380K et le plus grand plafond de réponse du réseau, 32768 | ctrl+l dans l'interface, -m pour crush run, models.large dans la config |
small | Tâches auxiliaires : titre de la session et sous-agent qui effectue des recherches sur le Web et lit les pages web. Si le petit modèle échoue à trouver un titre, Crush répète la requête au grand | MiniMax M2.7 : il possède la plus grande capacité du réseau | --small-model pour crush run, models.small dans la config, model small dans crushrc |
Le troisième modèle du réseau, le modèle de raisonnement GLM-5.3 Flash, est choisi pour une logique complexe, en gardant à l'esprit que son plafond de réponse est de 8192 et qu'une partie est utilisée pour le raisonnement — plus de détails dans l' aperçu du modèle. Pour une exécution, le modèle est défini par son nom complet : crush run -m joingonka/zai-org/GLM-5.3-Flash "…". Tous les noms disponibles sont affichés par crush models joingonka.
Fichier d'état. Le modèle choisi dans l'interface via ctrl+l n'est pas enregistré par Crush dans crush.json, mais dans un fichier d'état machine : ~/.local/share/crush/crush.json, sous Windows — %LOCALAPPDATA%\crush\crush.json. Ce fichier prévaut sur la config utilisateur et crushrc : Crush les lit dans l'ordre /etc/crush/crush.json → ~/.config/crush/crush.json → ~/.config/crush/crushrc → fichier d'état, chaque fichier écrasant le précédent. Seuls les paramètres du projet prévalent — crush.json ou crushrc dans son répertoire. L'emplacement des fichiers sur votre machine est indiqué par crush dirs.
Dans notre test, nous avons ouvert la sélection des modèles — le fournisseur « JoinGonka (Gonka) » y figure avec la mention « ✓ Configured » — et avons choisi MiniMax M2.7. Crush a répondu « Large model changed to MiniMax M2.7 (Gonka) » et a écrit dans le fichier d'état :
{"models":{"large":{"model":"MiniMaxAI/MiniMax-M2.7","provider":"joingonka","max_tokens":8192}}, …}Désormais, ce modèle prévaut sur ce qui est écrit dans crush.json. Le programme d'installation reconnaît cette situation et se comporte différemment :
- sans
--modelil ne touche pas au fichier d'état — c'est votre choix de travail — mais avertit clairement avec quel modèle Crush démarrera réellement :Heads-up: Crush will still start with joingonka/MiniMaxAI/MiniMax-M2.7, not joingonka/deepseek-ai/DeepSeek-V4-Flash-0731. Il en va de même si GLM-5.3 Flash ou le modèle d'un autre fournisseur est sélectionné dans l'interface ; - avec
--modelexplicite il corrige exactement une entrée dans le fichier d'état —models.large— après avoir sauvegardé une copie, et indique ce qu'il y avait avant et après. Sinon, l'indicateur ne produirait aucun effet silencieusement. Après cette exécution, Crush dans notre test a démarré avec le modèle spécifié dans l'indicateur.
Vérification : ce qui devrait se passer
Vérifiez d'abord que Crush voit bien le fournisseur :
crush models joingonkaLa réponse tient en trois lignes :
joingonka/MiniMaxAI/MiniMax-M2.7
joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
joingonka/zai-org/GLM-5.3-FlashEnsuite, faites un essai unique sans interface. Placez dans le répertoire du projet un fichier contenant un bug évident et demandez-lui de le trouver :
crush run -q "Read calc.py and tell me in one sentence whether it has a bug."L'agent doit appeler lui-même l'outil de lecture de fichier et répondre sur le fond, avec le numéro de ligne. Lors de notre essai, les trois modèles du réseau ont trouvé le bug, et la tâche a pris 20 à 40 secondes. Le flag -q masque l'indicateur d'attente. En mode crush run, tous les appels d'outils sont approuvés automatiquement : lancez-le donc dans votre propre projet. Dans l'interface classique (commande crush), le modèle actif apparaît dans la barre d'état : ◇ DeepSeek V4 Flash (Gonka) via JoinGonka (Gonka). Crush conserve ses sessions et son journal dans le répertoire .crush du projet, protégé de git par son propre .gitignore ; le journal s'affiche avec crush logs. Côté passerelle, la requête est visible dans l'espace client : section « Utilisation », ventilations « Par modèles » et « Par clés ».
Si quelque chose ne tourne pas rond, le diagnostic se lit généralement directement dans le message :
| Ce que vous voyez | Ce que cela signifie | Que faire |
|---|---|---|
unauthorized: Invalid API key. | La passerelle n'a pas accepté la clé | Vérifiez api_key : la clé en entier, sans espaces. S'il s'agit d'une référence à une variable, celle-ci doit être exportée dans ce shell |
invalid JSON in config file …/crush.json | Le fichier contient un commentaire, une virgule superflue ou une coquille | Crush n'accepte que du JSON strict : corrigez le fichier. L'installateur ne supprime pas les commentaires lui-même, mais il vous avertit de leur présence ; un fichier totalement illisible, lui, n'est pas touché et la cause est indiquée |
failed to load shell config …/crushrc: … exit status 1 | Erreur dans crushrc, le plus souvent une variable non définie contenant la clé sous la forme ${…:?} | Exportez la variable avant le lancement ou corrigez la ligne sur laquelle le script plante |
Failed to override models: large model "…" not found | Coquille dans le nom du modèle passé au flag -m | Copiez le nom depuis la sortie de crush models joingonka |
too many requests: Model "…" is currently overloaded in the Gonka network (rate limit) | Le modèle a épuisé sa capacité disponible sur le réseau aux heures de pointe | Crush relance lui-même la requête avec des pauses croissantes — environ une minute lors de notre essai — et n'abandonne qu'ensuite. Basculez vers un autre modèle via ctrl+l ou -m, ou patientez ; l'état est visible sur la page de statut |
| Crush s'est ouvert sur un autre modèle que celui annoncé par l'installateur | La sélection faite dans l'interface est stockée dans un fichier d'état et prend le pas sur la config | Choisissez le modèle via ctrl+l ou relancez l'installation avec --model |
402 | Le solde est épuisé | Rechargez le compte dans la section « Facturation » ; la clé, elle, reste valide |
Combien cela coûte
Un agent consomme des jetons différemment d'un chat : pour chaque phrase, Crush ajoute un prompt système et les descriptions de ses outils, et une tâche prend généralement plusieurs étapes. Dans notre test, chaque requête au modèle transportait environ 11,5 mille jetons en entrée, et la tâche « lire un fichier et trouver l'erreur » a nécessité deux à trois requêtes et 23-35 mille jetons, presque entièrement en entrée. Le prix par jeton est donc crucial ici.
Via 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 depuis une source en temps réel.
| Scénario | Consommation | Via Gateway |
|---|---|---|
| Tâche unique : lire un fichier, trouver une erreur | 23-35K jetons | centimes de cent |
| Journée de travail actif | 3-7M jetons | quelques centimes |
| Mois de développement actif | ~150M jetons | environ un dollar |
Les estimations dans la colonne de droite sont basées sur les prix de septembre 2026. À titre de comparaison, voici comment payer les modèles dans Crush :
| Méthode | Modèle de paiement | Ce qui limite |
|---|---|---|
| Hyper — fournisseur officiel Charm | abonnement, niveau gratuit disponible | conditions tarifaires chez Charm |
| Clé fournisseur directement | par jetons selon le prix du fournisseur | la facture augmente avec la durée des sessions ; le prix dépend du modèle |
| JoinGonka Gateway | par jetons, solde prépayé | consommation visible dans le tableau de bord ; pas d'abonnement ni de quotas mensuels |
Le compteur de coûts dans l'interface Crush calcule selon les champs de prix de la configuration. Il contient le prix de la passerelle au moment de l'installation, et le prix en dollars sur le réseau fluctue avec le cours du GNK, donc le compteur est une estimation. La consommation exacte et le solde se trouvent dans le tableau de bord, dans les sections « Utilisation » et « Facturation ». Pourquoi DeepSeek V4 Flash est défini par défaut dans le slot large est détaillé dans la présentation du modèle.
Points à considérer
Permissions. Par défaut, l'interface de Crush demande une autorisation avant chaque appel d'outil. Le flag --yolo supprime toutes les questions d'un coup, et les outils auxquels vous faites confiance de manière ciblée se listent dans la config :
# crushrc
permissions allow view ls grep
# crush.json
"permissions": { "allowed_tools": ["view", "ls", "grep"] }Rappel : crush run approuve tout de lui-même. C'est une propriété de Crush, indépendante du fournisseur du modèle.
Timeout des requêtes. Crush coupe la requête si aucun fragment de réponse n'arrive du modèle pendant un long moment : en version 0.96.1, c'est deux minutes de silence (la documentation annonce 60 secondes, mais dans le code et lors de notre test, c'est deux minutes). Les pings techniques par lesquels la passerelle maintient la connexion ne remettent pas ce compteur à zéro — nous l'avons vérifié sur un banc local. Or la passerelle, aux heures de charge, attend jusqu'à 150 secondes le premier token du réseau : mieux vaut donc augmenter la marge :
# crushrc
option request-timeout 300
# crush.json
"options": { "request_timeout": 300 }Signatures dans les commits. Les commits et les pull requests créés par Crush reçoivent par défaut la ligne Assisted-by: Crush:<model> et la mention « Generated with Crush ». Si vous n'en voulez pas :
# crushrc
option attribution-trailer-style none
option attribution-generated-with false
# crush.json
"options": { "attribution": { "trailer_style": "none", "generated_with": false } }Métriques. Crush envoie aux développeurs des statistiques d'usage pseudonymisées — uniquement des métadonnées, sans prompts ni réponses. Désactivation via la variable CRUSH_DISABLE_METRICS=1 ou DO_NOT_TRACK=1. De son côté, la passerelle ne conserve pas le contenu des prompts et des réponses — seuls des agrégats de consommation subsistent dans les statistiques.
La config, c'est du code. Crush exécute crushrc comme crush.json avec les droits de votre shell : un $(…) dans un champ de clé s'exécutera au chargement, et le crushrc du projet s'activera dès que vous ouvrirez Crush dans ce répertoire. Ne lancez pas l'agent dans un dépôt tiers sans avoir lu ses configs.
npx @joingonka/setup --tool crush — ou via le bloc providers.joingonka dans ~/.config/crush/crush.json : type openai-compat, adresse https://gate.joingonka.ai/v1, clé jg-…, modèles avec des paramètres context_window et default_max_tokens corrects. La même chose peut être configurée avec plusieurs lignes provider add et model add dans crushrc. Le slot large est attribué à DeepSeek V4 Flash, le small à MiniMax M2.7, et GLM-5.3 Flash pour la logique complexe. Le piège principal est le fichier d'état : le modèle sélectionné via ctrl+l prévaut sur la configuration, donc l'installateur avec l'option explicite --model modifie également celui-ci. Pour vérifier, utilisez crush models joingonka et crush run ; il est recommandé d'augmenter le délai d'expiration à 300 secondes.Vous voulez en savoir plus ?
Explorez d'autres sections ou commencez à gagner des GNK dès maintenant.
Obtenir une clé et des jetons gratuits →