Documentação

Comece a usar o C2Code

Com o seu token c2c_, o agente de código que roda no seu terminal passa a usar o nosso modelo em vez de um serviço pago. Instale no que você já usa — mesmo acesso, mesmo modelo, as mesmas skills.

Beta fechado e confidencial

O acesso é por convite ou compra. O token é pessoal e identifica você: não compartilhe o token, este endereço, nem prints ou respostas do sistema. Não precisa criar conta nem cadastrar cartão.

Oopencode instalar

Uma linha. Instala o opencode se ainda não houver, busca a configuração no servidor e deixa tudo no lugar.

curl -fsSL https://c2code.ia.br/opencode.sh | sh -s -- --token c2c_SEU_TOKEN
irm https://c2code.ia.br/opencode.ps1 | iex; Install-C2code -Token c2c_SEU_TOKEN
Configuração

Vai pra ~/.config/opencode/opencode.json. Se já existir, ele guarda uma cópia antes de trocar.

Skills

Em ~/.config/opencode/skill/c2code/ — pasta só nossa. As suas, em outras pastas, ficam intactas.

Regras da casa

Num bloco marcado (c2code:inicio / c2code:fim) do ~/.config/opencode/AGENTS.md. O que você escrever fora do bloco fica.

Usar

Na pasta do projeto: opencode abre a interface; opencode run "sua pergunta" faz uma pergunta só.

Atualizar depois

De tempos em tempos o modelo muda — outro modelo, outro limite de contexto, às vezes passa a aceitar imagem. O config no seu computador é um arquivo e não acompanha sozinho: rode o mesmo comando, sem token, que ele lê o seu do config já instalado.

curl -fsSL https://c2code.ia.br/opencode.sh | sh
irm https://c2code.ia.br/opencode.ps1 | iex; Install-C2code

Acrescente --so-config (ou -SoConfig no Windows) pra ele nem verificar a instalação do opencode e só regravar o config e as skills.

πpi instalar

O pi é outro agente de terminal. Mesmo acesso, mesmo modelo, as mesmas skills — muda só o programa.

curl -fsSL https://c2code.ia.br/pi.sh | sh -s -- --token c2c_SEU_TOKEN
irm https://c2code.ia.br/pi.ps1 | iex; Install-C2codePi -Token c2c_SEU_TOKEN
Configuração

~/.pi/agent/models.json (só nosso) vai inteiro; ~/.pi/agent/settings.json é mesclado — tema, editor e atalhos continuam onde estavam.

Skills e regras

Skills em ~/.pi/agent/skills/c2code/; regras da casa no bloco marcado do ~/.pi/agent/AGENTS.md.

Pra usar: pi abre a interface; pi -p "sua pergunta" faz uma pergunta só. Rode o mesmo comando de novo pra atualizar configs, skills e regras.

CClaude Code instalar

O Claude Code, da Anthropic, fala o protocolo dela — e o nosso servidor também: o mesmo modelo, na mesma máquina, responde nos dois.

curl -fsSL https://c2code.ia.br/claude.sh | sh -s -- --token c2c_SEU_TOKEN
irm https://c2code.ia.br/claude.ps1 | iex; Install-C2codeClaude -Token c2c_SEU_TOKEN

A configuração vai pra ~/.claude/settings.json — mesclada, não sobrescrita: permissões, hooks e statusline que você já tinha continuam lá; só o bloco env (e o c2code) são nossos. Se o Claude Code ainda não estiver instalado, o comando instala sozinho.

Junto vão as skills em ~/.claude/skills/, os subagentes em ~/.claude/agents/ e as regras da casa num bloco marcado do ~/.claude/CLAUDE.md. Pra atualizar, rode o mesmo comando sem token.

Sem instalador

Basta apontar a URL base — sem /v1 no fim. Não precisa dizer qual modelo usar: o servidor troca o nome pelo que a máquina está servindo.

export ANTHROPIC_BASE_URL=https://c2code.ia.br/anthropic
export ANTHROPIC_AUTH_TOKEN=c2c_SEU_TOKEN
claude

Pra deixar fixo, o mesmo vai no ~/.claude/settings.json:

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://c2code.ia.br/anthropic",
    "ANTHROPIC_AUTH_TOKEN": "c2c_SEU_TOKEN"
  }
}

Configurar à mão

Se preferir não rodar instalador, tudo o que ele grava está disponível pra baixar com o seu token.

Config do opencode

curl -H "Authorization: Bearer c2c_SEU_TOKEN" \
     https://c2code.ia.br/me/opencode.json -o opencode.json

Grave em ~/.config/opencode/opencode.json. No Windows, %USERPROFILE%\.config\opencode\opencode.json.

Skills

pacote=$(mktemp)
curl -f -H "Authorization: Bearer c2c_SEU_TOKEN" \
     https://c2code.ia.br/me/skills.tar.gz -o "$pacote" \
  && rm -rf ~/.config/opencode/skill/c2code \
  && mkdir -p ~/.config/opencode/skill/c2code \
  && tar -xzf "$pacote" -C ~/.config/opencode/skill/c2code
rm -f "$pacote"

O rm -rf só roda se o download deu certo — e é ele que apaga a skill que saiu de circulação. A pasta é só do C2Code; as suas não são tocadas.

Comandos customizados

/update-c2code, /revisar, /verificar e /bug vão pra ~/.config/opencode/commands/ com prefixo c2code-, que separa os nossos dos seus:

pacote=$(mktemp)
curl -f -H "Authorization: Bearer c2c_SEU_TOKEN" \
     https://c2code.ia.br/me/commands.tar.gz -o "$pacote" \
  && rm -f ~/.config/opencode/commands/c2code-*.md \
  && mkdir -p ~/.config/opencode/commands \
  && tar -xzf "$pacote" -C ~/.config/opencode/commands
rm -f "$pacote"

pi e regras da casa

Do pi são dois arquivos: https://c2code.ia.br/me/pi/models.json vai inteiro pra ~/.pi/agent/, e de https://c2code.ia.br/me/pi/settings.json você copia as chaves pro seu. As regras da casa saem em https://c2code.ia.br/me/agents.md, prontas pra colar no AGENTS.md do seu agente.

Onde rodar

Dentro da pasta do seu projeto: o agente lê e edita os arquivos dali.

{}Usar como API

O mesmo token funciona direto na API, sem agente nenhum. Ela é compatível com a da OpenAI: qualquer biblioteca que fale com a OpenAI serve — só troque a URL base e a chave.

campovalor
URL basehttps://c2code.ia.br/openai/v1
autenticaçãoAuthorization: Bearer c2c_SEU_TOKEN
rotas/models, /chat/completions, /completions

O prefixo /ollama/ continua valendo e faz o mesmo que /openai/ — se você instalou antes, não precisa mexer.

from openai import OpenAI

cliente = OpenAI(
    base_url="https://c2code.ia.br/openai/v1",
    api_key="c2c_SEU_TOKEN",
)

modelo = cliente.models.list().data[0].id

r = cliente.chat.completions.create(
    model=modelo,
    messages=[{"role": "user", "content": "escreva um hello world em go"}],
)
print(r.choices[0].message.content)
curl https://c2code.ia.br/openai/v1/chat/completions \
  -H "Authorization: Bearer c2c_SEU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MODELO",
    "messages": [{"role": "user", "content": "escreva um hello world em go"}]
  }'

O nome do model você descobre em GET /openai/v1/models — ele muda quando trocamos o modelo, então leia de lá em vez de fixar no código. Streaming (stream=True) e chamada de ferramenta (tools) funcionam como na OpenAI.

Modelo essencial

Se você tem um modelo extra chamado essencial no config: ele fica sempre ligado, mas com janela de contexto pequena. Trocar pra ele dentro do opencode/pi pode dar "contexto excedido" já na primeira mensagem, porque o agente anexa prompt, regras e o esquema de todas as ferramentas. Ele funciona bem chamado direto pela API — curl, script, automação.

Chamadas ao mesmo tempo

Seu acesso roda ate 2 chamadas ao mesmo tempo

Passando disso, a próxima espera a vez em vez de dar erro — e só volta com 429 se a espera passar de 30 segundos, ou se a máquina estiver cheia naquele momento.

Janela aberta e parada não ocupa nada: o limite só vale enquanto o modelo está gerando resposta.

Os números existem pra garantir velocidade, não pra racionar. A máquina sustenta 32 chamadas simultâneas no total mantendo pelo menos 60 tokens por segundo em cada uma; acima disso a velocidade de todo mundo cai sem ninguém ganhar nada. O teto por acesso impede um script paralelo de ocupar a máquina inteira enquanto os outros esperam.

Recebeu 429? A resposta traz o cabeçalho Retry-After com quantos segundos esperar. Tratar isso é uma linha na maioria das bibliotecas.

Quanto o modelo pensa

O modelo principal raciocina antes de responder, e esse raciocínio gasta orçamento de saída. Quem controla é o reasoning_effort; o instalador grava o padrão da casa, medium, e o que estiver no seu arquivo ganha.

valorquando usar
lowEdição pontual, resposta curta, pergunta direta. Gasta menos e responde mais rápido.
mediumO padrão. Serve pra quase tudo.
highPlanejar mudança grande, revisar arquitetura. Custa caro: medimos 4x mais tokens gastos e menos conteúdo entregue num pedido direto de código.

Em ~/.config/opencode/opencode.json, dentro do modelo:

"provider": { "c2code": { "models": { "c2code-premium": {
  "options": { "reasoning_effort": "low" }
} } } }

Em ~/.pi/agent/models.json, no modelo:

"samplingParams": { "reasoning_effort": "low" }

Campo do corpo da requisição:

"reasoning_effort": "low"

Resposta vazia? Quase sempre o max_tokens apertado acabou dentro do raciocínio. O certo não é aumentar o teto — é pedir low.

Outros ajustes no seu config

O instalador grava os padrões da casa. Tudo ali é seu — o servidor lê só o token e o modelo. Rodar o instalador de novo sobrescreve o arquivo, então anote o que você mudou.

Amostragem

No opencode, em provider.c2code.models.c2code-premium.options; no pi, em samplingParams.

campopadrãoo que muda
temperature1.0Menor = mais previsível. Abaixo de 0.6 o modelo tende a repetir a mesma solução.
top_p1.0Corta a cauda das opções. Mexer nele e na temperatura aperta duas vezes.
frequency_penalty0Penaliza token repetido. Cuidado em código: HTML e JSX repetem de propósito. Suba só se o modelo entrar em laço.
Use snake_case, nos dois

O opencode aceita topP e frequencyPenalty no arquivo, mas repassa o bloco cru — e a API só entende top_p e frequency_penalty. Em camelCase o ajuste é descartado em silêncio.

Quanto do histórico sobrevive

"compaction": {
  "auto": true,
  "prune": true,
  "tail_turns": 6,
  "preserve_recent_tokens": 24000
}

Se o modelo esquece o que você falou há pouco, aumente preserve_recent_tokens. Se as sessões estouram o contexto, diminua. No pi o equivalente é keepRecentTokens.

Quanto uma ferramenta pode devolver

"tool_output": { "max_lines": 500, "max_bytes": 20000 }

Um cat de arquivo grande entrando cru estoura a janela sem o modelo ter lido nada útil. Aumente se o seu trabalho é ler arquivo grande de propósito.

Quantos passos por turno

"agent": { "build": { "steps": 80 } }

Baixo demais para tarefa longa no meio; alto demais deixa o agente insistindo num caminho errado.

O que você pode barrar

"permission": { "bash": { "rm -rf *": "deny", "sed -i *": "deny" } }

Vem com esses dois negados porque são os que estragam arquivo em silêncio. Acrescente o que quiser. Editou e parou de funcionar? Apague o arquivo e rode o instalador de novo.

O que o playground faz

Faz

Escreve e revisa código, explica o erro que você colar, projeta solução.

Não faz

Executar comando, ler ou criar arquivo, receber anexo, pesquisar na web, lembrar da conversa anterior.

Pra editar arquivos e rodar testes de verdade, use um agente no seu editor — aí as ferramentas existem.

Quando der erro

já existe uma inferência em andamento neste token

Outra janela sua está usando o acesso agora. Espere ela terminar, ou feche a que não estiver usando.

o daemon recusou seu token 401 / 403

O token pode ter sido trocado ou desativado. Fale com quem te passou o acesso.

não há máquina no ar agora 503

O modelo roda em máquina ligada sob demanda. Confira na página de status se ele está no horário e se há incidente em andamento.

esse token não parece ser de acesso ao modelo

Você colou um token diferente. O de acesso começa com c2c_.

Reinstalar do zero

Erro estranho, que não está na lista acima? A saída mais confiável é desinstalar e instalar de novo: apaga configuração velha, cache e, se for o caso, o programa — e o instalador reconstrói tudo.

# apaga a configuração, as skills e os comandos que o instalador gravou
rm -rf ~/.config/opencode
# se o problema for no próprio programa (instalador oficial)
rm -rf ~/.opencode
# reinstala tudo
curl -fsSL https://c2code.ia.br/opencode.sh | sh -s -- --token c2c_SEU_TOKEN

Instalou pelo npm? Troque a segunda linha por npm uninstall -g opencode-ai.

# apaga a configuração, as skills e as regras que o instalador gravou
rm -rf ~/.pi/agent
# se o problema for no próprio programa
npm uninstall -g @earendil-works/pi-coding-agent
# reinstala tudo
curl -fsSL https://c2code.ia.br/pi.sh | sh -s -- --token c2c_SEU_TOKEN
# apaga a configuração, as skills e os subagentes que o instalador gravou
rm -rf ~/.claude
# se o problema for no próprio programa (instalador oficial)
rm -f ~/.local/bin/claude
# reinstala tudo
curl -fsSL https://c2code.ia.br/claude.sh | sh -s -- --token c2c_SEU_TOKEN

No Windows, apague o caminho equivalente em %USERPROFILE% e rode o .ps1 de cada agente, nas seções acima.

Perguntas rápidas

Preciso de placa de vídeo?

Não. O modelo roda no servidor; sua máquina só envia o texto.

Funciona sem internet?

Não.

Ele vê meus arquivos?

Só os que o agente abrir durante a conversa, e só o conteúdo enviado como pergunta. Ele não varre o disco sozinho.

Posso usar em mais de um computador?

Pode, com o mesmo token — desde que não gere nos dois ao mesmo tempo.

Perdi o token.

Peça outro a quem te deu o acesso. O antigo para de funcionar quando um novo é gerado.

O comando não foi encontrado depois de instalar.

Abra um terminal novo: o instalador mexe no PATH e a janela antiga não enxerga a mudança.

Não achou o que procurava?

Fale com quem te deu o acesso e mande a mensagem de erro inteira — ela costuma dizer exatamente o que falta.

Falar com a C2A no WhatsApp