Modelos baratos e locais

O Zeltro não vende IA. Ele roda o agente que você indicar, com o modelo que você quiser, inclusive modelos rodando na sua própria máquina.

Os agentes padrão cobram preços de modelos de ponta. Para boa parte do trabalho no Zeltro (criar a estrutura do projeto, ajustar configuração, edições de rotina) um modelo bem mais barato dá conta, e a diferença é grande:

Modelo Entrada / Saída por 1M de tokens
Claude Sonnet 5 (API da Anthropic) $2 / $10
Qwen3 Coder Next (OpenRouter) ~$0.12 / ~$0.80
Qwen3 Coder 30B A3B Instruct (OpenRouter) ~$0.07 / ~$0.28
Qualquer modelo no Ollama local nada por token (seu hardware e sua energia)

Preços de setembro de 2026; os preços do OpenRouter mudam, então confira a página do modelo antes de contar com eles. Em um teste em agosto de 2026, o Qwen Code com qwen/qwen3-coder-30b-a3b-instruct construiu um app Django funcionando de ponta a ponta por $0.87.

O Zeltro já economiza tokens antes de o modelo entrar em cena: o ambiente, a rede, o banco de dados e a parte de contêineres já vêm prontos, então o agente gasta o contexto no seu app em vez de deduzir a configuração do Docker. Trocar de modelo soma a essa economia em vez de substituí-la.


Como funciona#

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

O --api-base é o mais importante. O Zeltro o entrega ao agente pela configuração que aquele CLI lê:

Agente Endpoint passado como Chave passada como Endpoint que ele espera
qwen OPENAI_BASE_URL OPENAI_API_KEY Compatível com OpenAI
aider --openai-api-base --api-key <provider>=<key> Compatível com OpenAI
opencode um provedor compatível com OpenAI embutido em OPENCODE_CONFIG_CONTENT o apiKey desse provedor Compatível com OpenAI
hermes OPENAI_BASE_URL, com --provider openai OPENAI_API_KEY Compatível com OpenAI
claude ANTHROPIC_BASE_URL ANTHROPIC_API_KEY, só se começar com sk-ant- Compatível com Anthropic
codex -c openai_base_url=… (o Zeltro passa para você) OPENAI_API_KEY, só se começar com sk- API Responses da OpenAI
agy nada (recusado) GEMINI_API_KEY O próprio login do Google, ou uma chave de API do Gemini
gemini (obsoleto) GOOGLE_GEMINI_BASE_URL GEMINI_API_KEY Uma chave de API paga do Gemini

"Compatível com OpenAI" inclui OpenRouter, DeepInfra, Together, Fireworks, Ollama, LM Studio e vLLM, então qwen, aider, opencode e hermes são os agentes para usar com modelos baratos ou locais. Nos nossos testes, o OpenCode e o Hermes funcionaram via OpenRouter com o DeepSeek V4.1 Flash; o OpenCode com o Qwen3 Coder às vezes descrevia uma edição de arquivo em vez de fazê-la, então experimente outro modelo se um deles se comportar mal.

Para uma execução com outro modelo, sem mexer na configuração global, use as substituições por sessão (ZELTRO_AI_AGENT, ZELTRO_AI_MODEL, ZELTRO_AI_API_BASE, ZELTRO_AI_API_KEY_FILE). No app Zeltro, um perfil de IA faz o mesmo.


OpenRouter (o hospedado mais barato)#

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

Pague pelo uso, sem assinatura. O qwen/qwen3-coder-next é um modelo de programação Qwen mais novo e maior, por duas a três vezes o preço. Com o Aider, use o prefixo próprio do OpenRouter e nenhum endpoint: --agent aider --model openrouter/qwen/qwen3-coder-30b-a3b-instruct --api-key sk-or-v1-....

Ollama (local, privado)#

Instale o Ollama, baixe um modelo de programação e aponte o Zeltro para ele:

ollama pull qwen3-coder:30b

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

A chave é só um marcador. O Ollama a ignora, mas os CLIs esperam alguma coisa.

Nada sai da sua máquina, o que importa em trabalhos para clientes sob NDA.

Aumente o tamanho de contexto do Ollama antes de começar. O padrão depende da sua VRAM e é de apenas 4k tokens abaixo de 24 GB, curto demais para um agente. O Ollama recomenda pelo menos 64k para ferramentas de programação: inicie o servidor com OLLAMA_CONTEXT_LENGTH=64000 ollama serve, ou use o controle deslizante nas configurações do app do Ollama. Mais contexto exige mais VRAM.

O tamanho do modelo importa mais do que você gostaria, e isso foi medido, não suposto. Testado aqui com o qwen2.5-coder:1.5b, o zeltro create --classify-only devolveu um JSON válido e no formato certo (a parte mecânica está ok), mas recomendou um app de orçamento para um controle de pedais de guitarra, com a justificativa "Laravel é ótimo para criar apps de orçamento". Saída coerente, raciocínio incoerente.

Ou seja, modelos pequenos falham do pior jeito: dão certo na mecânica e erram no conteúdo. Um modelo de ~30B em 24 GB de VRAM é mais ou menos o mínimo para trabalho com agentes (o qwen3-coder:30b é um download de 19 GB); abaixo disso, espere bobagens plausíveis em vez de erros.

O Qwen Code também exige Node 22 ou mais recente. Ele instala e roda no Node 20 (o npm avisa EBADENGINE e funciona mesmo assim), mas isso não é suportado.

LM Studio ou vLLM#

Os dois oferecem um servidor compatível com OpenAI, então o formato é idêntico. O LM Studio escuta na porta 1234; o vLLM usa 8000 por padrão:

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

Codex com outro endpoint#

O Codex CLI atual não lê mais OPENAI_BASE_URL, então o Zeltro passa o endpoint de zeltro ai-set --agent codex --api-base ... (ou ZELTRO_AI_API_BASE) como uma configuração do próprio Codex, -c openai_base_url="…", em toda execução. O problema é que o Codex só fala a API Responses da OpenAI, que nem todo servidor compatível implementa. Para algo mais elaborado, configure o próprio Codex em ~/.codex/config.toml com uma entrada [model_providers]. Para Ollama ou LM Studio, o Codex tem o próprio modo --oss (oss_provider no mesmo arquivo). Veja a configuração avançada do Codex. Para modelos baratos ou locais, qwen ou aider dão menos trabalho.

Claude Code com um modelo local#

O Claude Code fala a API da Anthropic, não a da OpenAI. O Ollama 0.14 e posteriores também falam a API da Anthropic, então o Claude Code pode usar um modelo do Ollama diretamente:

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

Repare que a URL não tem /v1. Deixe o --api-key vazio: o Ollama ignora a chave, e o Zeltro só repassa chaves que começam com sk-ant-. Se o Claude Code pedir para você fazer login, rode antes export ANTHROPIC_AUTH_TOKEN=ollama no seu shell, como faz o guia do Ollama.

Para um servidor que só fala a API da OpenAI, coloque na frente um proxy de tradução como o LiteLLM e passe o endereço dele como --api-base.

Só vale a pena se você quiser especificamente a interface do Claude Code com um modelo local. Fora isso, o qwen dá menos trabalho.


Voltando atrás#

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

none apaga o endpoint; um --api-key vazio apaga uma chave guardada. Trocar de agente também apaga o modelo guardado, então isso leva você de volta ao modelo padrão do próprio Claude Code. Confira como está a configuração com zeltro ai-set --json-output.


Escolhendo com honestidade#

Modelos mais baratos são de fato piores em trabalhos autônomos longos. A divisão realista:

  • Edições de rotina, estrutura inicial, configuração, código repetitivo. Um modelo barato ou local dá conta, e a economia é real.
  • O zeltro create construindo um app inteiro a partir de uma frase, ou depurando algo sutil. Os modelos de ponta ainda valem o preço.

Nada impede você de trocar a cada tarefa. O zeltro ai-set leva um segundo e muda o padrão global; as variáveis ZELTRO_AI_* mudam só para uma execução.

Achou um erro nesta tradução? Avise a gente no GitHub.