Abschnitte der Wissensbasis ▾

Navigation

▸ Hier starten Nach Rollen

Kategorien

Werkzeuge 52
Glossar 12

Tools

Goose + JoinGonka Gateway: Eigener Provider und Schlüssel im Keyring

Goose ist ein offener, erweiterbarer AI-Agent, der auf Ihrer Maschine läuft: Desktop-Anwendung für macOS, Linux und Windows, CLI für das Terminal und API zur Einbettung. Er liest und bearbeitet Dateien, führt Befehle aus und verbindet externe Dienste über MCP-Erweiterungen. Er ist in Rust geschrieben und unter der Apache 2.0-Lizenz lizenziert. Das Projekt entstand bei der Firma Block und ist nun Teil der Agentic AI Foundation bei der Linux Foundation; das kanonische Repository ist github.com/aaif-goose/goose, die alte Adresse block/goose leitet dorthin weiter.

Goose beschreibt seine Provider deklarativ: Eine JSON-Datei im Verzeichnis custom_providers — und schon erscheint eine weitere Modellquelle in der Liste. JoinGonka Gateway spricht OpenAI Chat Completions und kann daher mit einem einzigen Installationsbefehl oder einer einzigen Datei verbunden werden. Danach arbeitet der Agent mit Modellen des dezentralen Netzwerks Gonka — DeepSeek V4 Flash, GLM-5.3 Flash und MiniMax M2.7 — zum Einheitspreis: $0.0069 pro Million Input-Token.

Eine Besonderheit von Goose sollte man im Voraus kennen: Er speichert Provider-Schlüssel nicht in der Konfiguration, sondern im System-Keyring. Ob ein solcher Speicher auf Ihrem Gerät existiert, entscheidet darüber, ob nach dem Installationsprogramm noch ein manueller Schritt erforderlich ist — dem ist ein eigener Abschnitt gewidmet. Die Befehle und Nachrichten unten wurden durch einen Live-Test von goose 1.51.0 über das Gateway am 23. September 2026 verifiziert. Nach Bestätigung der Adresse werden Ihrem Konto 3M kostenlose Token gutgeschrieben — das reicht aus, um dies alles selbst zu wiederholen.

Schnellstart: Installation und ein Befehl

Schritt 1: Goose installieren. Die offiziellen Methoden für die CLI aus der Projektdokumentation:

# 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

Die Variable CONFIGURE=false deaktiviert den Assistenten goose configure, den das Skript sonst direkt nach der Installation startet: Den Anbieter richtet das Installationsprogramm ein. Wenn das Verzeichnis ~/.local/bin nicht im PATH steht, sagt das Skript das auch. Für Windows gibt es im selben Repository das Skript download_cli.ps1, und die Desktop-Anwendung lässt sich von der Dokumentationsseite herunterladen; sie und die CLI lesen dieselben Einstellungen, daher gilt alles Folgende für beide. Prüfung — goose --version.

Schritt 2: Schlüssel holen. Registrieren Sie sich unter gate.joingonka.ai/register, bestätigen Sie die Adresse und erstellen Sie im Bereich „API-Schlüssel" einen Schlüssel mit dem Präfix jg-. Ein Schlüssel und ein Guthaben gelten für alle Modelle des Netzwerks.

Schritt 3: Installationsprogramm starten.

npx @joingonka/setup --tool goose

Das Installationsprogramm fragt nach dem Schlüssel — er wird nicht in den Befehlszeilenargumenten übergeben, damit er nicht in der Shell-Historie landet — und tut Folgendes:

  • Es erstellt die Anbieterdatei custom_providers/custom_joingonka.json mit der Gateway-Adresse und drei Modellen des Netzwerks mit echten Kontextfenstern, mit Rechten 600. Die Namen custom_joingonka und CUSTOM_JOINGONKA_API_KEY sind dieselben, die Goose selbst aus dem Namen „JoinGonka" ableitet, daher landet der Schlüssel aus dem Assistenten genau dort, wo er hingehört;
  • Es macht JoinGonka zum Standardanbieter mit dem Modell DeepSeek V4 Flash — aber nur, wenn noch kein Anbieter ausgewählt ist oder unserer ausgewählt ist mit einem leeren oder aus dem Netzwerk verschwundenen Modell. Eine fremde Auswahl rührt es nicht an, sondern gibt den Befehl zum Ausprobieren aus: goose session --provider custom_joingonka --model …;
  • Es legt den Schlüssel nur dann in secrets.yaml ab, wenn der Secret-Speicher von Goose sicher dateibasiert ist; andernfalls sagt es direkt, dass noch ein Schritt bleibt — Details im Abschnitt zum Schlüssel;
  • Es erstellt Backups der geänderten Dateien und schickt am Ende eine Live-Anfrage an das Gateway, um Schlüssel, Adresse und Modell sofort zu prüfen.

Das Einstellungsverzeichnis findet das Installationsprogramm genauso wie Goose selbst: ~/.config/goose unter Linux und macOS, %APPDATA%\Block\goose\config unter Windows, <root>/config bei gesetztem GOOSE_PATH_ROOT. Ein anderes Modell gibt das Flag --model mit der Abkürzung deepseek, glm oder minimax an; ein explizit angegebenes Modell wird immer geschrieben. Der Modus ohne Rückfragen nimmt den Schlüssel aus der Umgebungsvariable:

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

Manuelle Konfiguration: Provider-Datei und config.yaml

Alles, was der Installer tut, kann manuell erledigt werden. Ein Provider ist eine separate JSON-Datei ~/.config/goose/custom_providers/custom_joingonka.json; der Dateiname muss mit dem Feld name übereinstimmen:

{
  "name": "custom_joingonka",
  "engine": "openai",
  "display_name": "JoinGonka",
  "description": "JoinGonka Gateway — Gonka AI inference (OpenAI-kompatibel)",
  "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
}
FeldWertWichtig
namecustom_joingonkaDies ist auch der Dateiname und der Wert für --provider
engineopenaiDas OpenAI Chat Completions-Format ist der Hauptpfad für das Gateway. Zusätzlich kennt Goose anthropic und ollama
api_key_envCUSTOM_JOINGONKA_API_KEYNicht der Schlüssel selbst, sondern der Name des Secrets. Ein Feld für den eigentlichen Wert gibt es in der Datei nicht — wo Goose ihn sucht, wird im nächsten Abschnitt erläutert
base_urlhttps://gate.joingonka.ai/v1/chat/completionsVollständige Adresse, wie im Beispiel der Goose-Dokumentation: Diese Form wird auch von älteren Builds verstanden
modelsdrei Einträge mit context_limitOhne context_limit nimmt Goose das Fenster aus seinem Modellkatalog; für unbekannte Modelle sind es 128.000 Token. Es komprimiert den Verlauf, wenn 80 % des Fensters erreicht sind. Die Netzwerkmodelle haben Fenster von 200.000 bis 390.000
supports_streaming, requires_authtrueDie Antwort erfolgt per Stream, Anfragen erfordern einen Schlüssel. Deaktivieren Sie das Streaming nicht: Ohne dieses und ohne ein Limit in der Anfrage würde das Gateway die Antwort auf einen kurzen Standardwert begrenzen

Ein separates Antwort-Limit ist für den Goose-Modelleintrag nicht vorgesehen. Bei solchen Modellen überträgt es das Limit überhaupt nicht in die Anfrage — wir haben dies anhand der Anfrageprotokolle überprüft — und im Streaming-Modus begrenzt das Gateway die Antwort selbst durch das Modell-Limit: 32.768 Token bei DeepSeek V4 Flash, 8.192 bei GLM-5.3 Flash und MiniMax M2.7. Die globale Variable GOOSE_MAX_TOKENS muss hierfür nicht gesetzt werden: Sie gilt für alle Provider gleichzeitig.

Goose liest die Provider-Datei mit einem strengen JSON-Parser: ein Kommentar oder ein nachgestelltes Komma führen dazu, dass der Provider aus der Liste verschwindet. Sie können ihn auch über den Wizard (goose configure → Custom Providers) erstellen, aber der Wizard fragt nicht nach dem Kontext-Fenster — dieses muss manuell hinzugefügt werden.

Provider und Standardmodell befinden sich in ~/.config/goose/config.yaml. So schreibt sie Goose selbst:

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

Das alte Layout — flache Schlüssel GOOSE_PROVIDER und GOOSE_MODEL im Stammverzeichnis der Datei — funktioniert ebenfalls: Goose liest es und konvertiert es beim ersten Speichern der Einstellungen automatisch in das neue Format, wie bei uns nach goose configure. Der Installer schreibt bei einer leeren Datei genau diese flachen Schlüssel — sie werden von jeder Version verstanden. Gleichnamige Umgebungsvariablen haben Vorrang vor der Datei: Wenn sie in der Shell gesetzt sind, hat die Auswahl aus der config.yaml keine Wirkung, und der Installer warnt davor.

Wo der Schlüssel gespeichert wird: keyring, secrets.yaml oder Umgebungsvariable

In der Provider-Datei von Goose steht nur der Name des Secrets — CUSTOM_JOINGONKA_API_KEY. Den Wert sucht Goose der Reihe nach: in der Umgebungsvariable mit diesem Namen, dann im System-Secretspeicher (Keyring, unter macOS der Keychain), dann in der Datei secrets.yaml neben der Config. In die Datei gelangen Secrets, wenn der Speicher von Goose dateibasiert ist — dort liegen sie im Klartext, mit Rechten 600. In der config.yaml sucht Goose Keys hingegen gar nicht (Dokumentation).

Dateibasiert wird der Speicher, wenn der Keyring deaktiviert ist — per Variable GOOSE_DISABLE_KEYRING mit beliebigem Wert oder der Zeile GOOSE_DISABLE_KEYRING: true in der config.yaml — oder nicht verfügbar ist: Server ohne grafische Sitzung, Container, CI. Im zweiten Fall schreibt Goose ins Log «Keyring unavailable. Using file storage for secrets.» und wechselt selbst auf die Datei — genau das haben wir im Container gesehen. In den Keyring schreiben kann der Installer nicht, und deaktivieren wird er ihn nicht für Sie: Goose würde dann Secrets nicht mehr sehen, die dort bereits liegen. Daraus ergeben sich folgende Szenarien:

SituationWas der Installer tutWas Ihnen bleibt
Desktop mit Keyring: macOS, Windows, Linux mit grafischer SitzungTrägt Provider und Modell ein, schreibt den Key nicht und meldet «ONE STEP LEFT»Den Key einmalig per Assistent speichern
Server oder Container ohne Keyring, secrets.yaml existiert noch nichtDasselbe: Anhand indirekter Hinweise lässt sich der dateibasierte Speicher nicht erratenDen Assistenten durchlaufen — Goose legt den Key selbst in secrets.yaml ab, danach aktualisiert der Installer ihn dort
GOOSE_DISABLE_KEYRING gesetzt oder secrets.yaml existiert bereitsSchreibt den Key in secrets.yaml mit Rechten 600, fremde Secrets bleiben erhaltenNichts
Den Key gibt ein Befehl vor (Feld auth)Schreibt den Key nicht: Bei Goose schließen sich auth und api_key_env gegenseitig ausNichts

Der verbleibende Schritt. Starten Sie goose configure und beantworten Sie die Fragen des Assistenten — so sahen sie in unserem Durchlauf aus:

  • What would you like to configure? → Configure Providers;
  • Which model provider should we use? → JoinGonka (bei uns stand er an erster Stelle);
  • Would you like to set CUSTOM_JOINGONKA_API_KEY? (optional) → Yes, dann bei Enter value for CUSTOM_JOINGONKA_API_KEY den Key einfügen — statt Zeichen erscheinen Kästchen. Der Key wird sofort gespeichert;
  • Would you like to configure advanced settings? → No;
  • Select a model — die Liste holt Goose vom Gateway: MiniMaxAI/MiniMax-M2.7, deepseek-ai/DeepSeek-V4-Flash-0731, zai-org/GLM-5.3-Flash. Der Cursor steht auf der ersten Zeile — um das vom Installer gewählte Modell zu behalten, wählen Sie mit den Pfeiltasten DeepSeek V4 Flash. Nach einer Testanfrage beendet der Assistent mit der Zeile «Configuration saved successfully».

In Goose Desktop führt dieser Weg dorthin: Settings → Models → Configure providers → JoinGonka → Key → Submit. Sie möchten den Key nicht von Hand einfügen? Dann legen Sie ihn in einer Variable ab und starten Sie den Assistenten aus derselben Shell: Goose meldet «CUSTOM_JOINGONKA_API_KEY is set via environment variable» und bietet an, den Wert zu speichern:

read -s CUSTOM_JOINGONKA_API_KEY && export CUSTOM_JOINGONKA_API_KEY
goose configure

Für einen einzelnen Lauf lässt sich der Key ganz ohne Speichern übergeben: CUSTOM_JOINGONKA_API_KEY=jg-your-key goose session, in PowerShell — $env:CUSTOM_JOINGONKA_API_KEY = "jg-your-key"; goose session. Die Umgebungsvariable hat Vorrang vor dem gespeicherten Wert, lebt aber nur bis zum Schließen der Shell.

Überprüfung: Was sollte passieren

Schau zuerst nach, welche Einstellungen Goose tatsächlich sieht:

goose info -v

Im Block „goose Configuration“ müssen die Zeilen GOOSE_PROVIDER: custom_joingonka und GOOSE_MODEL mit der Modell-ID stehen. Danach ein einzelner Durchlauf ohne interaktive Sitzung: Lege in ein leeres Verzeichnis eine Datei mit einem offensichtlichen Fehler und bitte darum, ihn zu finden.

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

Das Flag --no-session speichert den Durchlauf nicht im Verlauf. In der Kopfzeile erscheint eine Zeile wie ● new session · custom_joingonka deepseek-ai/DeepSeek-V4-Flash-0731, dann der Tool-Aufruf — ▸ shell mit dem Befehl cat calc.py — und die Antwort mit dem gefundenen Fehler. Ein anderes Modell für einen einzelnen Lauf legt --model fest: zai-org/GLM-5.3-Flash oder MiniMaxAI/MiniMax-M2.7. In unserem Durchlauf am 23. September 2026 haben alle drei Modelle des Netzwerks den Zyklus „Anfrage → Tool → Ergebnis → Antwort“ durchlaufen. Die Denkschritte der Modelle verbirgt die Goose-CLI standardmäßig — anzeigen lassen sie sich mit der Variable GOOSE_CLI_SHOW_THINKING=1, wenn die Ausgabe im Terminal erfolgt. Auf der Seite des Gateways ist die Anfrage im Konto sichtbar: Bereich „Nutzung“, Aufschlüsselung „Nach Modellen“ und „Nach Keys“.

Wenn etwas schiefgelaufen ist, lässt sich die Diagnose meist direkt aus der Meldung ablesen:

Was zu sehen istWas das bedeutetWas zu tun ist
Error missing required key CUSTOM_JOINGONKA_API_KEY: Configuration value not foundGoose hat den Key weder in der Umgebung noch im Secret-Speicher gefundenSpeichere den Key mit dem Assistenten. Wenn der Key in secrets.yaml liegt und der Fehler bleibt, hält Goose die Secrets jetzt im Keyring — speichere den Key mit dem Assistenten noch einmal
Authentication failed … Status: 401 Unauthorized. Response: Invalid API key.Das Gateway hat den Key nicht akzeptiertSpeichere den Key erneut — vollständig, ohne Leerzeichen. Denk daran, dass die Variable CUSTOM_JOINGONKA_API_KEY in der Umgebung Vorrang vor dem gespeicherten Wert hat
Error Unknown provider: custom_joingonkaDie Provider-Datei wurde nicht gelesen: ein Kommentar, ein hängendes Komma oder ein Tippfehler im JSONKorrigiere die Datei oder lösche sie und starte den Installer erneut: Über eine beschädigte Datei schreibt der Installer nichts, sondern nennt sie nur
Bad request (400): Model "…" not found. Available: …Tippfehler im ModellnamenDas Gateway listet die verfügbaren IDs selbst auf — kopiere die passende
Rate limit exceeded: Model "…" is currently overloaded in the Gonka network (rate limit)Bei dem Modell ist zur Stoßzeit die freie Kapazität im Netz ausgegangenGoose wiederholt die Anfrage selbst, aber mit kurzen Pausen. Wechsle das Modell — /model in der Sitzung oder --model beim Start — oder warte eine Minute; den Netzzustand findest du auf der Statusseite
402Auf dem Guthaben sind die Mittel ausgegangenLade das Konto im Bereich „Abrechnung“ auf; der Key funktioniert dabei weiterhin

Was kostet das

Ein Agent verbraucht Token anders als ein Chat. Bereits in der Standardkonfiguration sendet Goose den Modellen Beschreibungen von 18 integrierten Tools, und in unserem Testlauf enthielt jeder Durchlauf etwa 4,6 Tausend Eingabe-Token, noch bevor Ihre Frage gestellt wurde. Die Aufgabe „Datei lesen und Fehler finden“ beanspruchte zwei bis drei Durchläufe und 10-15 Tausend Token, fast alles Eingabe; eine weitere kurze Anfrage stellt Goose selbst, um einen Namen für die Sitzung zu generieren. Unnötige Erweiterungen können unter goose configure → Toggle Extensions deaktiviert werden — das ist der einfachste Weg, die Eingabe zu reduzieren.

Über das JoinGonka Gateway kosten Token $0.0069 pro Million bei der Eingabe und $0.021 pro Million bei der Ausgabe — der Preis ist für alle Modelle im Netzwerk gleich und wird auf dieser Seite aus einer Live-Quelle abgerufen.

SzenarioVerbrauchÜber Gateway
Einmalige Aufgabe: Datei lesen, Fehler finden10-15K TokenBruchteile eines Cents
Tag mit aktiver Arbeit3-7M Tokenein paar Cents
Monat mit aktiver Entwicklung~150M Tokenetwa einen Dollar

Die Schätzungen in der rechten Spalte basieren auf den Preisen vom September 2026. Zum Vergleich — wie man für Modelle in Goose bezahlen kann:

MethodeBezahlmodellEinschränkungen
Claude, ChatGPT oder Gemini Abo via ACPfester Betrag pro MonatKontingente und Limits seitens des Anbieters
Direkter Anbieter-Schlüsselpro Token nach Anbieter-PreislisteRechnung wächst mit der Sitzungslänge
JoinGonka Gatewaypro Token, Prepaid-GuthabenVerbrauch im Dashboard einsehbar; keine Abos oder monatliche Kontingente

Der genaue Verbrauch und das Guthaben sind im Dashboard in den Bereichen „Nutzung“ und „Billing“ zu finden. Warum DeepSeek V4 Flash standardmäßig eingestellt ist — mit dem höchsten Antwortlimit im Netzwerk —, wird detailliert im Modell-Review erläutert.

Was bei der Arbeit zu beachten ist

Bestätigungsmodus. Standardmäßig arbeitet Goose im Modus auto — vollständig autonom: Es bearbeitet und löscht Dateien, führt Befehle aus und nutzt Erweiterungen, ohne nachzufragen. Im eigenen Projekt ist das praktisch, bei fremdem Code sollten Sie den Modus besser verschärfen:

# inside a session
/mode smart_approve

# permanently, as a line in config.yaml
GOOSE_MODE: smart_approve
ModusVerhalten von Goose
autoHandelt ohne Bestätigungen — Standardmodus
smart_approveLässt risikoarme Aktionen automatisch durch, fragt bei den übrigen nach
approveFragt vor jedem Tool-Aufruf nach
chatRedet nur: keine Tools, keine Änderungen

Das ist eine Eigenschaft von Goose selbst und hängt nicht vom Modell-Provider ab.

Modellwechsel. Innerhalb der Session — der Befehl /model mit der ID, zum Beispiel /model zai-org/GLM-5.3-Flash; für einen einzelnen Lauf — das Flag --model bei goose run und goose session; dauerhaft — goose configure oder die Zeile model in config.yaml. Der Provider bleibt dabei derselbe. Das denkende GLM-5.3 Flash eignet sich gut für verzwickte Logik, doch die Obergrenze seiner Antwort liegt bei 8192 Tokens, und ein Teil davon geht fürs Denken drauf — Details im Modellüberblick.

Durchläufe ohne Aufsicht. goose run eignet sich für Skripte und CI: Das Flag -q lässt in der Ausgabe nur die Antwort des Modells übrig, --output-format json liefert das Ergebnis zum Auswerten. Die Begrenzer --max-turns (wie viele Züge der Agent ohne menschliches Eingreifen macht) und --max-tool-repetitions (wie oft ein Tool mit denselben Argumenten hintereinander aufgerufen werden darf) schützen vor Endlosschleifen.

Privatsphäre. Die anonyme Nutzungsstatistik ist in Goose standardmäßig ausgeschaltet (GOOSE_TELEMETRY_ENABLED). Das Gateway speichert weder den Inhalt von Prompts noch von Antworten — in der Statistik bleiben nur Verbrauchsaggregate.

Goose verbindet sich mit dem JoinGonka Gateway über einen einzigen Befehl – npx @joingonka/setup --tool goose – oder eine Datei: Anbieter custom_joingonka in custom_providers (engine: openai, Adresse https://gate.joingonka.ai/v1/chat/completions, Modelle mit echten context_limit) plus Anbieter und Standardmodell in der config.yaml. Den Schlüssel hält Goose nicht in der Konfigurationsdatei, sondern im Keyring oder in secrets.yaml: Auf einer Maschine mit Keyring bleibt nur ein Schritt – goose configure → Configure Providers → JoinGonka → Schlüssel, und bei der Modellauswahl sollte DeepSeek V4 Flash beibehalten werden. Überprüfung – goose run und der Bereich „Nutzung“ im Konto; der Preis für DeepSeek V4 Flash, GLM-5.3 Flash und MiniMax M2.7 ist identisch, daher wählt man das Modell nach Verhalten und nicht nach Budget.

Möchten Sie mehr erfahren?

Erkunden Sie andere Abschnitte oder beginnen Sie jetzt GNK zu verdienen.

Schlüssel erhalten und kostenlose Tokens sichern →