Como usar o OpenCode com sua chave CodeJato | CodeJato
CodeJato Ver planos

Como usar o OpenCode com sua chave CodeJato

O OpenCode aceita provedores compatíveis com a API da OpenAI. Declarando a CodeJato como provedor, o agente de terminal inteiro roda na sua assinatura, pagando em reais.

Se você ainda não tem chave, escolha um plano ou peça um trial de 24h grátis.

O detalhe que mais gera chamado: o endereço da API termina em https://api.tn1.top/v1. O /v1 no fim não é opcional — sem ele o gateway responde 401 dizendo que a chave está inválida, e você vai procurar o problema no lugar errado.

1. Pré-requisitos

  • Uma chave CodeJato ativa.
  • O OpenCode instalado: npm install -g opencode-ai

2. Configurar o OpenCode

Crie (ou edite) o arquivo de configuração com o bloco abaixo. Ele declara o provedor codejato e lista os modelos que você quer ver no seletor.

SistemaOnde fica
macOS~/.config/opencode/opencode.json
Linux~/.config/opencode/opencode.json
Windows%USERPROFILE%\.config\opencode\opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "codejato": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "CodeJato",
      "options": {
        "baseURL": "https://api.tn1.top/v1",
        "apiKey": "{env:CODEJATO_API_KEY}"
      },
      "models": {
        "Opus 4.8": { "name": "Opus 4.8" },
        "Sonnet": { "name": "Sonnet" },
        "Haiku": { "name": "Haiku" }
      }
    }
  }
}
  1. Exporte a chave no ambiente: export CODEJATO_API_KEY="sua-chave". O config guarda só o nome da variável, então a chave não fica no disco.
  2. Rode opencode na pasta do projeto e escolha o modelo pelo seletor.
  3. Sem abrir a interface: opencode run -m "codejato/Sonnet" "responda apenas: OK".

Verificado nesta configuração. O comando abaixo foi rodado contra o gateway e respondeu OK:

opencode run -m "codejato/Sonnet" "responda apenas: OK"

3. Modelos disponíveis

O CodeJato vende os modelos da Anthropic em reais. Use Opus 4.8 no trabalho pesado, Sonnet no dia a dia e Haiku quando velocidade importa mais que profundidade.

No OpenCode o modelo é informado por -m codejato/<modelo> na linha de comando. O identificador leva prefixo: codejato/Sonnet.

ModeloComo escrever
Opus 4.8codejato/Opus 4.8
Sonnetcodejato/Sonnet
Haikucodejato/Haiku

Use exatamente esses nomes. Nomes técnicos da Anthropic — claude-sonnet-4-6, claude-3-5-sonnet, claude-opus-4 e parecidos — não existem aqui. Se você usar um deles, o OpenCode responde “o serviço está com instabilidade momentânea”, o que parece problema nosso e não é: é só o nome do modelo.

4. O que funciona

RecursoStatusObservação
Execução direta (opencode run)FuncionaTestado nesta configuração: imprime a resposta e encerra.
Modo agente (TUI)Não testamosUsa exatamente a mesma configuração, mas não abrimos a interface para verificar.
Vários modelos no seletorNão testamosCada chave do bloco models vira uma opção.
Nome do modelo sem prefixoNãoTem que ser codejato/<modelo>. O prefixo é o nome do provedor.

5. Troubleshooting

SintomaO que fazer
Error: O serviço está com instabilidade momentânea e não conseguiu responder agoraO chamado mais comum, e a mensagem engana: ela também aparece quando o nome do modelo não existe, e aí não adianta esperar passar. Aqui o modelo é pedido pelo nome do plano — Opus 4.8, Sonnet, Haiku — nunca pelo nome técnico da Anthropic (claude-sonnet-4-6, claude-3-5-sonnet e afins não existem aqui). Confira o bloco models do config e o -m contra a tabela da seção 3.
O modelo não aparece / model not foundO identificador tem que levar o prefixo do provedor: codejato/Sonnet, não Sonnet sozinho. O prefixo é o nome que você deu ao provedor no config — se você chamou o bloco de cc em vez de codejato, o comando é cc/Sonnet.
Modelo com espaço no nome quebra o comandoPonha entre aspas: -m "codejato/Opus 4.8". Sem aspas o terminal corta no espaço.
401 Acesso inativo: sua chave está ausente, inválida ou expiradaDuas causas possíveis, nesta ordem: (1) a variável CODEJATO_API_KEY não está exportada no shell que roda o OpenCode — confira com echo $CODEJATO_API_KEY; (2) o baseURL está sem o /v1 no fim. O endereço correto é https://api.tn1.top/v1. A mensagem é a mesma nos dois casos, por isso cheque as duas.
Unexpected token '<' is not valid JSONO gateway devolveu HTML de login em vez de JSON, o que acontece quando a requisição chega sem o cabeçalho de autorização. Mesma checagem da variável de ambiente acima.
O comando termina com código 0 mesmo tendo dado erroO OpenCode sai com 0 mesmo quando o provedor responde erro. Leia a saída, não confie só no código de saída.

6. FAQ

Por que npm dentro do config?
O OpenCode baixa o adaptador @ai-sdk/openai-compatible sozinho na primeira execução. Você não precisa instalar nada a mais.

Posso usar outros provedores junto?
Sim. O bloco provider aceita vários; o prefixo do modelo diz qual usar.

Onde fica a chave?
Numa variável de ambiente, referenciada por {env:...}. O arquivo de config não guarda o segredo.

Dúvida que não está aqui? Fale com a gente em suporte@tn1.top.

Ver todas as ferramentas compatíveis