NovoConecte qualquer agente ao UberLLM: uma chave, todos os modelos, pelo preço de tabela ou menos.
UberLLM

Codex CLI com UberLLM: execute o agente de codificação da OpenAI em qualquer modelo

Exporte UBERLLM_API_KEY, então adicione uma tabela [model_providers.uberllm] a ~/.codex/config.toml com base_url https://api.uberllm.dev/v1, env_key UBERLLM_API_KEY e wire_api "responses", e defina model_provider = "uberllm" mais o ID do modelo. UberLLM atende às chamadas da Responses API do Codex, assim, comandos de shell, edições de arquivo e tarefas multi-etapas funcionam em qualquer modelo de chat.

Passos

  1. Crie uma chave na sua página de chaves e adicione crédito.
  2. Instale o Codex se ainda não o tiver: npm install -g @openai/codex.
  3. Coloque a chave no seu perfil do shell (~/.zshrc ou ~/.bashrc) e abra um novo terminal:
export UBERLLM_API_KEY="ull_..."
  1. Abra ~/.codex/config.toml (crie-o se não existir) e adicione:
model = "moonshotai/kimi-k3"
model_provider = "uberllm"
web_search = "disabled"

[model_providers.uberllm]
name = "UberLLM"
base_url = "https://api.uberllm.dev/v1"
env_key = "UBERLLM_API_KEY"
wire_api = "responses"
  1. Execute codex em uma pasta de projeto e dê uma tarefa a ele.

Mantenha base_url terminando em /v1: o Codex adiciona /responses a ele. env_key é o nome da variável, não a chave em si.

Trocar modelos

Passe -m para uma sessão, por exemplo codex -m deepseek/deepseek-v4.1-flash para uma pequena correção, ou mude model no arquivo. Qualquer ID de modelo de chat de uberllm.dev/models](uberllm.dev/models](/models)) funciona.

Para scripts e CI, codex exec executa uma tarefa sem a tela interativa:

codex exec --skip-git-repo-check "add a docstring to every function in utils.py"

Configurações que valem a pena adicionar

  • model_context_window: O Codex não sabe o tamanho do contexto de modelos fora da lista da OpenAI e assume 272,000 tokens. Para um modelo menor, defina o número da sua página em uberllm.dev/models (por exemplo model_context_window = 131072), para que o Codex compacte a conversa antes que ela fique sem espaço.
  • model_reasoning_effort: "low", "medium" ou "high" é passado para modelos que pensam (DeepSeek, Kimi Thinking, GLM, GPT-5). Deixe de fora para o padrão do modelo.
  • web_search = "disabled": A pesquisa web do Codex roda nos próprios servidores da OpenAI, então não pode ser executada através de outro provedor. Com ela desativada, o modelo não recebe uma ferramenta que não pode usar.

O que funciona

Cada ferramenta Codex é uma chamada de função normal do lado da API, então execuções de comandos, edições de arquivos, planos e servidores MCP que você adiciona ao Codex funcionam em qualquer modelo que aceite chamadas de ferramenta. Codex envia a conversa inteira a cada turno (store = false), então nada é mantido no UberLLM entre as chamadas. Cada chamada aparece em Dashboard → Atividade sob o nome do aplicativo codex, com seu custo.

Solução de Problemas

  • wire_api = "chat" não é mais suportado: Codex 0.95 e posteriores só se comunicam com a API de Respostas. Defina wire_api = "responses".
  • 401 ou "Missing environment variable: UBERLLM_API_KEY": a variável não está exportada no terminal onde o Codex é executado. Abra um novo terminal depois de editar seu perfil, ou execute export UBERLLM_API_KEY=... primeiro.
  • 404 a cada turno: base_url está faltando /v1. Deve ser exatamente https://api.uberllm.dev/v1.
  • "Model metadata for … not found. Defaulting to fallback metadata": O Codex exibe isso para todo modelo fora da lista própria da OpenAI. É inofensivo; defina model_context_window como acima.
  • O modelo responde, mas nunca executa um comando: escolha um modelo da primeira tabela. Modelos pequenos se desviam do formato de ferramenta do Codex.
  • 402 créditos insuficientes: adicione crédito na página de créditos. Para um limite rígido, defina um limite de gastos na chave.

Continue lendo

Modelos que impulsionam bem o Codex

Todos aceitam tool calls, que o Codex usa para cada comando e edição. O primeiro está na configuração abaixo.

ModeloID do modelo (cole isto)Preço agora
Kimi K3moonshotai/kimi-k3$0.0010 entrada · $0.0788 saída / 1M
DeepSeek V4.1 Flashdeepseek/deepseek-v4.1-flash$0.00018 entrada · $0.0014 saída / 1M
GLM 5.3z-ai/glm-5.3$0.00070 entrada · $0.0141 saída / 1M
Claude Sonnet 5.5anthropic/claude-sonnet-5.5$0.1099 entrada · $0.5495 saída / 1M
Qwen 3 Coder 480bqwen/qwen3-coder$0.0030 entrada · $0.0099 saída / 1M
GPT-5.5openai/gpt-5.5$0.1250 entrada · $0.7500 saída / 1M
Claude Opus 5.5anthropic/claude-opus-5.5$0.1579 entrada · $0.7897 saída / 1M
DeepSeek V4 Prodeepseek/deepseek-v4-pro$0.0016 entrada · $0.0032 saída / 1M
MiniMax M3minimax/minimax-m3$0.0180 entrada · $0.0719 saída / 1M

Preços da última atualização de hora em hora, sem taxa adicional · todos os modelos →

Modelos mais baratos para tarefas pequenas e scripts de execução do codex

ModeloID do modelo (cole isto)Preço agora
DeepSeek V4.1 Flashdeepseek/deepseek-v4.1-flash$0.00018 entrada · $0.0014 saída / 1M
GLM 5.3z-ai/glm-5.3$0.00070 entrada · $0.0141 saída / 1M
Qwen 3 Coder 480bqwen/qwen3-coder$0.0030 entrada · $0.0099 saída / 1M
DeepSeek V3.2deepseek/deepseek-v3.2$0.0026 entrada · $0.0039 saída / 1M
GPT-OSS 120Bopenai/gpt-oss-120b$0.000069 entrada · $0.00030 saída / 1M
Kimi K2 Thinkingmoonshotai/kimi-k2-thinking$0.0059 entrada · $0.0248 saída / 1M

Preços da última atualização de hora em hora, sem taxa adicional · todos os modelos →

Perguntas frequentes

O Codex CLI funciona com o UberLLM?

Sim. Adicione um provedor de modelo em ~/.codex/config.toml com base_url https://api.uberllm.dev/v1, env_key UBERLLM_API_KEY e wire_api "responses". UberLLM serve a API de Respostas (POST /v1/responses) que o Codex chama, com streaming e tool calls.

Quais modelos posso usar no Codex através do UberLLM?

Qualquer modelo de chat no catálogo do UberLLM que aceita tool calls, como DeepSeek, GLM, Kimi, Qwen Coder, Claude e GPT. Defina o modelo para seu id, por exemplo deepseek/deepseek-v4.1-flash.

Preciso de previous_response_id ou respostas armazenadas para o Codex?

Não. O Codex envia a conversa inteira em cada requisição com store definido como false, então o UberLLM não guarda nada entre as chamadas.