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.
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
Vai pra ~/.config/opencode/opencode.json. Se já existir, ele guarda uma cópia antes de trocar.
Em ~/.config/opencode/skill/c2code/ — pasta só nossa. As suas, em outras pastas, ficam intactas.
Num bloco marcado (c2code:inicio / c2code:fim) do ~/.config/opencode/AGENTS.md. O que você escrever fora do bloco fica.
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
~/.pi/agent/models.json (só nosso) vai inteiro; ~/.pi/agent/settings.json é mesclado — tema, editor e atalhos continuam onde estavam.
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.jsonGrave 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.
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.
| campo | valor |
|---|---|
| URL base | https://c2code.ia.br/openai/v1 |
| autenticação | Authorization: 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.
essencialSe 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
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.
| valor | quando usar |
|---|---|
low | Edição pontual, resposta curta, pergunta direta. Gasta menos e responde mais rápido. |
medium | O padrão. Serve pra quase tudo. |
high | Planejar 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.
| campo | padrão | o que muda |
|---|---|---|
temperature | 1.0 | Menor = mais previsível. Abaixo de 0.6 o modelo tende a repetir a mesma solução. |
top_p | 1.0 | Corta a cauda das opções. Mexer nele e na temperatura aperta duas vezes. |
frequency_penalty | 0 | Penaliza token repetido. Cuidado em código: HTML e JSX repetem de propósito. Suba só se o modelo entrar em laço. |
snake_case, nos doisO 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
Escreve e revisa código, explica o erro que você colar, projeta solução.
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
Outra janela sua está usando o acesso agora. Espere ela terminar, ou feche a que não estiver usando.
O token pode ter sido trocado ou desativado. Fale com quem te passou o acesso.
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.
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.