Sezioni dell'archivio conoscenza ▾

Navigazione

▸ Inizia qui Per ruolo

Categorie

Strumenti 52
Glossario 12

Strumenti

Goose + JoinGonka Gateway: il tuo provider e chiave nel keyring

Goose è un agente AI open source estensibile che lavora sulla tua macchina: applicazione desktop per macOS, Linux e Windows, CLI per terminale e API per l'integrazione. Legge e modifica file, avvia comandi, collega servizi esterni tramite estensioni MCP. Scritto in Rust, è distribuito sotto licenza Apache 2.0. Il progetto è nato in Block ed è ora parte dell'Agentic AI Foundation presso la Linux Foundation; il repository canonico è github.com/aaif-goose/goose, il vecchio indirizzo block/goose reindirizza lì.

Goose descrive i propri provider in modo dichiarativo: un file JSON nella directory custom_providers e nell'elenco appare un'altra fonte di modelli. JoinGonka Gateway parla in OpenAI Chat Completions, quindi si collega con un singolo comando di installazione o un singolo file. Dopodiché, l'agente lavora sui modelli della rete decentralizzata Gonka — DeepSeek V4 Flash, GLM-5.3 Flash e MiniMax M2.7 — al prezzo unico di: $0.0069 per milione di token in entrata.

Una particolarità di Goose da conoscere in anticipo: non tiene le chiavi dei provider nella configurazione, ma nel deposito segreti di sistema. Il fatto che sulla tua macchina esista tale deposito determina se dopo l'installazione rimarrà un passaggio manuale, al quale è dedicata una sezione separata. I comandi e i messaggi seguenti sono stati verificati con un'esecuzione reale di goose 1.51.0 tramite gateway il 23 settembre 2026. Dopo la conferma dell'indirizzo, arriveranno sul conto 3M di token gratuiti, sufficienti per ripetere tutto da soli.

Avvio rapido: installazione e un comando

Passo 1: installa Goose. I metodi ufficiali per la CLI dalla documentazione del progetto:

# macOS and Linux: the script puts the binary in ~/.local/bin
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash

# macOS, Homebrew
brew install block-goose-cli

La variabile CONFIGURE=false disattiva il wizard goose configure, che altrimenti lo script avvia subito dopo l'installazione: il provider lo configurerà l'installer. Se la directory ~/.local/bin non è nel PATH, lo script te lo dirà. Per Windows nello stesso repository c'è lo script download_cli.ps1, mentre l'app desktop si scarica dalla pagina della documentazione; sia l'app che la CLI leggono le stesse impostazioni, quindi tutto quanto segue vale per entrambi. Verifica con goose --version.

Passo 2: ottieni la chiave. Registrati su gate.joingonka.ai/register, conferma l'indirizzo e crea una chiave con prefisso jg- nella sezione "API-keys". Una sola chiave e un solo saldo valgono per tutti i modelli della rete.

Passo 3: avvia l'installer.

npx @joingonka/setup --tool goose

L'installer chiederà la chiave — non viene passata come argomento da riga di comando per non finire nella cronologia della shell — e farà quanto segue:

  • creerà il file del provider custom_providers/custom_joingonka.json con l'indirizzo del gateway e i tre modelli della rete con le finestre di contesto reali, con permessi 600. I nomi custom_joingonka e CUSTOM_JOINGONKA_API_KEY sono gli stessi che Goose ricava da solo dal nome "JoinGonka", quindi la chiave inserita nel wizard finirà al posto giusto;
  • imposterà JoinGonka come provider predefinito con il modello DeepSeek V4 Flash — ma solo se il provider non è ancora stato scelto oppure è stato scelto il nostro con un modello vuoto o non più disponibile sulla rete. Non toccherà la scelta altrui, ma stamperà il comando per provare: goose session --provider custom_joingonka --model …;
  • metterà la chiave in secrets.yaml, solo se l'archivio dei segreti di Goose è sicuramente basato su file; altrimenti dirà chiaramente che resta un ultimo passaggio — i dettagli sono nella sezione sulla chiave;
  • creerà copie di backup dei file modificati e alla fine invierà una richiesta reale al gateway per verificare subito chiave, indirizzo e modello.

L'installer individua la directory delle impostazioni allo stesso modo di Goose: ~/.config/goose su Linux e macOS, %APPDATA%\Block\goose\config su Windows, <root>/config quando è impostato GOOSE_PATH_ROOT. Un altro modello si specifica con il flag --model e le abbreviazioni deepseek, glm o minimax; il modello specificato esplicitamente viene sempre salvato. La modalità senza domande prende la chiave dalla variabile d'ambiente:

JOINGONKA_API_KEY=jg-your-key npx @joingonka/setup --tool goose --model glm --non-interactive

Configurazione manuale: file provider e config.yaml

Tutto ciò che fa l'installer può essere scritto manualmente. Il provider è un file JSON separato ~/.config/goose/custom_providers/custom_joingonka.json; il nome del file coincide con il campo name:

{
  "name": "custom_joingonka",
  "engine": "openai",
  "display_name": "JoinGonka",
  "description": "JoinGonka Gateway — Gonka AI inference (OpenAI-compatible)",
  "api_key_env": "CUSTOM_JOINGONKA_API_KEY",
  "base_url": "https://gate.joingonka.ai/v1/chat/completions",
  "models": [
    { "name": "deepseek-ai/DeepSeek-V4-Flash-0731", "context_limit": 380000 },
    { "name": "zai-org/GLM-5.3-Flash", "context_limit": 390000 },
    { "name": "MiniMaxAI/MiniMax-M2.7", "context_limit": 200000 }
  ],
  "supports_streaming": true,
  "requires_auth": true
}
CampoValoreCosa è importante
namecustom_joingonkaÈ sia il nome del file che il valore di --provider
engineopenaiIl formato OpenAI Chat Completions è il percorso principale del gateway. Oltre a questo, Goose conosce anthropic e ollama
api_key_envCUSTOM_JOINGONKA_API_KEYNon è la chiave, ma il nome del secret. Non c'è un campo per il valore nel file — dove Goose lo cerca è spiegato nella sezione successiva
base_urlhttps://gate.joingonka.ai/v1/chat/completionsL'indirizzo completo, come nell'esempio della documentazione di Goose: anche le vecchie build comprendono questa forma
modelstre voci con context_limitSenza context_limit, Goose prende la finestra dal suo catalogo modelli, o 128.000 token per uno sconosciuto, e comprime la cronologia quando riempie l'80% della finestra. I modelli di rete hanno finestre da 200.000 a 390.000
supports_streaming, requires_authtrueLa risposta arriva in streaming, le richieste richiedono una chiave. Non disattivare lo streaming: senza di esso e senza un limite nella richiesta, il gateway limiterà la risposta a un breve valore predefinito

Non è previsto un limite di risposta separato per la voce del modello in Goose. Per tali modelli non trasmette affatto il limite nella richiesta — abbiamo verificato ciò dal suo log delle richieste — e in modalità streaming il gateway stesso limita la risposta al limite del modello: 32.768 token per DeepSeek V4 Flash, 8.192 per GLM-5.3 Flash e MiniMax M2.7. Non è necessario impostare la variabile globale GOOSE_MAX_TOKENS per questo: è unica per tutti i provider contemporaneamente.

Goose legge il file del provider tramite un parser JSON rigoroso: un commento o una virgola finale e il provider scompare dall'elenco. Puoi crearlo anche tramite procedura guidata (goose configure → Custom Providers), ma la procedura non chiede la finestra di contesto — dovrai aggiungerla manualmente.

Il provider e il modello predefiniti vivono in ~/.config/goose/config.yaml. Ecco come li scrive Goose stesso:

active_provider: custom_joingonka
providers:
  custom_joingonka:
    enabled: true
    model: deepseek-ai/DeepSeek-V4-Flash-0731
    configured: true

Anche il vecchio layout — chiavi piatte GOOSE_PROVIDER e GOOSE_MODEL alla radice del file — funziona: Goose lo legge e lo converte automaticamente nel nuovo al primo salvataggio delle impostazioni, come abbiamo fatto noi dopo goose configure. L'installer su un file vuoto scrive proprio le chiavi piatte — ogni versione le comprende. Le variabili d'ambiente con lo stesso nome sono più importanti del file: se sono impostate nella shell, la scelta dal config.yaml non avrà effetto, e l'installer ti avviserà di questo.

Dove vive la chiave: keyring, secrets.yaml o variabile d'ambiente

Nel file del provider di Goose c'è solo il nome del secret — CUSTOM_JOINGONKA_API_KEY. Il valore viene cercato in quest'ordine: nella variabile d'ambiente con quel nome, poi nel keyring di sistema (su macOS il Keychain), infine nel file secrets.yaml accanto alla config. I secret finiscono nel file quando lo storage di Goose è di tipo file, e lì restano in chiaro, con permessi 600. In config.yaml, invece, Goose non cerca affatto le chiavi (documentazione).

Lo storage diventa di tipo file se il keyring è disattivato — tramite la variabile GOOSE_DISABLE_KEYRING con qualsiasi valore o la riga GOOSE_DISABLE_KEYRING: true in config.yaml — oppure non è disponibile: server senza sessione grafica, container, CI. Nel secondo caso Goose scrive nel log «Keyring unavailable. Using file storage for secrets.» e passa da solo al file — esattamente ciò che abbiamo visto nel container. L'installer non è in grado di scrivere nel keyring e non lo disattiverà al posto tuo: Goose smetterebbe di vedere i secret che già vi si trovano. Da qui gli scenari:

SituazioneCosa farà l'installerCosa resterà a te
Desktop con keyring: macOS, Windows, Linux con sessione graficaConfigurerà provider e modello, non scriverà la chiave e dirà «ONE STEP LEFT»Salvare la chiave una volta con il wizard
Server o container senza keyring, secrets.yaml non ancora presenteLo stesso: non si può intuire lo storage di tipo file da indizi indirettiCompletare il wizard — Goose metterà la chiave in secrets.yaml, poi l'installer la aggiornerà lì
È impostato GOOSE_DISABLE_KEYRING oppure secrets.yaml esiste giàScriverà la chiave in secrets.yaml con permessi 600, preservando gli altri secretNiente
La chiave viene emessa da un comando per il provider (campo auth)Non scriverà la chiave: in Goose auth e api_key_env si escludono a vicendaNiente

Il passo rimanente. Avvia goose configure e rispondi alle domande del wizard — ecco come apparivano nella nostra esecuzione:

  • What would you like to configure? → Configure Providers;
  • Which model provider should we use? → JoinGonka (da noi era il primo);
  • Would you like to set CUSTOM_JOINGONKA_API_KEY? (optional) → Yes, poi su Enter value for CUSTOM_JOINGONKA_API_KEY incolla la chiave — al posto dei caratteri appariranno dei quadratini. La chiave viene salvata subito;
  • Would you like to configure advanced settings? → No;
  • Select a model — Goose riceve la lista dal gateway: MiniMaxAI/MiniMax-M2.7, deepseek-ai/DeepSeek-V4-Flash-0731, zai-org/GLM-5.3-Flash. Il cursore è sulla prima riga — per mantenere il modello scelto dall'installer, seleziona con le frecce DeepSeek V4 Flash. Dopo la richiesta di verifica il wizard terminerà con la riga «Configuration saved successfully».

In Goose Desktop il percorso è questo: Settings → Models → Configure providers → JoinGonka → chiave → Submit. Se non vuoi incollare la chiave a mano, mettila in una variabile e avvia il wizard dalla stessa shell: Goose scriverà «CUSTOM_JOINGONKA_API_KEY is set via environment variable» e proporrà di salvare il valore:

read -s CUSTOM_JOINGONKA_API_KEY && export CUSTOM_JOINGONKA_API_KEY
goose configure

E per una singola esecuzione puoi passare la chiave senza salvarla affatto: CUSTOM_JOINGONKA_API_KEY=jg-your-key goose session, in PowerShell $env:CUSTOM_JOINGONKA_API_KEY = "jg-your-key"; goose session. La variabile d'ambiente ha la precedenza sul valore salvato, ma vive solo fino alla chiusura della shell.

Verifica: cosa dovrebbe succedere

Per prima cosa, vediamo quali impostazioni Goose vede davvero:

goose info -v

Nel blocco «goose Configuration» devono comparire le righe GOOSE_PROVIDER: custom_joingonka e GOOSE_MODEL con l'identificativo del modello. Poi un'esecuzione singola senza sessione interattiva: mettete in una cartella vuota un file con un bug evidente e chiedete di trovarlo.

goose run --no-session -t "Read calc.py and tell me in one sentence whether it has a bug."

Il flag --no-session non salva l'esecuzione nello storico. Nell'intestazione comparirà una riga del tipo ● new session · custom_joingonka deepseek-ai/DeepSeek-V4-Flash-0731, poi la chiamata allo strumento — ▸ shell con il comando cat calc.py — e la risposta con il bug trovato. Un altro modello per una singola esecuzione si specifica con --model: zai-org/GLM-5.3-Flash oppure MiniMaxAI/MiniMax-M2.7. Nella nostra esecuzione del 23 settembre 2026 tutti e tre i modelli della rete hanno completato il ciclo «richiesta → strumento → risultato → risposta». Il CLI di Goose nasconde di default il ragionamento dei modelli — per mostrarlo basta la variabile GOOSE_CLI_SHOW_THINKING=1, se l'output va al terminale. Lato gateway la richiesta è visibile nella dashboard: sezione «Utilizzo», suddivisa in «Per modello» e «Per chiave».

Se qualcosa va storto, la diagnosi di solito si legge direttamente dal messaggio:

Cosa si vedeCosa significaCosa fare
Error missing required key CUSTOM_JOINGONKA_API_KEY: Configuration value not foundGoose non ha trovato la chiave né nell'ambiente né nell'archivio dei segretiSalvate la chiave con il wizard. Se la chiave è in secrets.yaml e l'errore persiste, ora Goose tiene i segreti nel keyring — salvate di nuovo la chiave con il wizard
Authentication failed … Status: 401 Unauthorized. Response: Invalid API key.Il gateway non ha accettato la chiaveSalvate di nuovo la chiave — per intero, senza spazi. Ricordate che la variabile CUSTOM_JOINGONKA_API_KEY nell'ambiente ha la precedenza sul valore salvato
Error Unknown provider: custom_joingonkaIl file del provider non è stato letto: un commento, una virgola di troppo o un refuso nel JSONCorreggete il file oppure eliminalo e rieseguite l'installer: sopra un file corrotto l'installer non scrive nulla, si limita a indicarlo
Bad request (400): Model "…" not found. Available: …Refuso nel nome del modelloIl gateway elenca da sé gli identificativi disponibili — copiate quello che vi serve
Rate limit exceeded: Model "…" is currently overloaded in the Gonka network (rate limit)Nelle ore di punta la capacità disponibile del modello sulla rete è esauritaGoose ritenta da sé la richiesta, ma con pause brevi. Cambiate modello — /model nella sessione oppure --model all'avvio — o aspettate un minuto; lo stato della rete è sulla pagina di stato
402Fondi esauriti sul saldoRicaricate l'account nella sezione «Fatturazione»; la chiave resta comunque valida

Quanto costa

Un agente consuma token diversamente da una chat. Già nella configurazione standard, Goose invia al modello le descrizioni di diciotto strumenti integrati e, nella nostra esecuzione, ogni mossa comportava circa 4.600 token in ingresso prima ancora della tua domanda. Il compito “leggere il file e trovare l'errore” ha richiesto due o tre passaggi e 10-15 mila token, quasi tutti in ingresso; Goose effettua da solo un'altra breve richiesta per assegnare un nome alla sessione. Le estensioni non necessarie si disattivano in goose configure → Toggle Extensions — questo è il modo più semplice per ridurre l'input.

Tramite JoinGonka Gateway i token costano $0.0069 per milione in ingresso e $0.021 per milione in uscita — il prezzo è uguale per tutti i modelli della rete e viene prelevato in tempo reale su questa pagina.

ScenarioConsumoTramite Gateway
Attività singola: leggere file, trovare errore10-15K tokenfrazioni di centesimo
Giorno di lavoro attivo3-7M tokenalcuni centesimi
Mese di sviluppo attivo~150M tokencirca un dollaro

Le stime nella colonna di destra si basano sui prezzi di settembre 2026. Per confronto, ecco come si può pagare per i modelli in Goose:

MetodoModello di pagamentoLimiti
Abbonamento Claude, ChatGPT o Gemini tramite ACPimporto fisso al mesequote e limiti di aggiornamento lato fornitore
Chiave diretta del fornitorea consumo per token secondo listino fornitorela spesa cresce con la durata delle sessioni
JoinGonka Gatewaya consumo per token, credito prepagatospesa visibile nell'area personale; nessun abbonamento o quote mensili

Il consumo esatto e il saldo sono visibili nell'area personale, nelle sezioni “Utilizzo” e “Fatturazione”. Il motivo per cui DeepSeek V4 Flash è impostato di default — avendo il soffitto di risposta più alto della rete — è spiegato in dettaglio nella panoramica del modello.

Cosa considerare nel lavoro

Modalità di conferma. Di default Goose lavora in modalità auto — completamente autonomo: modifica ed elimina file, esegue comandi e usa le estensioni senza chiedere nulla. Sul tuo progetto va benissimo, ma su codice altrui è meglio irrigidire la modalità:

# inside a session
/mode smart_approve

# permanently, as a line in config.yaml
GOOSE_MODE: smart_approve
ModalitàCome si comporta Goose
autoAgisce senza conferme — modalità predefinita
smart_approveLascia passare da solo le azioni a basso rischio, per le altre chiede
approveChiede prima di ogni chiamata a uno strumento
chatSolo conversazione: niente strumenti, niente modifiche

È una proprietà di Goose stesso, non dipende dal provider del modello.

Cambio di modello. Dentro una sessione — il comando /model con l'identificatore, ad esempio /model zai-org/GLM-5.3-Flash; per una sola esecuzione — il flag --model di goose run e goose session; in modo permanente — goose configure oppure la riga model in config.yaml. Il provider resta invariato. GLM-5.3 Flash, che ragiona, è ottima per logiche intricate, ma il tetto della sua risposta è di 8192 token, e una parte se ne va nel ragionamento — i dettagli nella scheda del modello.

Esecuzioni senza supervisione. goose run è adatto a script e CI: il flag -q lascia nell'output solo la risposta del modello, --output-format json restituisce il risultato in formato elaborabile. I limiti --max-turns (quanti passi compie l'agente senza intervento umano) e --max-tool-repetitions (quante volte di fila si può chiamare lo stesso strumento con gli stessi argomenti) proteggono dai loop.

Privacy. Le statistiche d'uso anonime in Goose sono disattivate di default (GOOSE_TELEMETRY_ENABLED). Il gateway non conserva il contenuto dei prompt né delle risposte — nelle statistiche restano solo i dati aggregati di consumo.

Goose si collega al JoinGonka Gateway con un comando: npx @joingonka/setup --tool goose — o con un file: provider custom_joingonka in custom_providers (engine: openai, indirizzo https://gate.joingonka.ai/v1/chat/completions, modelli con context_limit reali) più provider e modello predefiniti in config.yaml. Goose non tiene la chiave nel file di configurazione, ma nel keyring o in secrets.yaml: su una macchina con keyring rimane un solo passaggio: goose configure → Configure Providers → JoinGonka → chiave, e nella scelta del modello è consigliabile lasciare DeepSeek V4 Flash. Verifica: goose run e la sezione "Utilizzo" nel pannello; il prezzo per DeepSeek V4 Flash, GLM-5.3 Flash e MiniMax M2.7 è lo stesso, quindi il modello si sceglie in base al comportamento, non al budget.

Vuoi saperne di più?

Esplora altre sezioni o inizia a guadagnare GNK subito.

Ottieni chiave e token gratuiti →