Volver al blog

Herramientas e integracionesGuía

Conectar Crush con CheapTokens: proveedor, modelo y clave en crushrc

Añade CheapTokens a Crush con dos comandos de crushrc: un proveedor de completions y un modelo con límites reales; la clave viene de una variable de entorno.

Por CheapTokens TeamPublicado el 6 min de lectura

Archivo de configuración de Crush con las líneas de proveedor y modelo de CheapTokens
En esta página
  1. Instalar Crush
  2. Poner CheapTokens en crushrc
  3. Abrir Crush y ejecutar una primera tarea
  4. Cuánto cuesta una sesión de programación
  5. Si no funciona

Para conectar Crush con CheapTokens, pon dos comandos en tu crushrc: provider add con la URL base https://api.cheaptokens.dev/v1 y --type completions, y model add con el id completo del modelo. Luego abre Crush, pulsa Ctrl+l, elige el modelo y dale una tarea. La clave permanece en una variable de entorno, no en el archivo.

Si seguiste una guía más antigua, probablemente edite crush.json. Crush sigue leyendo ese archivo, pero su README lo llama obsoleto: la configuración actual es crushrc, y desde la v0.99.0 (29 de octubre de 2026) el proveedor --type describe el formato de la API, no el proveedor. Las fuentes son el README de Crush y las notas de la versión, consultadas el 10 de noviembre de 2026; la última versión estable en esa fecha es la v0.100.0.

Instalar Crush#

Elige el gestor de paquetes que ya tengas. Crush es un solo binario, así que da igual la ruta que tomes.

Instalar 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

El README también lista los repositorios apt y yum, Scoop, Nix, Arch y FreeBSD. Ejecuta crush una vez para comprobar que arranca y luego sal.

Poner CheapTokens en crushrc#

El README describe crushrc como "solo Bash con algunos builtins específicos de Crush". Ese es todo el truco: escribes shell, y provider add y model add son comandos que Crush entiende. Crush busca el archivo en este orden: ./.crushrc, ./crushrc y luego ~/.config/crush/crushrc.

Así que tú eliges dónde vive. Un .crushrc local del proyecto se aplica a un repositorio; el de ~/.config/crush/ se aplica en todas partes. Para la primera prueba, el global es más fácil.

Primero pon la clave en tu shell. Créala en tu panel de CheapTokens y expórtala (el valor de abajo es un marcador de posición):

bash
export CHEAPTOKENS_API_KEY="your-key-here"

Luego abre ~/.config/crush/crushrc y escribe:

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

Algunos detalles merecen un segundo vistazo:

  • --type completions es el nombre de Crush para los proveedores compatibles con OpenAI que no son OpenAI en sí. responses es para el proxy de OpenAI, messages para los compatibles con Anthropic. El antiguo openai-compat sigue funcionando y se migra.
  • La URL base termina en /v1. Esa es la dirección de CheapTokens para Chat Completions al estilo OpenAI; la lista completa de endpoints está en la documentación de CheapTokens.
  • $CHEAPTOKENS_API_KEY lo expande el shell, así que el archivo no contiene ningún secreto y un .crushrc de proyecto puede ir a git sin riesgo.
  • El id del modelo es el completo, deepseek-ai/DeepSeek-V4-Flash-0731. La API rechaza un id corto como deepseek-v4-flash. Tras el nombre del proveedor viene una segunda barra, porque el id mismo tiene una.
  • --context-window 380000 son los 380K redondeados de DeepSeek-V4-Flash, y --default-max-tokens 32768 es su límite por respuesta. Estos son los límites reales del modelo en CheapTokens: 380K de contexto y hasta 32.768 tokens por respuesta. Ponlos en model add en lugar de dejar los valores de ejemplo del README (64000 y 5000).
El archivo crushrc con un proveedor y un modelo de CheapTokens
crushrc: una línea de proveedor y una de modelo; la clave viene del entorno

El README muestra model add solo con un id simple (deepseek/deepseek-chat). Tu id tiene una barra extra, así que el selector de modelos del siguiente paso es la comprobación real: si el modelo aparece bajo cheaptokens, la línea se leyó como se esperaba.

¿Quieres otro modelo con el mismo saldo? Añade otra línea model add con su propio id y límites. GLM-5.3-Flash es zai-org/GLM-5.3-Flash (390K de contexto, hasta 8.192 tokens por respuesta), y MiniMax-M2.7 es MiniMaxAI/MiniMax-M2.7 (180K de contexto, hasta 8.192 tokens por respuesta). Mantén --default-max-tokens igual o por debajo del límite de respuesta del modelo que añadas.

Abrir Crush y ejecutar una primera tarea#

Inicia crush en una carpeta de proyecto. Pulsa Ctrl+l para abrir el selector de modelos y elige DeepSeek-V4-Flash del grupo cheaptokens. El README no describe un comando de crushrc para el modelo por defecto, así que el selector es la vía.

De crushrc a la primera respuesta: proveedor, modelo, selector, tarea
El camino de la configuración a la primera respuesta

Ahora dale algo pequeño y verificable, por ejemplo: Read this repo and tell me which file starts the app, in two lines. Una respuesta que nombre un archivo real significa que toda la cadena funciona: clave, URL base, id del modelo.

Pruébalo tú mismoPruébalo: pulsas Ctrl+l y el modelo no está en la lista. ¿Qué compruebas primero?Mostrar respuesta

La ubicación del archivo y la variable. Crush busca la configuración por prioridad: ./.crushrc, ./crushrc, ~/.config/crush/crushrc. Comprueba que el proyecto no tenga otro .crushrc o crushrc con contenido distinto, y que el proveedor se añadiera en el archivo que editaste. Y echo $CHEAPTOKENS_API_KEY debe imprimir la clave en el mismo shell donde inicias crush.

Los avisos de permisos están ahí a propósito. permissions allow <tools> en crushrc permite que las herramientas nombradas se ejecuten sin preguntar; --yolo omite todos los avisos, y el propio README dice que hay que tener mucho cuidado con él.

Cuánto cuesta una sesión de programación#

Un paso de agente en una terminal tiene mucha entrada: Crush envía el historial, el contenido de los archivos y la salida de las herramientas cada vez, y recibe una respuesta modesta. Digamos que un paso medio envía 30.000 tokens y recibe 2.000. En DeepSeek-V4-Flash ese paso cuesta $0.00065, y el precio es el mismo a cualquier hora, sin horas punta. Contando entrada y salida juntas, es más barato que el precio de referencia de OpenRouter.

Sustituye por tus propios números: una sesión de 40 pasos así está a un deslizador de distancia.

Calculadora de costos

Un día de un agente de programación en Crush

Tokens de entrada por solicitud: 30.000 · Tokens de salida por solicitud: 2000 · Solicitudes por día: 40

ModeloPor díaPor mes
GLM-5.3-Flash$0.0272$0.816
DeepSeek-V4-Flash$0.026$0.78
MiniMax-M2.7$0.072$2.16

La entrada por paso crece a medida que avanza la sesión, así que comprueba una sesión larga contra la ventana de 380K en lugar de contra la media. Los precios actuales por token de cada modelo están en la página de precios.

Si no funciona#

Crush escribe un log en tu proyecto, ./.crush/logs/crush.log. Léelo antes de adivinar:

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

También puedes poner option debug true en crushrc para mantener la salida de depuración activada. Luego compara lo que ves con el estado HTTP que devolvió la API:

  • 401: la clave se envió pero no se reconoció: una errata o una clave sustituida. Créala o cópiala de nuevo.
  • 402: el saldo o el límite de la clave se ha agotado. Una petición sin clave alguna se ve igual, así que ejecuta echo $CHEAPTOKENS_API_KEY en el shell donde inicias crush. Si la clave está ahí, recarga el saldo.
  • 429: demasiadas peticiones en poco tiempo. Espera el valor de Retry-After y vuelve a intentarlo.
  • 400 o "model not found": mira el id del modelo. Debe ser el completo de la documentación, con el prefijo del proveedor.

Si vienes de crush.json, ten en cuenta que ~/.local/share/crush/crush.json es el estado de Crush, no una configuración; no lo edites a mano.

Para la misma configuración en otras herramientas, consulta Conectar Aider con CheapTokens y Conectar Kilo Code con CheapTokens. La página del modelo para DeepSeek barato tiene los límites del modelo usado aquí.