Seções da Base de Conhecimento ▾
Navegação
▸ Comece aqui Por funçõesCategorias
- Cursor + Gonka AI — LLM barato para codificação
- Claude Code + Gonka AI — LLM para terminal
- OpenClaw + Gonka AI — agentes AI acessíveis
- OpenCode: seu próprio modelo no terminal
- Continue.dev + Gonka AI — AI para VS Code/JetBrains
- Cline + Gonka AI — agente AI no VS Code
- Aider + Gonka AI — programação em par com AI
- LangChain + Gonka AI — aplicativos AI por uma fração do custo
- n8n + Gonka AI — automação com AI barata
- Open WebUI + Gonka AI — seu próprio ChatGPT
- LibreChat + Gonka AI — ChatGPT de código aberto
- Hermes Agent + DeepSeek na rede Gonka: agente autônomo por centavos
- Kilo Code + Gonka AI — Agente de IA no VS Code
- Roo Code + Gonka AI — Agente de IA autônomo no VS Code
- LlamaIndex + Gonka AI — Aplicações RAG por alguns centavos
- PydanticAI + Gonka — Agentes de IA tipificados por alguns centavos
- Vercel AI SDK + Gonka AI — Aplicações de IA em TypeScript por centavos
- TanStack AI + Gonka — Aplicativos de IA em TypeScript por centavos
- API início rápido — curl, Python, TypeScript
- JoinGonka Gateway — Visão geral completa
- Management Keys — SaaS na Gonka
- A API de IA mais barata: comparativo de provedores 2026
- Como comprar tokens de AI e chave API: 3 formas em 2026
- Limite de solicitações do Cursor Pro esgotado — análise e uma alternativa barata
- Claude Code mais barato — análise de fatura e mudança de serviço
- Cline queima dinheiro — por que o agente gasta tanto
- OpenClaw custa caro — porque o agente queima tokens e como economizar
- OpenRouter: alternativa barata — comparativo com JoinGonka Gateway
- O melhor modelo de IA para codificação em 2026: comparação e preços
- Alternativa barata ao GitHub Copilot sem limites
- Alternativa barata ao Windsurf sem créditos e sem limites
- A API mais barata para agentes de IA em 2026
- ZCode: inferência GLM barata em vez do GLM Coding Plan
- JetBrains IDE + JoinGonka Gateway — seu próprio endpoint em vez de créditos
- GitHub Copilot BYOK: seus modelos em vez da cota
- Zed + JoinGonka Gateway — inferência barata no editor
- Pi + JoinGonka Gateway — agente terminal em inferência barata
- Codex CLI: sua própria chave em vez de assinatura
- DeepSeek Harness: seu próprio provedor via JoinGonka Gateway
- MiniMax Code: agente MiniMax com sua própria chave via Gonka
- Warp + JoinGonka Gateway — agente de terminal em seu próprio endpoint
- Trae + JoinGonka Gateway — modelos da rede Gonka no AI-IDE
- Cherry Studio + JoinGonka Gateway — cliente de IA desktop
- omp (Oh My Pi) + JoinGonka Gateway: agente com papéis de modelos
- OpenHands + JoinGonka Gateway: agente em seu próprio endpoint
- Qwen Code após o fim do qwen-oauth: trabalhando via JoinGonka Gateway
- Goose + JoinGonka Gateway: seu próprio provedor e chave no keyring
- Crush + JoinGonka Gateway: agente Charm em modelos da rede Gonka
- Zoo Code + JoinGonka Gateway: migração do Roo Code para modelos Gonka
- Kimi Code CLI: agente Moonshot AI com sua própria chave via Gonka
- Factory Droid + JoinGonka Gateway: BYOK em modelos da rede Gonka
- MiMo Code + JoinGonka Gateway: agente Xiaomi em modelos da rede Gonka
Ferramentas
Crush + JoinGonka Gateway: agente Charm em modelos da rede Gonka
Crush — é um agente de codificação via terminal da Charm, a equipe cujas bibliotecas para interfaces de console sustentam dezenas de milhares de programas. Ele lê e edita arquivos do projeto, executa comandos, obtém contexto de servidores de linguagem (LSP), conecta ferramentas externas via MCP e sabe como trocar de modelo no meio da sessão sem perder o contexto. Funciona em terminais macOS, Linux e Windows, além de Android e BSD; licença — FSL-1.1-MIT. A linhagem do projeto é notável: o repositório de arquivo opencode-ai/opencode remete diretamente ao Crush — o projeto foi continuado por seu autor original e pela equipe da Charm.
O Crush aceita provedores externos de dois tipos — com API compatível com OpenAI e Anthropic. O JoinGonka Gateway conecta-se como openai-compat: com um comando do instalador ou dez linhas de configuração. Depois disso, o agente trabalha com modelos da rede descentralizada Gonka — DeepSeek V4 Flash, GLM-5.3 Flash e MiniMax M2.7 — pelo mesmo preço: $0.0069 por milhão de tokens de entrada.
Duas características do Crush que valem a pena conhecer antes da primeira sessão: ele distribui os modelos em dois slots, large e small, e o modelo escolhido na interface é armazenado em um arquivo de estado separado que tem prioridade sobre a configuração. Há uma seção dedicada a isso. Os comandos e mensagens abaixo foram verificados com uma execução ao vivo do Crush 0.96.1 pelo gateway em 23 de setembro de 2026. Após confirmar o endereço, chegarão 3M de tokens gratuitos na conta — suficientes para repetir tudo isso sozinho.
Início rápido: instalação e um comando
Passo 1: instalar o Crush. Os métodos oficiais do README do projeto:
# Homebrew
brew install charmbracelet/tap/crush
# npm
npm install -g @charmland/crush
# Arch Linux
yay -S crush-bin
# Windows
winget install charmbracelet.crush
# Go
go install github.com/charmbracelet/crush@latestLá também estão descritos os repositórios de pacotes para Debian, Ubuntu, Fedora e RHEL, Nix e Scoop, e na página de releases ficam os binários prontos. Para conferir, use crush --version; a resposta virá como uma linha do tipo crush version v0.96.1.
Passo 2: obter uma chave. Cadastre-se em gate.joingonka.ai/register, confirme o endereço e crie uma chave com o prefixo jg- na seção «Chaves de API». Uma única chave e um único saldo valem para todos os modelos da rede.
Passo 3: rodar o instalador.
npx @joingonka/setup --tool crushO instalador vai pedir a chave — ela não é passada como argumento de linha de comando, para não ficar no histórico do shell — e faz quatro coisas:
- grava o provedor
joingonkaem~/.config/crush/crush.json: tipoopenai-compat, endereço do gateway, chave literal e três modelos da rede com janelas de contexto, tetos de resposta e preços por milhão de tokens, que no momento da instalação ele busca ao vivo no gateway, e com os quais o Crush calcula o custo da sessão. O arquivo receberá permissões600; - define os modelos: no slot large, DeepSeek V4 Flash; no small, MiniMax M2.7, e o GLM-5.3 Flash fica na lista para seleção manual. Ele só faz isso se o slot large estiver vazio ou apontar para o nosso modelo que saiu da rede; uma escolha de terceiros é mantida, e na saída aparecerá uma dica de como trocar;
- verifica se a escolha vai valer: o modelo da interface do Crush fica num arquivo de estado, e esse arquivo sobrepõe a configuração — é sobre isso a seção sobre large e small;
- faz um backup, deixa os outros provedores e ajustes como estavam e termina com uma requisição ao vivo ao gateway, para já testar a chave, o endereço e o modelo.
Outro modelo é definido com a flag --model e as abreviações deepseek, glm ou minimax; o modelo indicado explicitamente é sempre gravado. Diretórios fora do padrão o instalador considera igual ao próprio Crush: CRUSH_GLOBAL_CONFIG para a configuração, CRUSH_GLOBAL_DATA para o arquivo de estado, além de XDG_CONFIG_HOME e XDG_DATA_HOME. Para servidores e scripts existe um modo sem perguntas, no qual a chave vem de uma variável de ambiente:
JOINGONKA_API_KEY=jg-your-key npx @joingonka/setup --tool crush --model glm --non-interactiveO formato principal do Crush agora é o crushrc, mas o instalador grava crush.json: todas as versões o entendem. Se você já tem um crushrc, o Crush vai mesclar os dois arquivos; em caso de chaves iguais, o crushrc vence, e o instalador não o toca.
Configuração manual: crush.json ou crushrc
Dá para escrever à mão tudo o que o instalador faz. Aqui vai um ~/.config/crush/crush.json que funciona — esse arquivo a gente passou pelo gateway:
{
"$schema": "https://charm.land/crush.json",
"providers": {
"joingonka": {
"name": "JoinGonka (Gonka)",
"type": "openai-compat",
"base_url": "https://gate.joingonka.ai/v1",
"api_key": "jg-your-key",
"models": [
{ "id": "deepseek-ai/DeepSeek-V4-Flash-0731", "name": "DeepSeek V4 Flash (Gonka)",
"context_window": 380000, "default_max_tokens": 32768,
"can_reason": true, "supports_attachments": false },
{ "id": "MiniMaxAI/MiniMax-M2.7", "name": "MiniMax M2.7 (Gonka)",
"context_window": 200000, "default_max_tokens": 8192,
"can_reason": false, "supports_attachments": false },
{ "id": "zai-org/GLM-5.3-Flash", "name": "GLM-5.3 Flash (Gonka)",
"context_window": 390000, "default_max_tokens": 8192,
"can_reason": true, "supports_attachments": false }
]
}
},
"models": {
"large": { "provider": "joingonka", "model": "deepseek-ai/DeepSeek-V4-Flash-0731" },
"small": { "provider": "joingonka", "model": "MiniMaxAI/MiniMax-M2.7" }
}
}| Campo | Valor | O que importa |
|---|---|---|
type | openai-compat | Tipo para serviços de terceiros com API compatível com OpenAI. O tipo openai a documentação do Crush reserva para requisições feitas pela própria OpenAI |
base_url | https://gate.joingonka.ai/v1 | Com /v1 no final: o caminho /chat/completions o Crush adiciona por conta própria |
api_key | sua chave jg-… | O Crush passa o valor por substituição de shell, então no lugar da chave você pode escrever $JOINGONKA_API_KEY — nesse caso a variável precisa estar exportada onde o Crush for iniciado |
context_window | janela do modelo | É por ela que o Crush mostra o quanto do contexto está preenchido e decide quando comprimir o histórico |
default_max_tokens | teto da resposta | Vai em toda requisição como max_tokens. Nos modelos que raciocinam, esse orçamento inclui o raciocínio também |
O Crush só aceita JSON estrito: um comentário ou uma vírgula sobrando e ele não inicia. Os campos de preço (cost_per_1m_in, cost_per_1m_out e os dois campos de cache) só servem para o contador de custo: o instalador grava ali o preço real do gateway, e sem eles o Crush funciona e mostra zero — só o editor com o schema do $schema vai marcá-los como obrigatórios.
O mesmo provedor no formato crushrc é Bash comum com os comandos embutidos do Crush. Arquivo ~/.config/crush/crushrc:
provider add joingonka \
--name "JoinGonka (Gonka)" \
--type openai-compat \
--base-url "https://gate.joingonka.ai/v1" \
--api-key "${JOINGONKA_API_KEY:?set JOINGONKA_API_KEY}"
model add joingonka/deepseek-ai/DeepSeek-V4-Flash-0731 \
--name "DeepSeek V4 Flash (Gonka)" \
--context-window 380000 --default-max-tokens 32768 --can-reason true
model add joingonka/MiniMaxAI/MiniMax-M2.7 \
--name "MiniMax M2.7 (Gonka)" \
--context-window 200000 --default-max-tokens 8192
model add joingonka/zai-org/GLM-5.3-Flash \
--name "GLM-5.3 Flash (Gonka)" \
--context-window 390000 --default-max-tokens 8192 --can-reason true
model large joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
model small joingonka/MiniMaxAI/MiniMax-M2.7Aqui o modelo é referenciado na forma provider/model-id: antes da primeira barra vai o nome do provedor, depois vem o identificador de rede como ele é. A forma ${JOINGONKA_API_KEY:?…} mantém a chave fora do arquivo, mas sem a variável exportada o Crush não inicia — melhor um erro na largada do que requisições com chave vazia.
Modelos large e small e arquivo de estado
No Crush, o modelo não é escolhido como algo único para tudo, mas para dois slots:
| Slot | O que é executado nele | O que o instalador define | Como alterar |
|---|---|---|---|
large | Agente principal: todos os movimentos com leitura e edição de arquivos e comandos | DeepSeek V4 Flash: janela de 380K e o maior teto de resposta da rede, 32768 | ctrl+l na interface, -m no crush run, models.large na configuração |
small | Tarefas auxiliares: nome da sessão e sub-agente que busca na rede e lê páginas da web. Se o modelo pequeno não conseguir lidar com o nome, o Crush repete a solicitação para o grande | MiniMax M2.7: tem a maior capacidade da rede | --small-model no crush run, models.small na configuração, model small no crushrc |
O terceiro modelo da rede, o modelo de raciocínio GLM-5.3 Flash, é escolhido para lógica complexa, lembrando que seu limite de resposta é 8192 e parte dele é dedicada ao raciocínio; detalhes estão na revisão do modelo. Para uma execução, o modelo é especificado pelo nome completo: crush run -m joingonka/zai-org/GLM-5.3-Flash "…". Todos os nomes disponíveis são listados com crush models joingonka.
Arquivo de estado. O modelo escolhido na interface via ctrl+l não é gravado em crush.json, mas no arquivo de estado da máquina: ~/.local/share/crush/crush.json, no Windows — %LOCALAPPDATA%\crush\crush.json. Este arquivo tem prioridade sobre a configuração do usuário e o crushrc: o Crush os lê na ordem /etc/crush/crush.json → ~/.config/crush/crush.json → ~/.config/crush/crushrc → arquivo de estado, e cada um subsequente sobrescreve o anterior. Acima deles estão apenas as configurações do projeto — crush.json ou crushrc no seu diretório. O comando crush dirs mostra onde os arquivos estão localizados na sua máquina.
Em nossa execução, abrimos a seleção de modelos — o provedor "JoinGonka (Gonka)" aparece lá com a marca "✓ Configured" — e selecionamos o MiniMax M2.7. O Crush respondeu "Large model changed to MiniMax M2.7 (Gonka)" e gravou no arquivo de estado:
{"models":{"large":{"model":"MiniMaxAI/MiniMax-M2.7","provider":"joingonka","max_tokens":8192}}, …}Agora, este modelo é mais importante do que o que está escrito em crush.json. O instalador reconhece essa situação e se comporta de forma diferente:
- sem
--modelele não altera o arquivo de estado — essa é a sua escolha de trabalho —, mas avisa diretamente com qual modelo o Crush realmente abrirá:Heads-up: Crush will still start with joingonka/MiniMaxAI/MiniMax-M2.7, not joingonka/deepseek-ai/DeepSeek-V4-Flash-0731. Ele fará o mesmo se o GLM-5.3 Flash ou um modelo de outro provedor for escolhido na interface; - com
--modelexplícito ele corrige exatamente uma entrada no arquivo de estado —models.large—, após salvar uma cópia, e escreve o que era e o que passou a ser. Caso contrário, a flag não teria efeito silenciosamente. Após esse lançamento, o Crush em nossa execução abriu com o modelo especificado na flag.
Verificação: o que deve acontecer
Primeiro, garanta que o Crush enxergue o provedor:
crush models joingonkaA resposta traz três linhas:
joingonka/MiniMaxAI/MiniMax-M2.7
joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
joingonka/zai-org/GLM-5.3-FlashDepois, faça uma execução única sem interface. Coloque no diretório do projeto um arquivo com um erro óbvio e peça para encontrá-lo:
crush run -q "Read calc.py and tell me in one sentence whether it has a bug."O agente deve chamar sozinho a ferramenta de leitura de arquivo e responder com objetividade, indicando o número da linha. Na nossa execução, os três modelos da rede encontraram o erro, e a tarefa levou de 20 a 40 segundos. A flag -q esconde o indicador de espera. No modo crush run, todas as chamadas de ferramentas são aprovadas automaticamente, então execute-o no seu próprio projeto. Na interface normal (comando crush), o modelo ativo aparece na barra de status: ◇ DeepSeek V4 Flash (Gonka) via JoinGonka (Gonka). O Crush guarda as sessões e o log no diretório .crush do projeto, protegido do git pelo próprio .gitignore; o log é exibido com crush logs. Do lado do gateway, a requisição aparece no painel: seção «Uso», detalhamento «Por modelos» e «Por chaves».
Se algo deu errado, o diagnóstico normalmente se lê direto na mensagem:
| O que aparece | O que significa | O que fazer |
|---|---|---|
unauthorized: Invalid API key. | O gateway não aceitou a chave | Verifique a api_key: a chave inteira, sem espaços. Se ali houver uma referência a uma variável, ela precisa estar exportada neste shell |
invalid JSON in config file …/crush.json | O arquivo tem um comentário, uma vírgula solta ou um erro de digitação | O Crush só aceita JSON estrito: corrija o arquivo. O instalador não remove os comentários sozinho, mas avisa sobre eles, e o arquivo que não consegue ser lido de jeito nenhum ele não toca e informa o motivo |
failed to load shell config …/crushrc: … exit status 1 | Erro no crushrc, na maioria das vezes porque não foi definida uma variável com a chave no formato ${…:?} | Exporte a variável antes de executar ou corrija a linha em que o script quebra |
Failed to override models: large model "…" not found | Erro de digitação no nome do modelo na flag -m | Copie o nome da saída de crush models joingonka |
too many requests: Model "…" is currently overloaded in the Gonka network (rate limit) | O modelo ficou sem capacidade livre na rede no horário de pico | O Crush repete a requisição sozinho com pausas crescentes — na nossa execução, cerca de um minuto — e só depois desiste. Troque para outro modelo com ctrl+l ou -m, ou espere; o estado aparece na página de status |
| O Crush abriu com um modelo diferente do que o instalador informou | A escolha feita na interface fica no arquivo de estado e sobrepõe a configuração | Escolha o modelo com ctrl+l ou repita a instalação com --model |
402 | O saldo acabou | Recarregue a conta na seção «Faturamento»; a chave continua válida |
Quanto custa
Um agente gasta tokens de forma diferente de um chat: para cada frase sua, o Crush adiciona um prompt de sistema e as descrições de suas ferramentas, e uma tarefa geralmente leva vários passos. Em nossa execução, cada solicitação ao modelo carregou cerca de 11,5 mil tokens de entrada, e a tarefa de "ler um arquivo e encontrar o erro" levou de duas a três solicitações e 23-35 mil tokens, quase tudo de entrada. Portanto, o preço por token aqui é determinante.
Através do JoinGonka Gateway, os tokens custam $0.0069 por milhão na entrada e $0.021 por milhão na saída — o preço é o mesmo para todos os modelos da rede e é fornecido nesta página a partir de uma fonte em tempo real.
| Cenário | Consumo | Via Gateway |
|---|---|---|
| Tarefa única: ler arquivo, encontrar erro | 23-35K tokens | centésimos de centavo |
| Dia de trabalho ativo | 3-7M tokens | alguns centavos |
| Mês de desenvolvimento ativo | ~150M tokens | cerca de um dólar |
As estimativas na coluna à direita baseiam-se nos preços de setembro de 2026. Para comparação, como você pode pagar pelos modelos no Crush:
| Método | Modelo de pagamento | O que limita |
|---|---|---|
| Hyper — provedor oficial da Charm | assinatura, há um nível gratuito | termos da tarifa por parte da Charm |
| Chave do fornecedor diretamente | por tokens conforme a lista de preços do fornecedor | a fatura cresce com a duração das sessões; o preço depende do modelo |
| JoinGonka Gateway | por tokens, saldo pré-pago | o gasto é visível no painel; não há assinaturas ou cotas mensais |
O contador de custos na interface do Crush calcula de acordo com os campos de preço da configuração. O preço do gateway no momento da instalação é incluído lá, mas o preço em dólares na rede flutua com a taxa de câmbio do GNK, portanto, o contador é uma referência. O consumo exato e o saldo restante estão no painel, nas seções "Uso" e "Faturamento". O motivo pelo qual o DeepSeek V4 Flash é definido no slot large por padrão é detalhado na análise do modelo.
O que levar em conta no trabalho
Permissões. Por padrão, a interface do Crush pede permissão antes de invocar uma ferramenta. A flag --yolo desativa todas as perguntas de uma vez, enquanto as ferramentas de confiança pontual são listadas no config:
# crushrc
permissions allow view ls grep
# crush.json
"permissions": { "allowed_tools": ["view", "ls", "grep"] }Vale lembrar que crush run aprova tudo sozinho. Isso é uma característica do Crush, não depende do provedor do modelo.
Timeout da requisição. O Crush interrompe a requisição se nenhum fragmento de resposta chegar do modelo por muito tempo: na versão 0.96.1 são dois minutos de silêncio (a documentação fala em 60 segundos, mas no código e no nosso teste são dois minutos). Os pings internos com que o gateway mantém a conexão não zeram esse contador — verificamos em um ambiente local. Já o gateway, em horários de pico, espera o primeiro token da rede por até 150 segundos, então vale aumentar a margem:
# crushrc
option request-timeout 300
# crush.json
"options": { "request_timeout": 300 }Assinaturas nos commits. Os commits e pull requests criados pelo Crush recebem, por padrão, a linha Assisted-by: Crush:<model> e o complemento «Generated with Crush». Se isso não for necessário:
# crushrc
option attribution-trailer-style none
option attribution-generated-with false
# crush.json
"options": { "attribution": { "trailer_style": "none", "generated_with": false } }Métricas. O Crush envia aos desenvolvedores estatísticas de uso pseudônimas — apenas metadados, sem prompts nem respostas. Desativa-se com a variável CRUSH_DISABLE_METRICS=1 ou DO_NOT_TRACK=1. O gateway, por sua vez, não armazena o conteúdo dos prompts nem das respostas — nas estatísticas ficam apenas agregados de consumo.
O config é código. Tanto o crushrc quanto o crush.json são executados pelo Crush com as permissões do seu shell: $(…) em um campo de chave será executado ao carregar, e o crushrc do projeto entrará em ação assim que você abrir o Crush nesse diretório. Não rode o agente em um repositório de terceiros sem antes ler os configs dele.
npx @joingonka/setup --tool crush — ou pelo bloco providers.joingonka em ~/.config/crush/crush.json: tipo openai-compat, endereço https://gate.joingonka.ai/v1, chave jg-…, modelos com valores reais de context_window e default_max_tokens. O mesmo pode ser feito com várias linhas de provider add e model add no crushrc. O slot large é atendido pelo DeepSeek V4 Flash, o small pelo MiniMax M2.7, e GLM-5.3 Flash para lógica complexa. A principal armadilha é o arquivo de estado: o modelo selecionado via ctrl+l tem prioridade sobre a configuração, por isso o instalador com um --model explícito também o altera. Para verificar: crush models joingonka e crush run; recomenda-se aumentar o timeout da requisição para 300 segundos.Quer saber mais?
Explore outras seções ou comece a ganhar GNK agora mesmo.
Obter chave e tokens gratuitos →