Sezioni dell'archivio conoscenza ▾
Navigazione
▸ Inizia qui Per ruoloCategorie
- Cursor + Gonka AI — LLM economico per la codifica
- Claude Code + Gonka AI — LLM per terminale
- OpenClaw + Gonka AI — agenti AI accessibili
- OpenCode: il tuo modello nel terminale
- Continue.dev + Gonka AI — AI per VS Code/JetBrains
- Cline + Gonka AI — Agente AI in VS Code
- Aider + Gonka AI — Programmazione a coppie con AI
- LangChain + Gonka AI — Applicazioni AI a un costo minimo
- n8n + Gonka AI — automazione con AI economica
- Open WebUI + Gonka AI — il tuo ChatGPT
- LibreChat + Gonka AI — ChatGPT open-source
- Hermes Agent + DeepSeek sulla rete Gonka — agente autonomo a costi irrisori
- Kilo Code + Gonka AI — agente AI in VS Code
- Roo Code + Gonka AI — agente AI autonomo in VS Code
- LlamaIndex + Gonka AI — Applicazioni RAG a basso costo
- PydanticAI + Gonka — Agenti AI tipizzati a basso costo
- Vercel AI SDK + Gonka AI — Applicazioni AI in TypeScript a basso costo
- TanStack AI + Gonka — Applicazioni AI in TypeScript a basso costo
- Avvio rapido API — curl, Python, TypeScript
- JoinGonka Gateway — panoramica completa
- Management Keys — SaaS su Gonka
- L'API AI più economica: confronto tra i fornitori 2026
- Come acquistare token AI e chiavi API: 3 metodi nel 2026
- Limite di richieste Cursor Pro raggiunto — analisi e alternativa economica
- Claude Code costa meno — analisi del conto e switch
- Cline brucia soldi — perché l'agente consuma così tanto
- OpenClaw costa caro: perché l'agente brucia token e come risparmiare
- OpenRouter: un'alternativa economica — confronto con JoinGonka Gateway
- Il miglior modello AI per il coding nel 2026: confronto e prezzi
- Alternativa economica a GitHub Copilot senza limiti
- Alternativa economica a Windsurf senza crediti e limiti
- L'API più economica per AI-agent nel 2026
- ZCode: inferenza GLM economica al posto del GLM Coding Plan
- JetBrains IDE + JoinGonka Gateway — il tuo endpoint invece dei crediti
- GitHub Copilot BYOK — i tuoi modelli invece della quota
- Zed + JoinGonka Gateway — inferenza economica nell'editor
- Pi + JoinGonka Gateway — agente terminale con inferenza economica
- Codex CLI: la tua chiave invece dell'abbonamento
- DeepSeek Harness: il tuo provider tramite JoinGonka Gateway
- MiniMax Code: agente MiniMax con la tua chiave via Gonka
- Warp + JoinGonka Gateway — agent terminal sul proprio endpoint
- Trae + JoinGonka Gateway — modelli della rete Gonka in AI-IDE
- Cherry Studio + JoinGonka Gateway — AI client desktop
- omp (Oh My Pi) + JoinGonka Gateway: agente con ruoli dei modelli
- OpenHands + JoinGonka Gateway: agente sul proprio endpoint
- Qwen Code dopo la chiusura di qwen-oauth: utilizzo tramite JoinGonka Gateway
- Goose + JoinGonka Gateway: il tuo provider e chiave nel keyring
- Crush + JoinGonka Gateway: agente Charm sui modelli della rete Gonka
- Zoo Code + JoinGonka Gateway: migrazione da Roo Code ai modelli Gonka
- Kimi Code CLI: agente Moonshot AI con la propria chiave tramite Gonka
- Factory Droid + JoinGonka Gateway: BYOK sui modelli di rete Gonka
- MiMo Code + JoinGonka Gateway: agente Xiaomi sui modelli di rete Gonka
Strumenti
Crush + JoinGonka Gateway: agente Charm sui modelli della rete Gonka
Crush è un agente di coding da terminale realizzato da Charm, il team le cui librerie per interfacce console sono alla base di decine di migliaia di programmi. Legge e modifica file di progetto, esegue comandi, acquisisce contesto dai Language Server (LSP), collega strumenti esterni tramite MCP ed è in grado di cambiare modello durante la sessione senza perdere il contesto. Funziona su terminali macOS, Linux e Windows, oltre che su Android e BSD; licenza: FSL-1.1-MIT. La genealogia del progetto è degna di nota: il repository di archivio opencode-ai/opencode rimanda direttamente a Crush: il progetto è stato proseguito dal suo autore originale e dal team di Charm.
Crush accetta provider di terze parti di due tipi: con API compatibili OpenAI e Anthropic. Il JoinGonka Gateway si collega come openai-compat: con un comando di installazione o una decina di righe di configurazione. Dopodiché, l'agente lavora sui modelli della rete decentralizzata Gonka — DeepSeek V4 Flash, GLM-5.3 Flash e MiniMax M2.7 — a un prezzo unico: $0.0069 per un milione di token in ingresso.
Due particolarità di Crush da conoscere prima della prima sessione: organizza i modelli in due slot, large e small, e il modello scelto nell'interfaccia viene salvato in un file di stato separato che ha la precedenza sulla configurazione. A questo è dedicata una sezione a parte. I comandi e i messaggi qui sotto sono stati verificati con un'esecuzione reale di Crush 0.96.1 tramite gateway il 23 settembre 2026. Dopo la conferma dell'indirizzo, riceverai sul tuo account 3M di token gratuiti: basteranno per replicare tutto questo autonomamente.
Avvio rapido: installazione e comando singolo
Passo 1: installare Crush. I metodi ufficiali dal README del progetto:
# 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@latestNello stesso README sono descritti i repository dei pacchetti per Debian, Ubuntu, Fedora e RHEL, Nix e Scoop, mentre nella pagina delle release si trovano i binari già pronti. Per verificare: crush --version, che risponderà con una stringa del tipo crush version v0.96.1.
Passo 2: ottenere una chiave. Registrati su gate.joingonka.ai/register, conferma l'indirizzo e crea una chiave con il prefisso jg- nella sezione «Chiavi API». Una sola chiave e un solo saldo valgono per tutti i modelli della rete.
Passo 3: avviare l'installer.
npx @joingonka/setup --tool crushL'installer chiederà la chiave — non va passata come argomento della riga di comando, per non lasciarla nella cronologia della shell — e farà quattro cose:
- scriverà il provider
joingonkain~/.config/crush/crush.json: tipoopenai-compat, indirizzo del gateway, chiave in chiaro e tre modelli della rete con finestre di contesto, limiti di risposta e prezzi per milione di token, che al momento dell'installazione preleva live dal gateway — su questi Crush calcola il costo della sessione. Il file riceverà i permessi600; - assegnerà i modelli: nello slot large DeepSeek V4 Flash, nello small MiniMax M2.7, mentre GLM-5.3 Flash resterà nella lista per la selezione manuale. Lo fa solo se lo slot large è vuoto o punta a un nostro modello uscito dalla rete; una scelta diversa viene rispettata, con un suggerimento nell'output su come cambiare;
- verificherà che la scelta abbia effetto: il modello selezionato dall'interfaccia di Crush viene conservato in un file di stato che ha la precedenza sulla configurazione — è l'argomento della sezione su large e small;
- creerà un backup, lascerà invariati gli altri provider e le altre impostazioni e terminerà con una richiesta live al gateway, per verificare subito chiave, indirizzo e modello.
Un altro modello si specifica con il flag --model e le abbreviazioni deepseek, glm o minimax; il modello indicato esplicitamente viene sempre scritto. Le directory non standard sono gestite dall'installer come fa Crush stesso: CRUSH_GLOBAL_CONFIG per la configurazione, CRUSH_GLOBAL_DATA per il file di stato, oltre a XDG_CONFIG_HOME e XDG_DATA_HOME. Per server e script c'è la modalità senza domande, in cui la chiave viene presa da una variabile d'ambiente:
JOINGONKA_API_KEY=jg-your-key npx @joingonka/setup --tool crush --model glm --non-interactiveIl formato principale di Crush è ormai crushrc, ma l'installer scrive crush.json: tutte le versioni lo comprendono. Se hai già un crushrc, Crush unirà i due file, in caso di chiavi in conflitto vincerà crushrc, che l'installer non tocca.
Configurazione manuale: crush.json o crushrc
Tutto ciò che fa l'installer si può scrivere a mano. Ecco un ~/.config/crush/crush.json funzionante — questo file l'abbiamo fatto passare attraverso il 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 | Valore | Da sapere |
|---|---|---|
type | openai-compat | Tipo per servizi di terze parti con API compatibile OpenAI. Il tipo openai la documentazione di Crush lo riserva alle richieste fatte attraverso OpenAI stessa |
base_url | https://gate.joingonka.ai/v1 | Con /v1 in fondo: il percorso /chat/completions lo aggiunge Crush da sé |
api_key | la tua chiave jg-… | Crush fa passare il valore attraverso la sostituzione della shell, quindi al posto della chiave puoi scrivere $JOINGONKA_API_KEY — in quel caso la variabile deve essere esportata nel contesto da cui si avvia Crush |
context_window | finestra del modello | Su questa base Crush mostra quanto contesto è occupato e decide quando comprimere la cronologia |
default_max_tokens | tetto della risposta | Viene inviato in ogni richiesta come max_tokens. Nei modelli che ragionano, in questo budget rientra anche il ragionamento |
Crush accetta solo JSON rigoroso: un commento o una virgola pendente — e non parte. I campi di prezzo (cost_per_1m_in, cost_per_1m_out e i due campi per la cache) servono solo al contatore dei costi: l'installer vi inserisce il prezzo live del gateway, ma anche senza di essi Crush funziona e mostra zero — solo l'editor con lo schema da $schema li segnalerà come obbligatori.
Lo stesso provider nel formato crushrc — è normale Bash con i comandi integrati di Crush. Il file ~/.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.7Qui il modello si indica nella forma provider/model-id: prima della prima barra c'è il nome del provider, dopo c'è l'identificatore della rete così com'è. La forma ${JOINGONKA_API_KEY:?…} tiene la chiave fuori dal file, ma senza la variabile esportata Crush non parte — meglio un errore all'avvio che richieste con la chiave vuota.
Modelli large e small e file di stato
In Crush, il modello non viene selezionato come unico per tutto, ma per due slot:
| Slot | Cosa viene eseguito | Cosa imposta l'installer | Come cambiare |
|---|---|---|---|
large | Agente principale: tutte le operazioni che richiedono lettura, modifica di file e comandi | DeepSeek V4 Flash: finestra 380K e il soffitto di risposta più ampio della rete, 32768 | ctrl+l nell'interfaccia, -m per crush run, models.large nel file di configurazione |
small | Compiti ausiliari: titolo della sessione e sotto-agente che effettua ricerche in rete e legge pagine web. Se il modello piccolo non riesce a definire il titolo, Crush ripete la richiesta al modello grande | MiniMax M2.7: ha la capacità maggiore nella rete | --small-model per crush run, models.small nel file di configurazione, model small in crushrc |
Il terzo modello di rete, il modello di ragionamento GLM-5.3 Flash, viene scelto per logiche complesse, ricordando che il limite di risposta è 8192 e una parte di esso viene dedicata al ragionamento — i dettagli sono disponibili nella panoramica del modello. Per ogni esecuzione, il modello viene specificato con il nome completo: crush run -m joingonka/zai-org/GLM-5.3-Flash "…". Tutti i nomi disponibili vengono elencati con crush models joingonka.
File di stato. Il modello scelto nell'interfaccia tramite ctrl+l non viene salvato da Crush in crush.json, ma in un file di stato della macchina: ~/.local/share/crush/crush.json, su Windows — %LOCALAPPDATA%\crush\crush.json. Questo file ha la priorità sia sulla configurazione utente che su crushrc: Crush li legge nell'ordine /etc/crush/crush.json → ~/.config/crush/crush.json → ~/.config/crush/crushrc → file di stato, e ogni file successivo sovrascrive il precedente. Sopra di essi ci sono solo le impostazioni del progetto — crush.json o crushrc nella relativa cartella. Dove si trovano i file sulla tua macchina viene mostrato da crush dirs.
Nel nostro test abbiamo aperto la selezione dei modelli — il provider «JoinGonka (Gonka)» è presente con l'etichetta «✓ Configured» — e abbiamo scelto MiniMax M2.7. Crush ha risposto «Large model changed to MiniMax M2.7 (Gonka)» e ha scritto nel file di stato:
{"models":{"large":{"model":"MiniMaxAI/MiniMax-M2.7","provider":"joingonka","max_tokens":8192}}, …}Ora questo modello ha la precedenza su quanto scritto in crush.json. L'installer riconosce questa situazione e si comporta in modo diverso:
- senza
--modelnon tocca il file di stato — è la tua scelta di lavoro — ma avverte chiaramente con quale modello Crush verrà effettivamente avviato:Heads-up: Crush will still start with joingonka/MiniMaxAI/MiniMax-M2.7, not joingonka/deepseek-ai/DeepSeek-V4-Flash-0731. Farà lo stesso se nell'interfaccia è selezionato GLM-5.3 Flash o un modello di un altro provider; - con
--modelesplicito modifica nel file di stato esattamente una voce —models.large— dopo aver salvato una copia, indicando cosa è cambiato. Altrimenti il flag non avrebbe avuto effetto. Dopo tale esecuzione, nel nostro test, Crush si è aperto con il modello specificato nel flag.
Verifica: cosa dovrebbe accadere
Per prima cosa, verifica che Crush veda il provider:
crush models joingonkaLa risposta sono tre righe:
joingonka/MiniMaxAI/MiniMax-M2.7
joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
joingonka/zai-org/GLM-5.3-FlashPoi fai un'esecuzione singola senza interfaccia. Metti nella directory del progetto un file con un bug evidente e chiedi di trovarlo:
crush run -q "Read calc.py and tell me in one sentence whether it has a bug."L'agente deve chiamare da solo lo strumento di lettura del file e rispondere nel merito, indicando il numero di riga. Nella nostra prova, tutti e tre i modelli della rete hanno trovato il bug; il task ha richiesto 20-40 secondi. Il flag -q nasconde l'indicatore di attesa. In modalità crush run tutte le chiamate agli strumenti vengono approvate automaticamente, quindi avvialo nel tuo progetto. Nell'interfaccia normale (comando crush) il modello attivo è visibile nella barra di stato: ◇ DeepSeek V4 Flash (Gonka) via JoinGonka (Gonka). Crush conserva sessioni e log nella directory .crush del progetto, esclusa da git tramite un proprio .gitignore; i log si stampano con crush logs. Lato gateway, la richiesta è visibile nella dashboard: sezione «Utilizzo», ripartizione «Per modelli» e «Per chiavi».
Se qualcosa è andato storto, la diagnosi di solito si legge direttamente dal messaggio:
| Cosa si vede | Cosa significa | Cosa fare |
|---|---|---|
unauthorized: Invalid API key. | Il gateway non ha accettato la chiave | Controlla api_key: la chiave per intero, senza spazi. Se contiene un riferimento a una variabile, questa deve essere esportata in questa shell |
invalid JSON in config file …/crush.json | Nel file c'è un commento, una virgola pendente o un refuso | Crush accetta solo JSON rigoroso: correggi il file. L'installer non rimuove i commenti da solo, ma li segnala; un file che non si riesce proprio a interpretare non lo tocca e ne indica la causa |
failed to load shell config …/crushrc: … exit status 1 | Errore in crushrc, il più delle volte una variabile con la chiave in forma ${…:?} non è stata impostata | Esporta la variabile prima dell'avvio o correggi la riga su cui lo script si blocca |
Failed to override models: large model "…" not found | Refuso nel nome del modello con il flag -m | Copia il nome dall'output di crush models joingonka |
too many requests: Model "…" is currently overloaded in the Gonka network (rate limit) | Il modello nelle ore di punta ha esaurito la capacità disponibile in rete | Crush ripete da solo la richiesta con pause crescenti — nella nostra prova circa un minuto — e solo dopo si arrende. Passa a un altro modello con ctrl+l o -m, oppure aspetta; lo stato è visibile sulla pagina di stato |
| Crush si è aperto con un modello diverso da quello comunicato dall'installer | La selezione dall'interfaccia risiede nel file di stato e sovrascrive la config | Scegli il modello con ctrl+l o ripeti l'installazione con --model |
402 | Il saldo è esaurito | Ricarica il conto nella sezione «Fatturazione»; la chiave resta valida |
Quanto costa
Un agente consuma token diversamente da una chat: ad ogni tua frase Crush aggiunge il prompt di sistema e le descrizioni dei suoi strumenti, e un task richiede solitamente più passaggi. Nel nostro test, ogni richiesta al modello contava circa 11,5 mila token in entrata, e il task "leggere un file e trovare l'errore" ha richiesto due o tre richieste e 23-35 mila token, quasi tutti in entrata. Per questo motivo, il prezzo per token è determinante.
Tramite il JoinGonka Gateway, i token costano $0.0069 per milione in entrata e $0.021 per milione in uscita; il prezzo è uguale per tutti i modelli della rete e viene inserito in questa pagina da una fonte live.
| Scenario | Consumo | Tramite Gateway |
|---|---|---|
| Task una tantum: leggere un file, trovare un errore | 23-35K token | frazioni di centesimo |
| Una giornata di lavoro intenso | 3-7M token | pochi centesimi |
| Un mese di sviluppo intenso | ~150M token | circa un dollaro |
Le stime nella colonna di destra sono basate sui prezzi di settembre 2026. Per confronto, ecco come è possibile pagare i modelli in Crush:
| Metodo | Modello di pagamento | Cosa limita |
|---|---|---|
| Hyper — provider ufficiale di Charm | abbonamento, livello gratuito disponibile | termini tariffari lato Charm |
| Chiave del vendor direttamente | per token secondo il listino del vendor | il conto cresce con la durata delle sessioni; il prezzo dipende dal modello |
| JoinGonka Gateway | per token, saldo prepagato | il consumo è visibile nell'area riservata; non ci sono abbonamenti o quote mensili |
Il contatore dei costi nell'interfaccia Crush calcola in base ai campi prezzo della configurazione. Lì viene inserito il prezzo del gateway al momento dell'installazione, mentre il prezzo in dollari nella rete fluttua insieme al corso di GNK, quindi il contatore è solo indicativo. Il consumo esatto e il saldo residuo si trovano nell'area riservata, nelle sezioni "Utilizzo" e "Billing". Il motivo per cui nello slot large viene impostato di default DeepSeek V4 Flash è spiegato in dettaglio nella panoramica del modello.
Cosa considerare nel lavoro
Permessi. Nell'interfaccia Crush chiede di default il permesso prima di richiamare uno strumento. Il flag --yolo disattiva tutte le domande in una volta, mentre gli strumenti considerati affidabili in modo mirato vengono elencati nel config:
# crushrc
permissions allow view ls grep
# crush.json
"permissions": { "allowed_tools": ["view", "ls", "grep"] }Ricordiamo che crush run approva tutto da solo. È una proprietà di Crush, non dipende dal provider del modello.
Timeout della richiesta. Crush interrompe la richiesta se dal modello non arriva nessun frammento di risposta per molto tempo: nella versione 0.96.1 sono due minuti di silenzio (la documentazione indica 60 secondi, ma nel codice e nella nostra verifica sono due minuti). I ping di servizio con cui il gateway mantiene la connessione non azzerano questo contatore — l'abbiamo verificato su uno stand locale. Il gateway, nelle ore di carico, attende il primo token dalla rete fino a 150 secondi, quindi conviene aumentare il margine:
# crushrc
option request-timeout 300
# crush.json
"options": { "request_timeout": 300 }Firme nei commit. I commit e le pull request creati da Crush ricevono di default la riga Assisted-by: Crush:<model> e l'aggiunta «Generated with Crush». Se non serve:
# crushrc
option attribution-trailer-style none
option attribution-generated-with false
# crush.json
"options": { "attribution": { "trailer_style": "none", "generated_with": false } }Metriche. Crush invia agli sviluppatori statistiche d'uso pseudonimizzate — solo metadati, senza prompt e risposte. Si disattiva con la variabile CRUSH_DISABLE_METRICS=1 o DO_NOT_TRACK=1. Il gateway, da parte sua, non conserva il contenuto dei prompt e delle risposte — nelle statistiche restano solo gli aggregati di consumo.
Il config è codice. Sia crushrc che crush.json vengono eseguiti da Crush con i permessi della vostra shell: $(…) nel campo della chiave verrà eseguito al caricamento, e il crushrc di progetto si attiverà non appena aprirete Crush in quella directory. Non avviate l'agente in un repository altrui senza averne letto i config.
npx @joingonka/setup --tool crush — oppure tramite il blocco providers.joingonka in ~/.config/crush/crush.json: tipo openai-compat, indirizzo https://gate.joingonka.ai/v1, chiave jg-…, modelli con context_window e default_max_tokens corretti. La stessa configurazione può essere scritta su più righe provider add e model add in crushrc. Lo slot large è affidato a DeepSeek V4 Flash, quello small a MiniMax M2.7, GLM-5.3 Flash per la logica complessa. La trappola principale è il file di stato: il modello selezionato con ctrl+l ha la priorità sulla configurazione, quindi il programma di installazione con un --model esplicito modifica anche quello. Verifica con crush models joingonka e crush run; è consigliabile aumentare il timeout della richiesta a 300 secondi.Vuoi saperne di più?
Esplora altre sezioni o inizia a guadagnare GNK subito.
Ottieni chiave e token gratuiti →