Zurück zum Blog

Tools & IntegrationenAnleitung

Crush mit CheapTokens verbinden: crushrc-Provider, Modell, Schlüssel

Füge CheapTokens mit zwei crushrc-Befehlen zu Crush hinzu: einen Completions-Provider und ein Modell mit echten Limits; der Schlüssel kommt aus einer Umgebungsvariable.

Von CheapTokens TeamVeröffentlicht am 5 Min. Lesezeit

Crush-Konfigurationsdatei mit den CheapTokens-Provider- und Modell-Zeilen
Auf dieser Seite
  1. Crush installieren
  2. CheapTokens in crushrc eintragen
  3. Crush öffnen und eine erste Aufgabe ausführen
  4. Was eine Coding-Session kostet
  5. Wenn es nicht funktioniert

Um Crush mit CheapTokens zu verbinden, schreibst du zwei Befehle in deine crushrc: provider add mit der Basis-URL https://api.cheaptokens.dev/v1 und --type completions, sowie model add mit der vollständigen Modell-ID. Dann öffnest du Crush, drückst Ctrl+l, wählst das Modell aus und gibst ihm eine Aufgabe. Der Schlüssel bleibt in einer Umgebungsvariable, nicht in der Datei.

Wenn du einer älteren Anleitung gefolgt bist, bearbeitet sie wahrscheinlich crush.json. Crush liest diese Datei noch, aber das README nennt sie veraltet: Die aktuelle Konfiguration ist crushrc, und seit v0.99.0 (29. Oktober 2026) beschreibt der Provider --type das API-Format, nicht den Anbieter. Die Quellen sind das Crush-README und die Release Notes, geprüft am 10. November 2026; das neueste stabile Release zu diesem Datum ist v0.100.0.

Crush installieren#

Nimm den Paketmanager, den du bereits hast. Crush ist eine einzige Binärdatei, daher ist es egal, welchen Weg du wählst.

Crush installieren

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

Das README listet außerdem apt- und yum-Repositories, Scoop, Nix, Arch und FreeBSD. Führe einmal crush aus, um zu prüfen, ob es startet, und beende es dann.

CheapTokens in crushrc eintragen#

Das README beschreibt crushrc als "einfach Bash mit ein paar Crush-spezifischen Builtins". Das ist der ganze Trick: Du schreibst Shell, und provider add und model add sind Befehle, die Crush versteht. Crush sucht die Datei in dieser Reihenfolge: ./.crushrc, ./crushrc, dann ~/.config/crush/crushrc.

Du entscheidest also, wo sie liegt. Eine projektlokale .crushrc gilt für ein Repository; die in ~/.config/crush/ gilt überall. Für den ersten Versuch ist die globale einfacher.

Lege zuerst den Schlüssel in deiner Shell ab. Erstelle ihn in deinem CheapTokens-Dashboard und exportiere ihn (der Wert unten ist ein Platzhalter):

bash
export CHEAPTOKENS_API_KEY="your-key-here"

Öffne dann ~/.config/crush/crushrc und schreibe:

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

Ein paar Details verdienen einen zweiten Blick:

  • --type completions ist der Crush-Name für OpenAI-kompatible Provider, die nicht OpenAI selbst sind. responses ist für OpenAI-Proxying, messages für Anthropic-kompatible. Das alte openai-compat funktioniert noch und wird migriert.
  • Die Basis-URL endet auf /v1. Das ist die CheapTokens-Adresse für OpenAI-Style Chat Completions; die vollständige Liste der Endpunkte steht in der CheapTokens-Doku.
  • $CHEAPTOKENS_API_KEY wird von der Shell expandiert, daher enthält die Datei kein Geheimnis und eine Projekt-.crushrc kann bedenkenlos in git eingecheckt werden.
  • Die Modell-ID ist die vollständige, deepseek-ai/DeepSeek-V4-Flash-0731. Eine kurze ID wie deepseek-v4-flash wird von der API abgelehnt. Nach dem Provider-Namen kommt ein zweiter Schrägstrich, weil die ID selbst einen enthält.
  • --context-window 380000 sind die gerundeten 380K von DeepSeek-V4-Flash, und --default-max-tokens 32768 ist sein Limit pro Antwort. Das sind die echten Limits des Modells in CheapTokens: 380K Kontext und bis zu 32.768 Tokens pro Antwort. Trage sie in model add ein, statt die Beispielwerte aus dem README (64000 und 5000) zu belassen.
Die crushrc-Datei mit einem CheapTokens-Provider und -Modell
crushrc: eine Provider-Zeile und eine Modell-Zeile; der Schlüssel kommt aus der Umgebung

Das README zeigt model add nur mit einer einfachen ID (deepseek/deepseek-chat). Deine ID hat einen zusätzlichen Schrägstrich, daher ist der Modell-Picker im nächsten Schritt die eigentliche Prüfung: Wenn das Modell unter cheaptokens erscheint, wurde die Zeile wie beabsichtigt gelesen.

Möchtest du ein weiteres Modell auf demselben Guthaben? Füge eine weitere model add-Zeile mit eigener ID und eigenen Limits hinzu. GLM-5.3-Flash ist zai-org/GLM-5.3-Flash (390K Kontext, bis zu 8.192 Tokens pro Antwort), und MiniMax-M2.7 ist MiniMaxAI/MiniMax-M2.7 (180K Kontext, bis zu 8.192 Tokens pro Antwort). Halte --default-max-tokens auf oder unter dem Antwort-Limit des Modells, das du hinzufügst.

Crush öffnen und eine erste Aufgabe ausführen#

Starte crush in einem Projektordner. Drücke Ctrl+l, um den Modell-Picker zu öffnen, und wähle DeepSeek-V4-Flash aus der Gruppe cheaptokens. Das README beschreibt keinen crushrc-Befehl für das Standardmodell, daher ist der Picker der Weg.

Von crushrc zur ersten Antwort: Provider, Modell, Picker, Aufgabe
Der Weg von der Konfiguration zur ersten Antwort

Gib ihm jetzt etwas Kleines und Überprüfbares, etwa: Read this repo and tell me which file starts the app, in two lines. Eine Antwort, die eine echte Datei nennt, bedeutet, dass die ganze Kette funktioniert: Schlüssel, Basis-URL, Modell-ID.

Probier es selbstProbier es aus: Du drückst Ctrl+l und das Modell ist nicht in der Liste. Was prüfst du zuerst?Antwort anzeigen

Den Dateispeicherort und die Variable. Crush sucht die Konfiguration nach Priorität: ./.crushrc, ./crushrc, ~/.config/crush/crushrc. Prüfe, ob das Projekt keine andere .crushrc oder crushrc mit abweichendem Inhalt hat und ob der Provider in der Datei hinzugefügt wurde, die du bearbeitet hast. Und echo $CHEAPTOKENS_API_KEY muss den Schlüssel in derselben Shell ausgeben, in der du crush startest.

Die Berechtigungsabfragen sind absichtlich da. permissions allow <tools> in crushrc lässt benannte Tools ohne Nachfrage laufen; --yolo überspringt jede Abfrage, und das README selbst sagt, man solle damit sehr vorsichtig sein.

Was eine Coding-Session kostet#

Ein Agent-Schritt in einem Terminal ist input-lastig: Crush sendet jedes Mal den Verlauf, Dateiinhalte und Tool-Ausgaben und bekommt eine bescheidene Antwort zurück. Sagen wir, ein durchschnittlicher Schritt sendet 30.000 Tokens und empfängt 2.000. Auf DeepSeek-V4-Flash kostet dieser Schritt $0.00065, und der Preis ist zu jeder Stunde gleich, ohne Peak-Zeiten. Input und Output zusammengerechnet ist das günstiger als OpenRouters Referenzpreis.

Setze deine eigenen Zahlen ein: Eine Session mit 40 solchen Schritten ist nur einen Slider entfernt.

Kostenrechner

Ein Tag eines Coding-Agents in Crush

Eingabe-Tokens pro Anfrage: 30.000 · Ausgabe-Tokens pro Anfrage: 2.000 · Anfragen pro Tag: 40

ModellPro TagPro Monat
GLM-5.3-Flash$0.0272$0.816
DeepSeek-V4-Flash$0.026$0.78
MiniMax-M2.7$0.072$2.16

Der Input pro Schritt wächst im Verlauf der Session, daher prüfe eine lange Session gegen das 380K-Fenster statt gegen den Durchschnitt. Aktuelle Preise pro Token für jedes Modell stehen auf der Preisseite.

Wenn es nicht funktioniert#

Crush schreibt ein Log in dein Projekt, ./.crush/logs/crush.log. Lies es, bevor du rätst:

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

Du kannst auch option debug true in crushrc eintragen, um Debug-Ausgaben aktiv zu lassen. Vergleiche dann, was du siehst, mit dem HTTP-Status, den die API zurückgegeben hat:

  • 401: Der Schlüssel wurde gesendet, aber nicht erkannt: ein Tippfehler oder ein ersetzter Schlüssel. Erstelle oder kopiere ihn erneut.
  • 402: Das Guthaben oder das Limit des Schlüssels ist aufgebraucht. Eine Anfrage ganz ohne Schlüssel sieht genauso aus, daher führe echo $CHEAPTOKENS_API_KEY in der Shell aus, in der du crush startest. Wenn der Schlüssel da ist, lade das Guthaben auf.
  • 429: Zu viele Anfragen in kurzer Zeit. Warte den Wert von Retry-After ab und versuche es erneut.
  • 400 oder "model not found": Sieh dir die Modell-ID an. Sie muss die vollständige aus der Doku sein, mit dem Vendor-Präfix.

Wenn du von crush.json kommst, beachte, dass ~/.local/share/crush/crush.json der Zustand von Crush ist, keine Konfiguration; bearbeite es nicht von Hand.

Für dasselbe Setup in anderen Tools siehe Aider mit CheapTokens verbinden und Kilo Code mit CheapTokens verbinden. Die Modellseite für günstiges DeepSeek enthält die Limits des hier verwendeten Modells.