Modelos baratos y locales

Zeltro no te vende IA. Ejecuta el agente que le indiques, con el modelo que quieras, incluidos los modelos que corren en tu propio equipo.

Los agentes predeterminados cobran a precio de modelo de frontera. Para buena parte del trabajo con Zeltro (crear la base de un proyecto, conectar configuración, ediciones rutinarias) un modelo mucho más barato basta, y la diferencia es grande:

Modelo Entrada / salida por 1M de tokens
Claude Sonnet 5 (API de Anthropic) $2 / $10
Qwen3 Coder Next (OpenRouter) ~$0.12 / ~$0.80
Qwen3 Coder 30B A3B Instruct (OpenRouter) ~$0.07 / ~$0.28
Cualquier modelo en Ollama local nada por token (tu hardware y tu electricidad)

Precios a septiembre de 2026; los precios de OpenRouter cambian, así que revisa la página del modelo antes de fiarte de ellos. En una prueba de agosto de 2026, Qwen Code con qwen/qwen3-coder-30b-a3b-instruct construyó de principio a fin una app de Django que funcionaba por $0.87.

Zeltro ya ahorra tokens antes de que entre el modelo: el entorno, la red, la base de datos y la fontanería de contenedores ya vienen hechos, así que el agente gasta su contexto en tu app en lugar de deducir la configuración de Docker. Cambiar de modelo suma a ese ahorro, no lo reemplaza.


Cómo funciona#

zeltro ai-set --agent <agent> --model <model> --api-base <url> --api-key <key>

--api-base es la opción importante. Zeltro se la pasa al agente mediante el ajuste que lea esa CLI:

Agente Endpoint pasado como Clave pasada como Endpoint que espera
qwen OPENAI_BASE_URL OPENAI_API_KEY Compatible con OpenAI
aider --openai-api-base --api-key <provider>=<key> Compatible con OpenAI
opencode un proveedor compatible con OpenAI definido en línea en OPENCODE_CONFIG_CONTENT el apiKey de ese proveedor Compatible con OpenAI
hermes OPENAI_BASE_URL, con --provider openai OPENAI_API_KEY Compatible con OpenAI
claude ANTHROPIC_BASE_URL ANTHROPIC_API_KEY, solo si empieza por sk-ant- Compatible con Anthropic
codex -c openai_base_url=… (Zeltro lo pasa por ti) OPENAI_API_KEY, solo si empieza por sk- API Responses de OpenAI
agy nada (se rechaza) GEMINI_API_KEY Su propio inicio de sesión de Google, o una clave de API de Gemini
gemini (obsoleto) GOOGLE_GEMINI_BASE_URL GEMINI_API_KEY Una clave de API de Gemini de pago

"Compatible con OpenAI" abarca OpenRouter, DeepInfra, Together, Fireworks, Ollama, LM Studio y vLLM, así que qwen, aider, opencode y hermes son los agentes que conviene usar con modelos baratos o locales. En nuestras pruebas, OpenCode y Hermes funcionaron los dos a través de OpenRouter con DeepSeek V4.1 Flash; OpenCode con Qwen3 Coder a veces describía una edición de archivo en lugar de hacerla, así que prueba un segundo modelo si uno se porta mal.

Para una sola ejecución con otro modelo, sin tocar el ajuste global, usa los ajustes por sesión (ZELTRO_AI_AGENT, ZELTRO_AI_MODEL, ZELTRO_AI_API_BASE, ZELTRO_AI_API_KEY_FILE). En la app de Zeltro, un perfil de IA hace lo mismo.


OpenRouter (la opción alojada más barata)#

zeltro ai-set --agent qwen \
  --model qwen/qwen3-coder-30b-a3b-instruct \
  --api-base https://openrouter.ai/api/v1 \
  --api-key sk-or-v1-...

Pago por uso, sin suscripción. qwen/qwen3-coder-next es un modelo de programación de Qwen más nuevo y más grande, por entre dos y tres veces el precio. Con Aider, usa el prefijo propio de OpenRouter y ningún endpoint: --agent aider --model openrouter/qwen/qwen3-coder-30b-a3b-instruct --api-key sk-or-v1-....

Ollama (local, privado)#

Instala Ollama, descarga un modelo de programación y apunta Zeltro hacia él:

ollama pull qwen3-coder:30b

zeltro ai-set --agent qwen \
  --model qwen3-coder:30b \
  --api-base http://localhost:11434/v1 \
  --api-key ollama

La clave es de relleno. Ollama la ignora, pero las CLI esperan algo.

Nada sale de tu equipo, lo cual importa en trabajos para clientes bajo acuerdo de confidencialidad.

Aumenta la longitud de contexto de Ollama antes de empezar. Su valor predeterminado depende de tu VRAM y es de solo 4k tokens por debajo de 24 GB, muy poco para un agente. Ollama recomienda al menos 64k para herramientas de programación: arranca el servidor con OLLAMA_CONTEXT_LENGTH=64000 ollama serve, o usa el control deslizante de la configuración de la app de Ollama. Más contexto requiere más VRAM.

El tamaño del modelo importa más de lo que te gustaría, y esto está medido, no supuesto. Probado aquí con qwen2.5-coder:1.5b, zeltro create --classify-only devolvió JSON válido y con la forma correcta (la fontanería funciona), pero recomendó una app de presupuestos para un registro de pedales de guitarra, con el motivo "Laravel es ideal para crear apps de presupuestos". Salida coherente, razonamiento incoherente.

Así que los modelos pequeños fallan de la peor manera: funcionan mecánicamente y se equivocan en el fondo. Un modelo de ~30B con 24 GB de VRAM es más o menos el mínimo para trabajo con agentes (qwen3-coder:30b es una descarga de 19 GB); por debajo de eso, espera disparates verosímiles en lugar de errores.

Qwen Code además requiere Node 22 o posterior. Se instala y se ejecuta en Node 20 (npm avisa con EBADENGINE y funciona de todos modos), pero no está soportado.

LM Studio o vLLM#

Los dos exponen un servidor compatible con OpenAI, así que la forma es idéntica. LM Studio escucha en el puerto 1234; vLLM usa el 8000 de forma predeterminada:

zeltro ai-set --agent qwen --model <model> \
  --api-base http://localhost:1234/v1 --api-key local

Codex con otro endpoint#

La CLI de Codex actual ya no lee OPENAI_BASE_URL, así que Zeltro pasa el endpoint de zeltro ai-set --agent codex --api-base ... (o de ZELTRO_AI_API_BASE) como ajuste propio de Codex, -c openai_base_url="…", en cada ejecución. El problema es que Codex solo habla la API Responses de OpenAI, y no todos los servidores compatibles la implementan. Para algo más complejo, configura Codex directamente en ~/.codex/config.toml con una entrada [model_providers]. Para Ollama o LM Studio, Codex tiene su propio modo --oss (oss_provider en el mismo archivo). Consulta la configuración avanzada de Codex. Para modelos baratos o locales, qwen o aider dan menos trabajo.

Claude Code con un modelo local#

Claude Code habla la API de Anthropic, no la de OpenAI. Ollama 0.14 y posteriores también hablan la API de Anthropic, así que Claude Code puede usar un modelo de Ollama directamente:

zeltro ai-set --agent claude --model qwen3-coder:30b \
  --api-base http://localhost:11434

Fíjate en que la URL no lleva /v1. Deja --api-key vacío: Ollama ignora la clave, y Zeltro solo pasa claves que empiecen por sk-ant-. Si Claude Code te pide iniciar sesión, primero ejecuta export ANTHROPIC_AUTH_TOKEN=ollama en tu shell, como hace la guía de Ollama.

Para un servidor que solo habla la API de OpenAI, pon delante un proxy traductor como LiteLLM y pasa su dirección como --api-base.

Solo vale la pena si quieres específicamente la interfaz de Claude Code con un modelo local. Si no, qwen implica menos maquinaria.


Volver atrás#

zeltro ai-set --agent claude --api-base none --api-key ""

none borra el endpoint; un --api-key vacío borra una clave guardada. Cambiar de agente también borra el modelo guardado, así que esto te devuelve al modelo predeterminado de Claude Code. Comprueba cómo está todo con zeltro ai-set --json-output.


Elegir con honestidad#

Los modelos más baratos son realmente peores en trabajos autónomos largos. El reparto realista:

  • Ediciones rutinarias, crear la base de un proyecto, configuración, código repetitivo. Un modelo barato o local basta, y el ahorro es real.
  • Que zeltro create construya una app entera a partir de una frase, o depurar algo sutil. Los modelos de frontera todavía justifican su precio.

Nada te impide cambiar según la tarea. zeltro ai-set tarda un segundo y cambia el valor predeterminado global; las variables ZELTRO_AI_* lo cambian para una sola ejecución.

¿Encontraste un error en esta traducción? Avísanos en GitHub.