Retour au blog

Outils & intégrationsGuide

Connecter Crush à CheapTokens : fournisseur crushrc, modèle, clé

Ajoutez CheapTokens à Crush avec deux commandes crushrc : un fournisseur de completions et un modèle avec ses vraies limites ; la clé vient d'une variable d'environnement.

Par CheapTokens TeamPublié le 6 min de lecture

Fichier de configuration Crush avec les lignes de fournisseur et de modèle CheapTokens
Sur cette page
  1. Installer Crush
  2. Ajouter CheapTokens dans crushrc
  3. Ouvrir Crush et lancer une première tâche
  4. Combien coûte une session de code
  5. Si ça ne fonctionne pas

Pour connecter Crush à CheapTokens, placez deux commandes dans votre crushrc : provider add avec l'URL de base https://api.cheaptokens.dev/v1 et --type completions, puis model add avec l'identifiant complet du modèle. Ouvrez ensuite Crush, appuyez sur Ctrl+l, choisissez le modèle et confiez-lui une tâche. La clé reste dans une variable d'environnement, pas dans le fichier.

Si vous avez suivi un guide plus ancien, il modifie probablement crush.json. Crush lit toujours ce fichier, mais son README le qualifie d'obsolète : la configuration actuelle est crushrc, et depuis la v0.99.0 (29 octobre 2026) le fournisseur --type décrit le format d'API, pas l'éditeur. Les sources sont le README de Crush et les notes de version, vérifiées le 10 novembre 2026 ; la dernière version stable à cette date est la v0.100.0.

Installer Crush#

Prenez le gestionnaire de paquets que vous avez déjà. Crush est un seul binaire, donc la méthode importe peu.

Installer Crush

Homebrew

bash
brew install charmbracelet/tap/crush

npm

bash
npm install -g @charmland/crush

winget

bash
winget install charmbracelet.crush

Go

bash
go install github.com/charmbracelet/crush@latest

Le README liste aussi les dépôts apt et yum, Scoop, Nix, Arch et FreeBSD. Lancez crush une fois pour vérifier qu'il démarre, puis quittez.

Ajouter CheapTokens dans crushrc#

Le README décrit crushrc comme « juste du Bash avec quelques builtins spécifiques à Crush ». Tout l'astuce est là : vous écrivez du shell, et provider add et model add sont des commandes que Crush comprend. Crush cherche le fichier dans cet ordre : ./.crushrc, ./crushrc, puis ~/.config/crush/crushrc.

Vous choisissez donc où il réside. Un .crushrc local au projet s'applique à un seul dépôt ; celui de ~/.config/crush/ s'applique partout. Pour un premier essai, le global est plus simple.

Placez d'abord la clé dans votre shell. Créez-la dans votre tableau de bord CheapTokens et exportez-la (la valeur ci-dessous est un exemple) :

bash
export CHEAPTOKENS_API_KEY="your-key-here"

Ouvrez ensuite ~/.config/crush/crushrc et écrivez :

bash
provider add cheaptokens --type completions \
  --base-url "https://api.cheaptokens.dev/v1" \
  --api-key "$CHEAPTOKENS_API_KEY"

model add cheaptokens/deepseek-ai/DeepSeek-V4-Flash-0731 \
  --name "DeepSeek-V4-Flash" \
  --context-window 380000 \
  --default-max-tokens 32768

Quelques détails méritent un second regard :

  • --type completions est le nom Crush pour les fournisseurs compatibles OpenAI qui ne sont pas OpenAI lui-même. responses sert au proxy OpenAI, messages aux fournisseurs compatibles Anthropic. L'ancien openai-compat fonctionne toujours et est migré.
  • L'URL de base se termine par /v1. C'est l'adresse CheapTokens pour les Chat Completions de style OpenAI ; la liste complète des endpoints figure dans la documentation CheapTokens.
  • $CHEAPTOKENS_API_KEY est développé par le shell, donc le fichier ne contient aucun secret et un .crushrc de projet peut être versionné dans git sans risque.
  • L'identifiant du modèle est le complet, deepseek-ai/DeepSeek-V4-Flash-0731. Un identifiant court comme deepseek-v4-flash est rejeté par l'API. Après le nom du fournisseur vient un second slash, car l'identifiant en contient un lui-même.
  • --context-window 380000 correspond aux 380K arrondis de DeepSeek-V4-Flash, et --default-max-tokens 32768 à sa limite par réponse. Ce sont les vraies limites du modèle dans CheapTokens : 380K de contexte et jusqu'à 32 768 tokens par réponse. Mettez-les dans model add au lieu de laisser les valeurs d'exemple du README (64000 et 5000).
Le fichier crushrc avec un fournisseur et un modèle CheapTokens
crushrc : une ligne de fournisseur et une ligne de modèle ; la clé vient de l'environnement

Le README ne montre model add qu'avec un identifiant simple (deepseek/deepseek-chat). Votre identifiant a un slash supplémentaire, donc le sélecteur de modèle à l'étape suivante est la vraie vérification : si le modèle apparaît sous cheaptokens, la ligne a été lue comme prévu.

Vous voulez un autre modèle sur le même solde ? Ajoutez une ligne model add de plus avec son propre identifiant et ses limites. GLM-5.3-Flash est zai-org/GLM-5.3-Flash (390K de contexte, jusqu'à 8 192 tokens par réponse), et MiniMax-M2.7 est MiniMaxAI/MiniMax-M2.7 (180K de contexte, jusqu'à 8 192 tokens par réponse). Gardez --default-max-tokens inférieur ou égal à la limite de réponse du modèle ajouté.

Ouvrir Crush et lancer une première tâche#

Lancez crush dans un dossier de projet. Appuyez sur Ctrl+l pour ouvrir le sélecteur de modèle et choisissez DeepSeek-V4-Flash dans le groupe cheaptokens. Le README ne décrit pas de commande crushrc pour le modèle par défaut, donc le sélecteur est la solution.

De crushrc à la première réponse : fournisseur, modèle, sélecteur, tâche
Le chemin de la configuration à la première réponse

Donnez-lui maintenant quelque chose de petit et vérifiable, par exemple : Read this repo and tell me which file starts the app, in two lines. Une réponse qui nomme un vrai fichier signifie que toute la chaîne fonctionne : clé, URL de base, identifiant du modèle.

Essayez vous-mêmeEssayez : vous appuyez sur Ctrl+l et le modèle n'est pas dans la liste. Que vérifiez-vous en premier ?Afficher la réponse

L'emplacement du fichier et la variable. Crush cherche la configuration par priorité : ./.crushrc, ./crushrc, ~/.config/crush/crushrc. Vérifiez que le projet n'a pas d'autre .crushrc ou crushrc au contenu différent, et que le fournisseur a été ajouté dans le fichier que vous avez modifié. Et echo $CHEAPTOKENS_API_KEY doit afficher la clé dans le même shell où vous lancez crush.

Les demandes de permission sont là exprès. permissions allow <tools> dans crushrc permet aux outils nommés de s'exécuter sans demander ; --yolo ignore toutes les demandes, et le README lui-même dit d'être très prudent avec.

Combien coûte une session de code#

Une étape d'agent dans un terminal est gourmande en entrée : Crush envoie l'historique, le contenu des fichiers et la sortie des outils à chaque fois, et reçoit une réponse modeste. Disons qu'une étape moyenne envoie 30 000 tokens et en reçoit 2 000. Sur DeepSeek-V4-Flash, cette étape coûte $0.00065, et le prix est le même à toute heure, sans heures de pointe. En comptant entrée et sortie ensemble, c'est moins cher que le prix de référence d'OpenRouter.

Remplacez par vos propres chiffres : une session de 40 étapes de ce type est à un curseur de distance.

Calculateur de coût

Une journée d'un agent de code dans Crush

Tokens d'entrée par requête: 30 000 · Tokens de sortie par requête: 2 000 · Requêtes par jour: 40

ModèlePar jourPar mois
GLM-5.3-Flash$0.0272$0.816
DeepSeek-V4-Flash$0.026$0.78
MiniMax-M2.7$0.072$2.16

L'entrée par étape augmente au fil de la session, donc vérifiez une longue session par rapport à la fenêtre de 380K plutôt qu'à la moyenne. Les prix actuels par token pour chaque modèle sont sur la page de tarifs.

Si ça ne fonctionne pas#

Crush écrit un journal dans votre projet, ./.crush/logs/crush.log. Lisez-le avant de deviner :

bash
crush logs --tail 500
crush logs --follow
crush --debug

Vous pouvez aussi mettre option debug true dans crushrc pour garder la sortie de débogage active. Comparez ensuite ce que vous voyez au statut HTTP renvoyé par l'API :

  • 401 : la clé a été envoyée mais n'est pas reconnue : faute de frappe ou clé remplacée. Créez-la ou copiez-la à nouveau.
  • 402 : le solde ou la limite de la clé est épuisé. Une requête sans clé du tout ressemble à cela, donc lancez echo $CHEAPTOKENS_API_KEY dans le shell où vous démarrez crush. Si la clé est là, rechargez le solde.
  • 429 : trop de requêtes en peu de temps. Attendez la valeur Retry-After et réessayez.
  • 400 ou « model not found » : regardez l'identifiant du modèle. Il doit être le complet de la documentation, avec le préfixe de l'éditeur.

Si vous venez de crush.json, notez que ~/.local/share/crush/crush.json est l'état de Crush, pas une configuration ; ne le modifiez pas à la main.

Pour la même configuration dans d'autres outils, voir Connecter Aider à CheapTokens et Connecter Kilo Code à CheapTokens. La page du modèle pour DeepSeek pas cher donne les limites du modèle utilisé ici.