Hermes: trocar de OpenAI Codex para OpenAI API

Como sair do login Codex da assinatura do ChatGPT Plus e passar a usar a chave da OpenAI API no modelo principal — e, se quiser, também nos auxiliares.

A mudança que você quer fazer é conceitualmente simples: trocar o provider do Hermes de openai-codex para openai-api. O modelo pode continuar sendo o mesmo se ele existir na rota da API. Nesta instância, isso já foi verificado em execução real com gpt-5.4 e gpt-5.4-mini via openai-api.

TL;DR Para trocar só o chat principal, o caminho mais direto é ajustar model.provider para openai-api e manter model.default em gpt-5.4. Para trocar também os auxiliares, ajuste os blocos em auxiliary.*.provider. A mudança vale para novas sessões; conversas já abertas continuam no provider com que nasceram, a menos que você faça um hot-swap explícito.

Estado atual desta instalação

Antes de propor qualquer passo, vale olhar o que está realmente configurado hoje.

Trecho real do ~/.hermes/config.yaml

model:
  default: gpt-5.4
  provider: openai-codex
  base_url: https://chatgpt.com/backend-api/codex

auxiliary:
  vision:
    provider: openai-codex
    model: gpt-5.4-mini
  web_extract:
    provider: openai-codex
    model: gpt-5.4-mini
  compression:
    provider: openai-codex
    model: gpt-5.4-mini
  approval:
    provider: openai-codex
    model: gpt-5.4-mini
  title_generation:
    provider: openai-codex
    model: gpt-5.4-mini

Checagem real do ambiente

OPENAI_API_KEY: set
OPENAI_BASE_URL: missing

Isso significa duas coisas importantes.

  1. O seu Hermes está hoje com o principal em openai-codex.
  2. A OpenAI API já está pronta para uso, porque a OPENAI_API_KEY está configurada.

O que muda de fato

Esses dois providers têm papéis diferentes no Hermes:

  • openai-codex: usa o login/OAuth da experiência Codex vinculada à sua conta ChatGPT.
  • openai-api: usa a OPENAI_API_KEY e fala com a API da OpenAI.
Leitura operacional Quando seus créditos do ChatGPT Plus estiverem apertados, migrar o chat principal para openai-api evita depender do provider openai-codex para as novas conversas. O Hermes continua funcionando; só muda a rota de inferência.

Validação real: o mesmo modelo funciona na OpenAI API?

Aqui eu não quis assumir. Testei de verdade os modelos alvo pela linha de comando, sem alterar a sua configuração persistente.

Teste real com override temporário

$ hermes -z 'Responda apenas OK.' --provider openai-api -m gpt-5.4 --ignore-rules --ignore-user-config
OK.

$ hermes -z 'Responda apenas OK.' --provider openai-api -m gpt-5.4-mini --ignore-rules --ignore-user-config
OK

Então, nesta instalação, faz sentido sugerir a troca mantendo gpt-5.4 no principal e gpt-5.4-mini em auxiliares leves.

Como trocar só o chat principal

Você tem dois caminhos bons: interativo e direto por config.

Caminho 1 — interativo com hermes model

Esse é o caminho mais seguro quando você quer deixar o Hermes escrever a configuração por você.

  1. Saia de qualquer sessão do Hermes que você queira encerrar.
  2. Rode hermes model.
  3. Escolha o provider OpenAI API (direct).
  4. Escolha o modelo gpt-5.4.
  5. Salve.

Conceitualmente, o resultado esperado no YAML é este:

model:
  default: gpt-5.4
  provider: openai-api
  base_url: ''

Caminho 2 — direto com hermes config set

Se você já sabe exatamente o que quer, dá para ir reto nos campos.

hermes config set model.provider openai-api
hermes config set model.default gpt-5.4
hermes config set model.base_url ''
Por que limpar o base_url? Hoje ele aponta para https://chatgpt.com/backend-api/codex, que é a rota do provider antigo. Ao migrar para openai-api, o mais limpo é deixar o base_url vazio para o Hermes usar o endpoint padrão da OpenAI API.

Quando a mudança passa a valer

A regra prática é esta:

  • CLI / chat principal: a troca vale para a próxima sessão nova.
  • Conversa já aberta: continua no provider antigo até você abrir outra ou fazer hot-swap explícito.
  • Gateway: novas sessões passam a usar a nova configuração; se quiser forçar releitura global, reinicie o gateway.

Comandos úteis depois da troca

hermes config
hermes status
hermes gateway restart   # só se você quiser forçar releitura no gateway

E se eu quiser trocar a conversa atual?

Para a sessão corrente, a documentação do Hermes indica o uso de /model dentro do chat. Isso faz o hot-swap da conversa atual; se você usar a variante global, também persiste em config.yaml.

/model gpt-5.4 --provider openai-api
/model gpt-5.4 --provider openai-api --global

Se a sua intenção for trocar só para as próximas conversas, eu prefiro o ajuste por hermes model ou hermes config set, porque fica mais claro e menos acoplado à sessão aberta no momento.

Como ajustar também os auxiliares

Os auxiliares ficam em blocos independentes dentro de auxiliary.*. Se você quiser alinhar tudo na OpenAI API, basta mudar o provider de cada tarefa relevante.

Exemplo prático para as tarefas mais comuns desta instalação:

hermes config set auxiliary.vision.provider openai-api
hermes config set auxiliary.vision.model gpt-5.4-mini

hermes config set auxiliary.web_extract.provider openai-api
hermes config set auxiliary.web_extract.model gpt-5.4-mini

hermes config set auxiliary.compression.provider openai-api
hermes config set auxiliary.compression.model gpt-5.4-mini

hermes config set auxiliary.approval.provider openai-api
hermes config set auxiliary.approval.model gpt-5.4-mini

hermes config set auxiliary.title_generation.provider openai-api
hermes config set auxiliary.title_generation.model gpt-5.4-mini

Se quiser ir além e deixar todos os slots auxiliares no mesmo provider, o mesmo padrão se aplica a:

  • auxiliary.skills_hub
  • auxiliary.mcp
  • auxiliary.triage_specifier
  • auxiliary.kanban_decomposer
  • auxiliary.profile_describer
  • auxiliary.curator

Exemplo conceitual de bloco alinhado

auxiliary:
  vision:
    provider: openai-api
    model: gpt-5.4-mini
  web_extract:
    provider: openai-api
    model: gpt-5.4-mini
  compression:
    provider: openai-api
    model: gpt-5.4-mini
  approval:
    provider: openai-api
    model: gpt-5.4-mini
  title_generation:
    provider: openai-api
    model: gpt-5.4-mini
Importante Auxiliares não são apenas “o mesmo chat em miniatura”. Cada slot tem função própria: vision, compressão, títulos, approval, extração web, MCP e assim por diante. Então, se algum deles estiver em auto ou em outro provider, isso pode ser intencional. Só alinhe tudo se a sua meta for mesmo centralizar custo e roteamento.

Estratégia recomendada para o seu caso

Como a sua motivação é econômica e temporária — os créditos do Plus estão perto do fim e o reset vem em dois dias — eu faria assim:

  1. Trocar primeiro só o principal para openai-api.
  2. Abrir uma nova conversa e validar se o fluxo diário continua normal.
  3. Se ficar bom, decidir se vale migrar também vision, web_extract, compression, approval e title_generation.
  4. Quando os créditos do Codex resetarem, escolher conscientemente se você quer voltar o principal para openai-codex ou manter a OpenAI API.

Essa abordagem preserva clareza operacional: uma mudança por vez.

Checklist curto de execução

  1. Confirmar que a OPENAI_API_KEY está configurada — nesta instalação, ela já está.
  2. Trocar model.provider para openai-api.
  3. Manter model.default em gpt-5.4.
  4. Limpar model.base_url.
  5. Abrir uma nova sessão do Hermes.
  6. Rodar uma pergunta simples e checar hermes status ou hermes config.
  7. Se quiser, repetir o processo nos blocos auxiliary.*.

Fontes e base desta página

  • Configuração real em ~/.hermes/config.yaml.
  • Checagem real de OPENAI_API_KEY no ambiente.
  • Ajuda dos comandos hermes, hermes model e hermes config set.
  • Documentação local do Hermes em website/docs/user-guide/configuring-models.md, website/docs/integrations/providers.md e website/docs/reference/environment-variables.md.
  • Testes reais com override temporário via hermes -z em openai-api com gpt-5.4 e gpt-5.4-mini.