O Hermes Agent não substitui o Codex nem o OpenCode — ele os controla. O Hermes inclui duas skills, codex e opencode, que iniciam cada CLI como um subprocesso, e cada subprocesso paga com sua própria credencial, não com o provedor de modelos do Hermes. Esse é o fato em torno do qual vale planejar: um fluxo de trabalho, quatro superfícies de credenciais, três medidores separados e duas superfícies que só conversarão com um endpoint que sirva a Responses API.
Esta página trata do Hermes Agent, o software de agente licenciado sob MIT da Nous Research — não do Hermes 3 ou Hermes 4, a família de modelos de pesos abertos da mesma empresa; não do mecanismo JavaScript de mesmo nome; e não da marca de artigos de luxo. Uma verificação ao vivo de seu repositório em 19 de setembro de 2026 retornou archived: false, uma licença MIT e um push naquele dia; o lançamento publicado mais recente é Hermes Agent v0.21.3, marcado como v2026.9.14 em 14 de setembro de 2026. Para saber quanto custa executar o próprio agente, consulte preços do Hermes Agent.
Três coisas chamadas "codex" dentro do Hermes
A colisão é a primeira coisa a resolver, porque os três aparecem na configuração e apenas um deles é o que a maioria das pessoas quer dizer com hermes codex.
| Nome | O que é | Onde é configurado | Quem executa o loop de ferramentas |
|---|---|---|---|
Skill codex | Uma skill incluída que delega a programação ao Codex CLI como um subprocesso | Nada para configurar no Hermes; o CLI precisa estar instalado e autenticado | Codex, como um processo separado; o Hermes lê sua saída |
codex_responses | Um valor de transporte para um provedor personalizado — o protocolo de transmissão usado pelo Hermes | providers.<name>.transport em ~/.hermes/config.yaml | Hermes |
codex_app_server | Um runtime que encaminha os próprios turnos OpenAI do Hermes ao app-server do Codex | model.openai_runtime, ou /codex-runtime codex_app_server | O runtime do Codex; o Hermes se torna o shell ao redor dele |
Fontes: a skill codex incluída, a documentação de provedores e a página do runtime do Codex app-server, todas consultadas em 19 de setembro de 2026.
Delegando uma tarefa de programação ao Codex
A skill codex é da versão 1.0.1, licenciada sob MIT, e sua finalidade declarada é "Delegar programação ao OpenAI Codex CLI (recursos, PRs)." Seus pré-requisitos são explícitos: Codex instalado com npm install -g @openai/codex; autenticação da OpenAI configurada como OPENAI_API_KEY ou uma sessão OAuth do Codex; o trabalho deve ser executado dentro de um repositório git, porque o Codex se recusa a executar fora dele; e as chamadas de terminal precisam de pty=true porque o Codex é uma aplicação de terminal interativa.
A inicialização é uma chamada de terminal em segundo plano — codex exec --sandbox workspace-write 'Refactor the auth module' com um workdir — que retorna um ID de sessão. A partir daí, o Hermes consulta a sessão, lê seu log, responde aos prompts de aprovação com uma ação submit e encerra o processo se algo der errado. O resultado chega ao agente principal como saída do processo, além do que o Codex deixou na árvore de trabalho; nada é compartilhado na memória entre os dois processos.
Dois limites que a skill documenta em vez de ocultar. --full-auto ainda funciona, mas o CLI ativo agora recomenda usar --sandbox workspace-write. E quando o Codex é invocado a partir de um gateway ou contexto de serviço do Hermes — uma sessão de agente conduzida por chat, por exemplo — o sandbox workspace-write pode falhar mesmo quando o comando idêntico funciona em um shell interativo, com erros de bubblewrap ou de namespace de usuário, como setting up uid map: Permission denied. A própria solução da skill é --sandbox danger-full-access, que remove completamente o sandbox do Codex; se você fizer isso, o limite de processo em que executa o Hermes será a única contenção restante.
Delegando uma tarefa de programação ao OpenCode
A skill opencode é da versão 1.2.0, licenciada sob MIT, descrita como "Delegar programação ao OpenCode CLI (recursos, revisão de PR)." Instale com npm i -g opencode-ai@latest ou brew install anomalyco/tap/opencode, depois execute opencode auth login e verifique com opencode auth list. A própria documentação do OpenCode também oferece o comando /connect dentro da interface de terminal, que grava as credenciais em ~/.local/share/opencode/auth.json — ambas as rotas estão atuais, portanto seguir uma não significa que a outra esteja desatualizada.
Para trabalhos limitados, a skill prefere uma execução única: opencode run 'Add retry logic to API calls and update tests', com --model provider/model para fixar um modelo. As sessões interativas são executadas em segundo plano com um pty e conduzidas com poll, log e submit. Há uma armadilha destacada em negrito na skill: não envie /exit — não é um comando válido do OpenCode e abre uma caixa de diálogo de seleção de agente. Saia com Ctrl+C ou com uma ação kill.
A nomenclatura aqui tem sua própria armadilha ativa. O pacote npm opencode-ai é o produto atual; a organização do GitHub chamada opencode-ai mantém o predecessor arquivado, cujo último push ocorreu em 18 de setembro de 2025. E o repositório atual é anomalyco/opencode, não sst/opencode — a API do GitHub resolve o caminho antigo para o novo, e a organização sst agora exibe "We've moved to https://github.com/anomalyco". Versão mais recente v1.18.31, 14 de setembro de 2026 (API REST do GitHub, 19 de setembro de 2026).
O mapa que realmente determina sua cobrança
Esta é a parte que a documentação de nenhum dos dois fornecedores cobre, porque cada um controla apenas a sua metade. Há quatro superfícies de credenciais neste fluxo de trabalho, cada uma configurada em um arquivo diferente. Todas as quatro podem apontar para um endpoint de terceiros — mas não nas mesmas condições, e as duas superfícies do Codex aceitam apenas a Responses API.
| Superfície | Arquivo de configuração | Credencial usada | Protocolo de comunicação exigido | Métrica consultada |
|---|---|---|---|---|
| Turnos do próprio Hermes | ~/.hermes/config.yaml | key_env, api_key ou key_cmd | Qualquer um de chat_completions, anthropic_messages, codex_responses | Hermes /usage |
| CLI do Codex delegado | ~/.codex/config.toml | Variável env_key ou ~/.codex/auth.json | Somente Responses API | A conta do ChatGPT ou da API da OpenAI |
| CLI do OpenCode delegado | opencode.json | options.apiKey, ou ~/.local/share/opencode/auth.json | Escolhido pelo pacote npm que você nomear | opencode stats |
| Runtime do app-server do Codex | model.openai_runtime, além de um [model_providers.<name>] correspondente na rota do provedor nomeado | codex login e hermes auth add openai-codex na rota da assinatura; caso contrário, o env_key de um provedor personalizado nomeado | Responses API — wire_api = "responses" no lado do Codex | A assinatura do ChatGPT ou a própria métrica do provedor nomeado |
O Hermes declara a separação claramente: o próprio OAuth do Codex fica em ~/.hermes/auth.json, enquanto a sessão da CLI independente fica em ~/.codex/auth.json, e a página do runtime acrescenta o motivo — o Hermes deliberadamente não compartilha o estado de OAuth com a CLI do Codex, para evitar que os dois sobrescrevam um ao outro durante a renovação do token. Portanto, uma tarefa de programação delegada não herda a configuração de provedor do Hermes; ela lê ~/.codex/config.toml ou opencode.json e usa o mesmo saldo somente se você deliberadamente apontá-la para a mesma chave. Isso é um recurso quando você quer isolamento do raio de impacto e uma surpresa quando presumiu que um único saldo cobria tudo.
O que o runtime do app-server altera
Se você ativar o runtime do Codex app-server, três aspectos mudam e vale a pena conhecê-los antes de fazer isso. Ele roteia os turnos de openai/*, openai-codex/* e de provedores personalizados com nome definido; sua tabela de recursos marca os demais provedores que não são da OpenAI como "n/a — não roteado pelo codex", e um provider: custom anônimo com apenas uma URL base explicitamente não é elegível, pois não há um nome estável para passar ao Codex. Quatro ferramentas do Hermes deixam de estar disponíveis nesse runtime — delegate_task, memory, session_search e todo — porque precisam do loop do agente em execução, e um callback sem estado não consegue acioná-las. E há um detalhe de custo que passa despercebido pela maioria: com o provedor openai-codex, as tarefas auxiliares também passam pela sua assinatura do ChatGPT por padrão — geração de títulos, compressão de contexto, detecção automática de visão e a ramificação de revisão de autoaperfeiçoamento em segundo plano — porque o cliente auxiliar do Hermes usa o provedor principal quando nenhuma configuração específica por tarefa é definida.
Um endpoint de terceiros não fica excluído nesse runtime, mas exige um segundo arquivo de configuração. A página do runtime documenta a rota: uma entrada providers.<name> em ~/.hermes/config.yaml com openai_runtime: codex_app_server, além de uma tabela [model_providers.<name>] com o mesmo nome em ~/.codex/config.toml contendo base_url, env_key e wire_api = "responses". O Hermes envia apenas o modelo e o nome do provedor quando a thread começa e nunca encaminha a chave, portanto essa variável de ambiente precisa estar presente no processo em que o Hermes é executado; as chamadas auxiliares continuam usando a própria entrada do Hermes para esse provedor. Uma ressalva declarada na mesma página: os dois nomes precisam coincidir exatamente, ou o Codex informa um provedor desconhecido em vez de retornar ao endpoint do Hermes. Permanecer no runtime padrão (openai_runtime: auto) com um provedor custom: continua sendo a rota mais simples, e a única que não exige que o endpoint fale Responses. Observe também que o Hermes aponta o subprocesso do Codex para ~/.codex/ independentemente do perfil ativo do Hermes, portanto hermes -p work e hermes -p personal compartilham uma única autenticação do Codex, a menos que você defina CODEX_HOME e faça login novamente.
Apontando as três superfícies abertas para um único endpoint
Todos os blocos abaixo são lidos de documentos-fonte dos fornecedores, não testados em runtime. A Kunavo não executou uma sessão do Hermes, um codex exec ou um opencode run contra seu endpoint, e um guia de configuração publicado é uma referência de configuração, não um teste de compatibilidade. Mantenha uma rota funcional disponível enquanto você testa estas opções.
# Surface 1: Hermes' own turns.
providers:
kunavo:
api: https://api.kunavo.com/v1 # aliases: base_url, url
key_env: KUNAVO_API_KEY
transport: chat_completions # set it explicitly; auto-detection is only a fallback
model:
default: claude-sonnet-4-6
provider: custom:kunavotransport é toda a história dos próprios turnos do Hermes. A Kunavo disponibiliza /v1/chat/completions, /v1/messages e /v1/responses, portanto cada um dos três valores de transporte do Hermes tem um endpoint correspondente — uma correspondência no nível da documentação, não testada. A documentação de provedores do Hermes diz que a autodetecção baseada na URL ocorre apenas como fallback quando o campo está vazio, portanto defina-o. Alterne no meio da sessão com /model custom:kunavo:<model-id>.
# Surface 2: the delegated Codex CLI. Keep this OUTSIDE Hermes' managed block.
model = "claude-sonnet-4-6"
model_provider = "kunavo"
[model_providers.kunavo]
name = "Kunavo"
base_url = "https://api.kunavo.com/v1"
env_key = "KUNAVO_API_KEY" # the NAME of the variable, not the key itself
# wire_api defaults to "responses", and "responses" is the only value that parses.
# Leave requires_openai_auth unset: true sends Codex to auth.json instead of env_key.A metade do Codex é uma barreira rígida, e vale a pena observá-la no nível do código-fonte em vez de aceitá-la por confiança. Em codex-rs/model-provider-info/src/lib.rs, consultado em 19 de setembro de 2026, o enum de protocolo de comunicação tem exatamente uma variante: Responses. Definir wire_api = "chat" agora é um erro rígido de configuração cuja mensagem orienta você a definir responses. Um gateway que fala apenas Chat Completions não pode ser um provedor do Codex. A referência atual de chaves está em learn.chatgpt.com — qualquer texto que ainda cite developers.openai.com/codex/… é um redirecionamento 308, o que confirmamos no mesmo dia.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"kunavo": {
"npm": "@ai-sdk/openai-compatible",
"name": "Kunavo",
"options": {
"baseURL": "https://api.kunavo.com/v1",
"apiKey": "{env:KUNAVO_API_KEY}"
},
"models": { "claude-sonnet-4-6": { "name": "Claude Sonnet 4.6" } }
}
}
}No OpenCode, o pacote npm escolhe o formato de comunicação: @ai-sdk/openai-compatible chama /chat/completions, e @ai-sdk/openai chama /responses. Dê o nome correspondente ao caminho que seu endpoint realmente disponibiliza; a documentação não descreve o modo de falha ao nomear o outro, e não o testamos. Se as skills incluídas respeitam um provedor personalizado configurado dessa forma é uma inferência a partir da documentação da sub-CLI — as skills são simples chamadas de shell de subprocessos, portanto deveriam respeitá-lo — mas nenhum documento do Hermes afirma isso e não o executamos.
Uma estimativa prática entre as três métricas
Estes são cálculos ilustrativos de tokens, não custos de tarefas medidos nem um teto de cobrança. Suponha um dia intenso: o orquestrador e seus slots auxiliares recebem 1.500.000 tokens de entrada não armazenados em cache e 80.000 tokens de saída, e cada worker de programação delegado recebe 2.000.000 de entrada e 120.000 de saída. Essas proporções são suposições para fins de ilustração. As tarifas são preços ativos do catálogo da Kunavo por milhão de tokens.
| Função | Entrada / saída presumidas | Em Claude Sonnet 4.6 | Em Claude Haiku 4.5 |
|---|---|---|---|
| Turnos do orquestrador Hermes mais seus slots auxiliares | 1.5M / 80K | $3.99 | $1.33 |
| Worker Codex delegado | 2.0M / 120K | $5.46 | $1.82 |
| Worker OpenCode delegado | 2.0M / 120K | $5.46 | $1.82 |
Sob essas suposições, executar as três funções em modelos Claude Sonnet 4.6 resulta em $14.91 no dia, enquanto colocar o orquestrador e o tráfego auxiliar em Claude Haiku 4.5 e manter os dois workers de programação em modelos Claude Sonnet 4.6 resulta em $12.25. Essa diferença é o argumento a favor da escolha de modelo por função e também explica por que o mapa de credenciais acima importa: se os workers de programação estiverem em contas separadas, esse cálculo precisará ser feito três vezes, em três métricas, em vez de uma vez.
O valor do catálogo da Kunavo é um piso de cobrança, não um teto: quando o upstream informa sua cobrança, a fatura é o maior valor entre o custo do catálogo e o custo do upstream multiplicado pelo markup aplicável. As cobranças de cache e as ferramentas externas ficam fora deste exemplo. O recarregamento mínimo é $10 em crédito pré-pago, que é um mínimo de financiamento, não uma taxa por tarefa nem uma assinatura — consulte detalhes de cobrança.
Qual rota de financiamento vence em cada caso
| Opção | Vantagens | O que você abre mão |
|---|---|---|
| Assinatura do ChatGPT conduzindo o Codex | A programação é a carga de trabalho dominante, seu uso se encaixa na franquia do plano e você quer os plugins nativos e o sandbox do runtime do app-server | O turno do orquestrador é limitado à OpenAI nesse runtime, e quatro ferramentas do Hermes mais os slots auxiliares passam para a assinatura |
| Um gateway no runtime padrão do Hermes | Um único saldo pré-pago para os turnos do Hermes e os dois workers de programação importa mais do que uma tarifa fixa, e você quer um modelo diferente por função | O Codex exige especificamente um endpoint Responses real; nada aqui foi testado por nós em runtime |
| Chaves diretas dos fornecedores em cada ferramenta | Você quer isolamento do raio de impacto por ferramenta e uma cobrança separada de cada fornecedor | Três saldos e três métricas para acompanhar, e um segundo fornecedor significa uma segunda conta |
| OpenCode Zen | Você se importa apenas com o worker do OpenCode e quer um catálogo selecionado com um saldo recarregado automaticamente | O Zen é um gateway por si só, portanto compare-o com outros gateways em vez de tratar suas tarifas como "o custo do OpenCode" — a CLI é MIT e gratuita |
| Modelos locais por meio do provedor personalizado do Hermes | Custo marginal zero e dados que nunca saem da máquina | Confiabilidade na chamada de ferramentas, da qual esses três agentes dependem; a própria documentação do Hermes lista flags por servidor apenas para fazer as chamadas de ferramentas funcionarem |
Duas correções para formulações comuns. "O Codex custa US$ 20 por mês" e "o Codex é cobrado por token" estão erradas da mesma forma: learn.chatgpt.com (consultado em 19 de setembro de 2026) descreve uma bifurcação — planos do ChatGPT chamados Free, Go, Plus, Pro, Business e Enterprise & Edu, cujas franquias cobrem o uso do Codex, ou uma chave de API cobrada pelas tarifas padrão da API, sem necessidade de assinatura. Somente a segunda ramificação torna um endpoint de terceiros substituível. Deliberadamente não estamos exibindo as franquias de mensagens por plano: essa página afirma que o número depende do modelo e do tamanho das suas tarefas, e nossa leitura dela veio por meio de um resumidor, não de HTML renderizado. Consulte sua própria conta. E, do outro lado, o OpenCode Zen afirma que é "completely optional and you don't need to use it to use OpenCode", cobra por solicitação a partir de um saldo de crédito e, por padrão, recarrega US$ 20 quando o saldo cai abaixo de US$ 5 — uma diferença real de controle de custos em relação a um saldo pré-pago que você mesmo recarrega.
Configure e depois leia as três métricas
Comece pela superfície de que você realmente precisa. A Kunavo publica referências de configuração para os dois workers de programação: Codex CLI cobre o bloco de provedor exclusivo da Responses, e OpenCode cobre a escolha do pacote npm que decide o formato de comunicação. Execute uma delegação limitada e depois leia a cobrança registrada por cada conta — o /usage do Hermes, o opencode stats --days 7 e a própria conta do worker do Codex — antes de presumir que qualquer um dos três números cubra os demais. Crie uma conta na Kunavo quando estiver pronto para financiar uma chave.
Está comparando os dois workers de programação em vez de conectá-los? OpenCode vs Codex aborda diretamente essa questão, e API compatível com OpenAI explica na prática o que os dois formatos de comunicação significam.
Perguntas frequentes
O Hermes Agent tem integração com o Codex?
Sim, e existem duas integrações separadas. O Hermes inclui uma skill chamada codex, versão 1.0.1, licenciada sob MIT, cuja descrição é "Delegar programação ao OpenAI Codex CLI (recursos, PRs)." Ela chama `codex exec` por meio das ferramentas de terminal e processos do Hermes; assim, o Codex CLI faz a programação e o Hermes lê sua saída. Separadamente, o Hermes tem um runtime opcional do Codex app-server que encaminha os turnos próprios de openai/*, openai-codex/* e de provedores personalizados nomeados do Hermes ao app-server do Codex CLI, fazendo com que o runtime do Codex execute o loop de ferramentas e o Hermes se torne o shell ao redor dele. A skill é o padrão; o runtime fica desativado, a menos que você altere uma flag. Ambos foram consultados em 2026-09-19 no repositório do Hermes Agent.
Como uso o OpenCode com o Hermes Agent?
Instale o CLI com `npm i -g opencode-ai@latest` ou `brew install anomalyco/tap/opencode`, autentique-se com `opencode auth login` e confirme com `opencode auth list`, que deve mostrar pelo menos um provedor. A skill opencode incluída no Hermes (versão 1.2.0, MIT) então delega uma tarefa limitada com `opencode run 'Add retry logic to API calls and update tests'` a partir do diretório do projeto, opcionalmente fixando um modelo com `--model provider/model`. Monitore uma execução em segundo plano com as ações de consulta e log da ferramenta de processos, responda aos prompts com submit e saia com Ctrl+C ou kill. Não envie /exit — a skill afirma que não é um comando válido do OpenCode e, em vez disso, abre uma caixa de diálogo de seleção de agente. Consultado no arquivo da skill e em opencode.ai em 2026-09-19.
Qual conta paga quando o Hermes delega uma tarefa de programação ao Codex ou ao OpenCode?
A própria conta do sub-CLI, não a que está conduzindo o Hermes. Ambas as skills iniciam a ferramenta como um subprocesso, e cada subprocesso se autentica a partir de seu próprio armazenamento de credenciais: ~/.codex/auth.json ou OPENAI_API_KEY para o Codex, e ~/.local/share/opencode/auth.json ou variáveis de ambiente do provedor para o OpenCode. O Hermes documenta seu próprio OAuth do Codex como um arquivo diferente, ~/.hermes/auth.json, e afirma que deliberadamente não compartilha o estado OAuth com o Codex CLI para evitar sobrescrever a renovação do token. Portanto, existem três medidores e você os consulta de três maneiras: /usage do próprio Hermes para o orquestrador, `opencode stats` para o worker OpenCode e a conta do ChatGPT ou da API da OpenAI para o worker Codex.
O Codex CLI delegado pode apontar para uma API de terceiros em vez da OpenAI?
Somente se esse endpoint servir a Responses API. No código-fonte do Codex consultado em 2026-09-19, o enum do protocolo de transmissão tem exatamente uma variante, Responses, e `wire_api = "chat"` agora é desserializado como um erro definitivo informando que você deve definir `wire_api = "responses"`. Portanto, um endpoint que implemente apenas /v1/chat/completions não pode ser um provedor do Codex em nenhuma configuração. Defina o provedor em [model_providers.<id>] em ~/.codex/config.toml com base_url e env_key, escolha um id diferente de openai, ollama ou lmstudio, pois esses nomes são reservados, e deixe requires_openai_auth não definido para que a chave venha da variável de ambiente, em vez de auth.json.
A skill codex do Hermes é a mesma coisa que o transporte codex_responses?
Não, e três chaves de configuração diferentes contêm a palavra codex. A skill é um destino de delegação: o Hermes chama o Codex CLI para realizar o trabalho de programação. codex_responses é um valor de transporte para uma entrada de provedor personalizado em ~/.hermes/config.yaml, ao lado de chat_completions e anthropic_messages, descrevendo qual protocolo de transmissão o Hermes usa com esse endpoint. codex_app_server é um valor de runtime para model.openai_runtime, que decide se o Hermes executa seu próprio loop de ferramentas ou encaminha o turno ao app-server do Codex CLI. Alterar um não altera os outros.
O opencode ainda é mantido pela SST?
O projeto está ativo, mas o nome do proprietário mudou. A API do GitHub resolve sst/opencode para anomalyco/opencode, que em 2026-09-19 retornou archived false, uma licença MIT, um push no mesmo dia e a página inicial opencode.ai; o lançamento mais recente é v1.18.31 de 2026-09-14. A própria organização sst agora traz a descrição "We've moved to https://github.com/anomalyco". Observe a armadilha: o nome do pacote npm ainda é opencode-ai e está atualizado, enquanto a organização do GitHub chamada opencode-ai contém o projeto predecessor arquivado, cujo último push foi em 2025-09-18. Mesma string, duas coisas diferentes.
Verificado em 19 de setembro de 2026: os arquivos de skills do Hermes Agent para codex e opencode, e o runtime do app-server e os documentos de provedores do Codex nesse repositório; codex-rs/model-provider-info/src/lib.rs em openai/codex; as referências de preços e configuração de learn.chatgpt.com, incluindo os redirecionamentos 308 de developers.openai.com; as páginas de provedores e do Zen de opencode.ai; e o estado dos repositórios dos quatro projetos por meio da API REST do GitHub. Não verificado: a execução de qualquer parte disso. Nenhuma sessão do Hermes, nenhum codex exec, nenhum opencode run e nenhuma solicitação de qualquer uma dessas ferramentas contra o endpoint da Kunavo foi executada, e as franquias de mensagens por plano e as tarifas dos modelos do Zen foram deliberadamente omitidas porque nossa leitura dessas duas páginas veio por meio de um resumidor. As tarifas de tokens da Kunavo vêm do catálogo ativo; todo valor em dólar aqui é um cálculo ilustrativo de tokens.