c2code-cloud
Como usar o modelo de código que você recebeu acesso.
Beta fechado e confidencial
Este serviço está em teste e o acesso é por convite. Trate como confidencial: não compartilhe o token, este endereço, nem prints ou respostas do sistema fora de quem te deu o acesso. O token é pessoal e identifica você.
Você recebeu um token que começa com c2c_. Com ele um
agente de código que roda no seu terminal passa a usar o nosso modelo em vez de
um serviço pago. Servem dois: o opencode e o
pi — mesmo acesso, mesmo modelo, as mesmas skills.
Instale o que você já usa.
O token é pessoal. Não precisa criar conta, nem cartão.
opencode instalar
Uma linha. Ele instala o opencode se ainda não houver, busca a configuração no servidor e já deixa tudo no lugar.
Linux e macOS
curl -fsSL https://c2code-cloud.prontdoc.com.br/opencode.sh | sh -s -- --token c2c_SEU_TOKEN
Windows (PowerShell)
irm https://c2code-cloud.prontdoc.com.br/opencode.ps1 | iex; Install-C2code -Token c2c_SEU_TOKEN
A configuração vai pra ~/.config/opencode/opencode.json. Se já
existir um arquivo lá, ele guarda uma copia antes de trocar.
Atualizar depois
De tempos em tempos o modelo da sua categoria muda — outro modelo, outro limite de contexto, às vezes passa a aceitar print. O config no seu computador é um arquivo, então ele não acompanha sozinho: rode o mesmo comando de cima, sem token, que ele lê o seu do config já instalado.
curl -fsSL https://c2code-cloud.prontdoc.com.br/opencode.sh | sh
irm https://c2code-cloud.prontdoc.com.br/opencode.ps1 | iex; Install-C2code
Acrescente --só-config (ou -SoConfig)
pra ele nem verificar a instalação do opencode e só regravar o config e as
skills.
Junto vão as skills: instruções prontas que o opencode oferece ao
modelo quando o assunto bate (deployar, por exemplo). Elas ficam em
~/.config/opencode/skill/c2code/ — uma pasta só nossa, reescrita
inteira toda vez que você roda o instalador; as skills que você escrever em
~/.config/opencode/skill/<nome>/ ficam intactas.
E vão também as regras da casa, num
~/.config/opencode/AGENTS.md que vale em todo projeto. Como esse
arquivo pode ser seu também, o que é nosso entra num bloco marcado
(c2code:inicio / c2code:fim) e só ele é reescrito —
o que você escrever fora do bloco fica.
Rode o mesmo comando de novo pra atualizar config, skills e regras.
Usar
opencode # abre a interface
opencode run "sua pergunta" # uma pergunta só
pi instalar
O pi é outro agente de terminal. Mesmo acesso, mesmo modelo, as mesmas skills — muda só o programa.
Linux e macOS
curl -fsSL https://c2code-cloud.prontdoc.com.br/pi.sh | sh -s -- --token c2c_SEU_TOKEN
Windows (PowerShell)
irm https://c2code-cloud.prontdoc.com.br/pi.ps1 | iex; Install-C2codePi -Token c2c_SEU_TOKEN
O pi guarda a configuração em dois arquivos, e o instalador trata cada um
como merece: ~/.pi/agent/models.json (só nosso) vai inteiro, e
~/.pi/agent/settings.json é mesclado — seu tema, seu editor
e seus atalhos continuam onde estavam.
As skills vão pra ~/.pi/agent/skills/c2code/, com a mesma
regra: pasta só nossa, reescrita inteira a cada rodada. As regras da casa
vão pro ~/.pi/agent/AGENTS.md, no mesmo bloco marcado — o que você
escreveu fora dele fica.
Rode o mesmo comando de novo pra atualizar configs, skills e regras.
Usar
pi # abre a interface
pi -p "sua pergunta" # uma pergunta só
Ou a mao, se preferir
A configuração do opencode é um arquivo JSON que você pode baixar direto:
curl -H "Authorization: Bearer c2c_SEU_TOKEN" \
https://c2code-cloud.prontdoc.com.br/me/opencode.json -o opencode.json
Grave em ~/.config/opencode/opencode.json. No
Windows, %USERPROFILE%\.config\opencode\opencode.json.
As skills vem num pacote, no mesmo esquema:
mkdir -p ~/.config/opencode/skill/c2code
curl -H "Authorization: Bearer c2c_SEU_TOKEN" \
https://c2code-cloud.prontdoc.com.br/me/skills.tar.gz | tar -xz -C ~/.config/opencode/skill/c2code
A mao isso só acrescenta. Quem também APAGA a skill que saiu de circulação é o instalador lá de cima, que reescreve a pasta inteira.
Do pi são dois arquivos, nas rotas
https://c2code-cloud.prontdoc.com.br/me/pi/models.json e
https://c2code-cloud.prontdoc.com.br/me/pi/settings.json — o primeiro vai inteiro pra
~/.pi/agent/, do segundo você copia as chaves pro seu. E as regras
da casa saem em https://c2code-cloud.prontdoc.com.br/me/agents.md, já 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.
Claude Code
O Claude Code fala o protocolo da Anthropic, e o nosso servidor também — o mesmo modelo, na mesma máquina, responde nos dois. Basta apontar a URL base pra ca:
export ANTHROPIC_BASE_URL=https://c2code-cloud.prontdoc.com.br/anthropic/vllm_oss_120b
export ANTHROPIC_AUTH_TOKEN=c2c_SEU_TOKEN
claude
Sem /v1 no fim: o Claude Code acrescenta sozinho.
Você NÃO precisa dizer qual modelo usar — o servidor troca o nome pelo que a
máquina está servindo, então os ANTHROPIC_DEFAULT_*_MODEL da
documentacao dele são opcionais aqui.
Pra deixar fixo, sem exportar toda vez, o mesmo vai no
~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "https://c2code-cloud.prontdoc.com.br/anthropic/vllm_oss_120b",
"ANTHROPIC_AUTH_TOKEN": "c2c_SEU_TOKEN"
}
}
Usar como API
O mesmo token funciona direto na API, sem opencode nenhum. Ela é compatível com a da OpenAI, então qualquer biblioteca que fale com a OpenAI serve — só troque a URL base e a chave.
| campo | valor |
|---|---|
| URL base | https://c2code-cloud.prontdoc.com.br/openai/vllm_oss_120b/v1 |
| autenticação | Authorization: Bearer c2c_SEU_TOKEN |
| rotas | /models, /chat/completions,
/completions |
O prefixo /ollama/ continua valendo e faz a mesma
coisa que /openai/ — se você instalou antes, não precisa mexer.
curl
curl https://c2code-cloud.prontdoc.com.br/openai/vllm_oss_120b/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/vllm_oss_120b/v1/models — ele muda quando trocamos o modelo,
então leia de lá em vez de fixar no código.
Python
from openai import OpenAI
cliente = OpenAI(
base_url="https://c2code-cloud.prontdoc.com.br/openai/vllm_oss_120b/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)
Streaming (stream=True) e chamada de ferramenta
(tools) funcionam como na OpenAI.
Vale aqui a mesma regra: uma chamada por vez. Se o seu
código disparar varias em paralelo com o mesmo token, todas menos uma recebem
429. Faça uma de cada vez, ou trate o 429 esperando e
tentando de novo.
Quantas 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á de fato gerando resposta.
Os números existem pra garantir velocidade, não pra racionar. A máquina sustenta 32 chamadas simultaneas 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 de 4 por acesso é o que impede um script paralelo de ocupar a máquina inteira enquanto os outros esperam.
Se você recebeu 429, a resposta traz o cabeçalho
Retry-After com quantos segundos esperar. Tratar isso é uma linha
na maioria das bibliotecas, e é o comportamento certo.
Quanto o modelo pensa antes de responder
O modelo principal raciocina antes de responder, e esse raciocínio
gasta orçamento de saída. Quanto ele pensa é controlado por
reasoning_effort, e o instalador já grava o padrão da casa:
medium.
Você pode mudar, e o que estiver no seu arquivo ganha — o servidor não mexe no que você manda.
| valor | quando usa |
|---|---|
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 — ele pensa mais e escreve menos. |
opencode
Em ~/.config/opencode/opencode.json, dentro do modelo:
"provider": {{ "c2code": {{ "models": {{ "vllm_oss_120b": {{
"options": {{ "reasoning_effort": "low" }}
}} }} }} }}
pi
Em ~/.pi/agent/models.json, no modelo:
"samplingParams": {{ "reasoning_effort": "low" }}
Claude Code, ou chamada na mao
E campo do corpo da requisicao:
"reasoning_effort": "low"
Se a resposta vier vazia, quase sempre é isto: 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 um arquivo com os padrões da casa. Tudo ali é seu — o servidor lê só o token e o modelo; o resto é o seu cliente decidindo. Rodar o instalador de novo sobrescreve o arquivo, então anote o que você mudou.
Amostragem: quão previsível a resposta é
No opencode, em provider.c2code.models.vllm_oss_120b.options; no pi,
em samplingParams. Nomes diferentes, mesma coisa:
| campo | padrão | o que muda |
|---|---|---|
temperature | 1.0 | Menor = mais previsível e repetitivo. 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 ao mesmo tempo aperta duas vezes. |
frequency_penalty | 0 | Penaliza token repetido. Cuidado em código: HTML e JSX repetem de propósito (as mesmas classes, a mesma estrutura), e penalizar isso deixa a saída inconsistente. Suba só se o modelo entrar em laço. |
Use o nome em snake_case, nos dois. O
opencode aceita topP e frequencyPenalty no arquivo,
mas repassa o bloco cru pro servidor — e a API só entende
top_p e frequency_penalty. Escrito em camelCase o
ajuste é aceito pelo editor, enviado pela rede e descartado em silêncio
do outro lado. Medido em 2026-09-10.
Quanto do histórico sobrevive
A conversa cresce até estourar a janela; a compactação resume o que ficou
para tras. No opencode, bloco compaction:
"compaction": {{
"auto": true, // resume sozinho quando aperta
"prune": true, // joga fora saída velha de ferramenta primeiro
"tail_turns": 6, // últimos N turnos ficam intactos
"preserve_recent_tokens": 24000
}}
Se o modelo esquece o que você falou ha pouco, aumente
preserve_recent_tokens. Se as sessões estão estourando contexto,
diminua. No pi o campo equivalente é keepRecentTokens.
Quanto uma ferramenta pode devolver
"tool_output": {{ "max_lines": 500, "max_bytes": 20000 }}
Um cat de arquivo grande ou um log inteiro entrando cru é a
forma mais rápida de estourar 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 }} }}
Quantas ações o agente encadeia antes de devolver a palavra. Baixo demais para tarefa longa no meio; alto demais deixa ele 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 — é o seu cliente, na sua máquina.
Se você editar e algo parar de funcionar
Apague o arquivo e rode o instalador de novo. Ele reescreve do zero com os padrões da casa.
O que o playground não faz
A página de teste no navegador é só conversa — nenhuma ferramenta ligada. Lá ele não executa comando, não lê nem cria arquivo, não recebe anexo, não gera arquivo pra download, não pesquisa na web e não lembra da conversa anterior.
Ele escreve e revisa código, explica erro que você colar e projeta solução. Para editar arquivos de verdade e rodar teste, use no seu editor com o opencode — e aí as ferramentas existem.
Quando der erro
já existe uma inferencia 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 ou 403)
O token pode ter sido trocado ou desativado. Fale com quem te passou o acesso.
não ha máquina no ar agora (503)
O modelo roda em máquina que é ligada sob demanda e desligada quando não está em uso. Avise quem te deu o acesso que precisa dela ligada.
esse token não parece ser de acesso ao modelo
Você colou um token diferente. O de acesso
começa com c2c_.
Perguntas rapidas
| pergunta | resposta |
|---|---|
| Preciso de placa de video? | Não. O modelo roda no servidor; sua máquina só envia o texto. |
| Funciona sem internet? | Não. |
| Ele ve 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 opencode 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. |