Secciones de la base de conocimientos ▾

Navegación

▸ Empiece aquí Por roles

Categorías

Herramientas 52
Glosario 12

Herramientas

Goose + JoinGonka Gateway: su propio proveedor y clave en keyring

Goose es un agente de IA abierto y extensible que funciona en su máquina: aplicación de escritorio para macOS, Linux y Windows, CLI para terminal y API para integración. Lee y edita archivos, ejecuta comandos y conecta servicios externos mediante extensiones MCP. Escrito en Rust y distribuido bajo la licencia Apache 2.0. El proyecto nació en la empresa Block y ahora forma parte de la Agentic AI Foundation dentro de la Linux Foundation; el repositorio canónico es github.com/aaif-goose/goose, la antigua dirección block/goose redirige allí.

Goose describe a sus proveedores de forma declarativa: un archivo JSON en el directorio custom_providers y aparece otra fuente de modelos en la lista. JoinGonka Gateway habla mediante OpenAI Chat Completions, por lo que se conecta con un solo comando de instalación o un solo archivo. Después de esto, el agente funciona con los modelos de la red descentralizada Gonka — DeepSeek V4 Flash, GLM-5.3 Flash y MiniMax M2.7 — a un precio único: $0.0069 por millón de tokens de entrada.

Es mejor conocer una peculiaridad de Goose de antemano: no guarda las claves de los proveedores en la configuración, sino en el almacenamiento de secretos del sistema. De si existe o no dicho almacenamiento en su máquina depende si queda un paso manual después del instalador, al cual se dedica una sección separada. Los comandos y mensajes a continuación han sido verificados mediante una ejecución en vivo de goose 1.51.0 a través de la pasarela el 23 de septiembre de 2026. Tras confirmar su dirección, recibirá 3M de tokens gratuitos en su cuenta, suficientes para repetir todo esto usted mismo.

Inicio rápido: instalación y un solo comando

Paso 1: instalar Goose. Los métodos oficiales para la CLI según la documentación del proyecto:

# 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 variable CONFIGURE=false desactiva el asistente goose configure, que si no el script lanza justo después de la instalación: el proveedor lo configurará el instalador. Si el directorio ~/.local/bin no está en el PATH, el script te lo dirá. Para Windows hay un script download_cli.ps1 en el mismo repositorio, y la aplicación de escritorio se descarga desde la página de documentación; tanto ella como la CLI leen la misma configuración, así que todo lo de abajo vale para ambas. Para comprobar: goose --version.

Paso 2: obtener la clave. Regístrate en gate.joingonka.ai/register, confirma tu dirección y crea una clave con el prefijo jg- en la sección «API keys». Una sola clave y un solo saldo sirven para todos los modelos de la red.

Paso 3: ejecutar el instalador.

npx @joingonka/setup --tool goose

El instalador te pedirá la clave —no se pasa como argumento en la línea de comandos, para que no quede en el historial del shell— y hará lo siguiente:

  • creará el archivo de proveedor custom_providers/custom_joingonka.json con la dirección del gateway y tres modelos de la red con sus ventanas de contexto reales, con permisos 600. Los nombres custom_joingonka y CUSTOM_JOINGONKA_API_KEY son los mismos que Goose deriva por su cuenta del nombre «JoinGonka», así que la clave del asistente irá a parar donde debe;
  • hará de JoinGonka el proveedor predeterminado con el modelo DeepSeek V4 Flash, pero solo si aún no hay proveedor elegido o si el elegido es el nuestro con un modelo vacío o que ya no está en la red. No toca la elección ajena, sino que imprime el comando para probarlo: goose session --provider custom_joingonka --model …;
  • guardará la clave en secrets.yaml, solo si el almacén de secretos de Goose es con certeza de tipo archivo; si no, te dirá directamente que queda un paso, con los detalles en la sección sobre la clave;
  • hará copias de seguridad de los archivos modificados y al final enviará una petición real al gateway para comprobar de inmediato la clave, la dirección y el modelo.

El instalador localiza el directorio de configuración igual que el propio Goose: ~/.config/goose en Linux y macOS, %APPDATA%\Block\goose\config en Windows, <root>/config cuando se define GOOSE_PATH_ROOT. Otro modelo se especifica con el flag --model con la abreviatura deepseek, glm o minimax; un modelo indicado explícitamente siempre se escribe. El modo sin preguntas toma la clave de una variable de entorno:

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

Configuración manual: archivo de proveedor y config.yaml

Todo lo que hace el instalador se puede escribir manualmente. El proveedor es un archivo JSON independiente ~/.config/goose/custom_providers/custom_joingonka.json; el nombre del archivo coincide con el 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
}
CampoValorQué es importante
namecustom_joingonkaEs el nombre del archivo y el valor de --provider
engineopenaiEl formato OpenAI Chat Completions es la ruta principal de la puerta de enlace (gateway). Además de este, Goose reconoce anthropic y ollama
api_key_envCUSTOM_JOINGONKA_API_KEYNo es la clave, sino el nombre del secreto. No hay campos para el valor en sí en el archivo; dónde lo busca Goose se analiza en la siguiente sección
base_urlhttps://gate.joingonka.ai/v1/chat/completionsDirección completa, como en el ejemplo de la documentación de Goose: esta forma también es entendida por compilaciones antiguas
modelstres entradas con context_limitSin context_limit, Goose toma la ventana de su catálogo de modelos, y para uno desconocido — 128 000 tokens, comprimiendo el historial cuando llena el 80% de la ventana. Los modelos de red tienen ventanas de 200 000 a 390 000
supports_streaming, requires_authtrueLa respuesta llega por streaming, las solicitudes requieren una clave. No desactive el streaming: sin él y sin un límite en la solicitud, el gateway limitará la respuesta a un valor predeterminado corto

No existe un límite de respuesta independiente para la entrada de un modelo de Goose. Para tales modelos, no transmite el límite en la solicitud —lo verificamos a través de su registro de solicitudes— y en modo de streaming, el gateway limita la respuesta según el límite del modelo: 32 768 tokens para DeepSeek V4 Flash, 8192 para GLM-5.3 Flash y MiniMax M2.7. No es necesario establecer la variable global GOOSE_MAX_TOKENS para esto: es única para todos los proveedores a la vez.

Goose lee el archivo del proveedor mediante un análisis JSON estricto: un comentario o una coma colgante y el proveedor desaparece de la lista. También se puede crear mediante el asistente (goose configure → Custom Providers), pero el asistente no pregunta por la ventana de contexto, por lo que deberá añadirse manualmente.

El proveedor y el modelo predeterminados viven en ~/.config/goose/config.yaml. Así es como el propio Goose los escribe:

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

El diseño antiguo —claves planas GOOSE_PROVIDER y GOOSE_MODEL en la raíz del archivo— también funciona: Goose lo lee y lo traduce al nuevo formato la primera vez que guarda la configuración, como hicimos después de goose configure. El instalador escribe exactamente las claves planas en un archivo vacío; cualquier versión las entiende. Las variables de entorno con el mismo nombre tienen prioridad sobre el archivo: si están definidas en la shell, la selección de config.yaml no tendrá efecto, y el instalador emitirá una advertencia al respecto.

Dónde vive la clave: keyring, secrets.yaml o variable de entorno

En el archivo del proveedor de Goose solo existe el nombre del secreto: CUSTOM_JOINGONKA_API_KEY. Su valor lo busca en orden: en la variable de entorno con ese nombre, luego en el almacén de secretos del sistema (keyring; en macOS, Keychain) y después en el archivo secrets.yaml junto a la configuración. Los secretos llegan a ese archivo cuando el almacén de Goose es de tipo archivo, y allí quedan en texto plano, con permisos 600. En config.yaml, en cambio, Goose no busca claves en absoluto (documentación).

El almacén pasa a ser de archivo si el keyring está desactivado —con la variable GOOSE_DISABLE_KEYRING con cualquier valor o la línea GOOSE_DISABLE_KEYRING: true en config.yaml— o si no está disponible: un servidor sin sesión gráfica, un contenedor, CI. En el segundo caso Goose escribe en el registro «Keyring unavailable. Using file storage for secrets.» y pasa por sí solo al archivo: exactamente lo que vimos en el contenedor. El instalador no sabe escribir en el keyring, y tampoco lo va a desactivar por ti: Goose dejaría de ver los secretos que ya están allí. De ahí estos escenarios:

SituaciónQué hará el instaladorQué te queda por hacer
Escritorio con keyring: macOS, Windows, Linux con sesión gráficaConfigurará el proveedor y el modelo, no escribirá la clave y dirá «ONE STEP LEFT»Guardar la clave una vez con el asistente
Servidor o contenedor sin keyring, aún no existe secrets.yamlLo mismo: por indicios indirectos no se puede adivinar que el almacén es de archivoPasar por el asistente: Goose mismo pondrá la clave en secrets.yaml y a partir de ahí el instalador la actualizará allí
Está definida GOOSE_DISABLE_KEYRING o ya existe secrets.yamlEscribirá la clave en secrets.yaml con permisos 600 y conservará los secretos ajenosNada
La clave la entrega un comando al proveedor (campo auth)No escribirá la clave: en Goose auth y api_key_env son mutuamente excluyentesNada

El paso que queda. Ejecuta goose configure y responde a las preguntas del asistente, que en nuestra ejecución fueron así:

  • What would you like to configure? → Configure Providers;
  • Which model provider should we use? → JoinGonka (en nuestro caso aparecía primero);
  • Would you like to set CUSTOM_JOINGONKA_API_KEY? (optional) → Yes, y luego en Enter value for CUSTOM_JOINGONKA_API_KEY pega la clave: en lugar de los caracteres aparecerán cuadraditos. La clave se guarda de inmediato;
  • Would you like to configure advanced settings? → No;
  • Select a model: Goose obtiene la lista de la puerta de enlace: MiniMaxAI/MiniMax-M2.7, deepseek-ai/DeepSeek-V4-Flash-0731, zai-org/GLM-5.3-Flash. El cursor está en la primera línea; para conservar el modelo elegido por el instalador, selecciona con las flechas DeepSeek V4 Flash. Tras una petición de comprobación, el asistente terminará con la línea «Configuration saved successfully».

En Goose Desktop la ruta es: Settings → Models → Configure providers → JoinGonka → clave → Submit. Si no quieres pegar la clave a mano, ponla en una variable y lanza el asistente desde la misma shell: Goose mostrará «CUSTOM_JOINGONKA_API_KEY is set via environment variable» y propondrá guardar el valor:

read -s CUSTOM_JOINGONKA_API_KEY && export CUSTOM_JOINGONKA_API_KEY
goose configure

Y para una sola ejecución puedes pasar la clave sin guardarla siquiera: CUSTOM_JOINGONKA_API_KEY=jg-your-key goose session; en PowerShell, $env:CUSTOM_JOINGONKA_API_KEY = "jg-your-key"; goose session. La variable de entorno tiene prioridad sobre el valor guardado, pero solo vive hasta que se cierra la shell.

Verificación: qué debería suceder

Primero, mira qué configuración ve Goose realmente:

goose info -v

En el bloque «goose Configuration» deben aparecer las líneas GOOSE_PROVIDER: custom_joingonka y GOOSE_MODEL con el identificador del modelo. Después, una ejecución puntual sin sesión interactiva: coloca en un directorio vacío un archivo con un error evidente y pídele que lo encuentre.

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

El flag --no-session no guarda la ejecución en el historial. En la cabecera aparecerá una línea como ● new session · custom_joingonka deepseek-ai/DeepSeek-V4-Flash-0731, luego la llamada a la herramienta — ▸ shell con el comando cat calc.py — y la respuesta con el error encontrado. Otra modelo para una sola ejecución se define con --model: zai-org/GLM-5.3-Flash o MiniMaxAI/MiniMax-M2.7. En nuestra prueba del 23 de septiembre de 2026, los tres modelos de la red completaron el ciclo «petición → herramienta → resultado → respuesta». Por defecto, el CLI de Goose oculta el razonamiento de los modelos; puedes mostrarlo con la variable GOOSE_CLI_SHOW_THINKING=1 si la salida va a la terminal. Desde el lado de la pasarela, la petición es visible en el panel: sección «Uso», desglose «Por modelos» y «Por claves».

Si algo sale mal, el diagnóstico normalmente se lee directamente en el mensaje:

Qué vesQué significaQué hacer
Error missing required key CUSTOM_JOINGONKA_API_KEY: Configuration value not foundGoose no encontró la clave ni en el entorno ni en el almacén de secretosGuarda la clave con el asistente. Si la clave está en secrets.yaml y el error persiste, Goose ahora guarda los secretos en el keyring: vuelve a guardar la clave con el asistente
Authentication failed … Status: 401 Unauthorized. Response: Invalid API key.La pasarela no aceptó la claveVuelve a guardar la clave, completa y sin espacios. Recuerda que la variable CUSTOM_JOINGONKA_API_KEY en el entorno tiene prioridad sobre el valor guardado
Error Unknown provider: custom_joingonkaEl archivo del proveedor no se pudo leer: un comentario, una coma colgante o una errata en el JSONCorrige el archivo o bórralo y vuelve a ejecutar el instalador: sobre un archivo dañado el instalador no escribe nada, solo lo nombra
Bad request (400): Model "…" not found. Available: …Errata en el nombre del modeloLa propia pasarela enumera los identificadores disponibles: copia el que necesites
Rate limit exceeded: Model "…" is currently overloaded in the Gonka network (rate limit)El modelo se quedó sin capacidad libre en la red en hora puntaGoose reintenta la petición por sí solo, pero con pausas cortas. Cambia de modelo — /model en la sesión o --model al arrancar — o espera un minuto; el estado de la red está en la página de estado
402Se acabaron los fondos en el saldoRecarga la cuenta en la sección «Facturación»; la clave sigue siendo válida

Cuánto cuesta

Un agente consume tokens de manera diferente a un chat. Ya en la configuración estándar, Goose envía al modelo las descripciones de dieciocho herramientas integradas, y en nuestra ejecución, cada paso conllevaba alrededor de 4.6 mil tokens de entrada antes incluso de su pregunta. La tarea de «leer un archivo y encontrar un error» tomó de dos a tres pasos y entre 10 y 15 mil tokens, casi todo de entrada; Goose realiza una solicitud corta adicional por sí mismo para inventar un nombre para la sesión. Las extensiones innecesarias se desactivan en goose configure → Toggle Extensions: es la forma más sencilla de reducir la entrada.

A través de JoinGonka Gateway, los tokens cuestan $0.0069 por millón en la entrada y $0.021 por millón en la salida; el precio es igual para todos los modelos de la red y se muestra en esta página desde una fuente en tiempo real.

EscenarioConsumoA través del Gateway
Tarea única: leer un archivo, encontrar un error10-15K tokenscentésimas de centavo
Día de trabajo activo3-7M tokenspocos centavos
Mes de desarrollo activo~150M tokensalrededor de un dólar

Las estimaciones en la columna derecha se basan en los precios de septiembre de 2026. Como comparación, así es como se puede pagar por los modelos en Goose:

MétodoModelo de pagoQué limita
Suscripción a Claude, ChatGPT o Gemini a través de ACPcantidad fija mensualcuotas y ventanas de actualización de límites del lado del proveedor
Clave del proveedor directamentepor tokens según la tarifa del proveedorla cuenta crece junto con la longitud de las sesiones
JoinGonka Gatewaypor tokens, saldo prepagoel consumo es visible en el panel; no hay suscripciones ni cuotas mensuales

El consumo exacto y el saldo restante se encuentran en el panel, en las secciones «Uso» y «Facturación». Por qué DeepSeek V4 Flash es la opción predeterminada —con el mayor límite de respuesta en la red— se explica detalladamente en el análisis del modelo.

Qué tener en cuenta al trabajar

Modo de confirmaciones. Por defecto, Goose funciona en modo auto — totalmente autónomo: edita y borra archivos por su cuenta, ejecuta comandos y usa extensiones sin preguntar nada. En tu propio proyecto es cómodo, pero con código ajeno es mejor endurecer el modo:

# inside a session
/mode smart_approve

# permanently, as a line in config.yaml
GOOSE_MODE: smart_approve
ModoCómo se comporta Goose
autoActúa sin confirmaciones — modo por defecto
smart_approveDeja pasar solo las acciones de bajo riesgo, por las demás pregunta
approvePregunta antes de cada llamada a herramienta
chatSolo conversa: ni herramientas ni ediciones

Esto es propio de Goose, no depende del proveedor de la modelo.

Cambio de modelo. Dentro de la sesión, el comando /model con el identificador, por ejemplo /model zai-org/GLM-5.3-Flash; para una sola ejecución, el flag --model de goose run y goose session; de forma permanente, goose configure o la línea model en config.yaml. El proveedor sigue siendo el mismo. La GLM-5.3 Flash, que razona, es buena para lógica enrevesada, pero su tope de respuesta es de 8192 tokens, y parte de ellos se van en el razonamiento — detalles en el análisis de la modelo.

Ejecuciones sin supervisión. goose run es ideal para scripts y CI: el flag -q deja en la salida solo la respuesta de la modelo, --output-format json entrega el resultado para parsearlo. Los limitadores --max-turns (cuántos turnos hace el agente sin intervención humana) y --max-tool-repetitions (cuántas veces seguidas se puede llamar a una misma herramienta con los mismos argumentos) protegen contra bucles.

Privacidad. Las estadísticas anónimas de uso en Goose están desactivadas por defecto (GOOSE_TELEMETRY_ENABLED). La pasarela no almacena el contenido de los prompts ni de las respuestas — en las estadísticas solo quedan agregados de consumo.

Goose se conecta a JoinGonka Gateway con un comando — npx @joingonka/setup --tool goose — o con un archivo: proveedor custom_joingonka en custom_providers (engine: openai, dirección https://gate.joingonka.ai/v1/chat/completions, modelos con context_limit reales) más el proveedor y modelo predeterminados en config.yaml. Goose no guarda la clave en el archivo de configuración, sino en el keyring o en secrets.yaml: en una máquina con keyring solo queda un paso — goose configure → Configure Providers → JoinGonka → clave, y al elegir el modelo es recomendable dejar DeepSeek V4 Flash. Verificación — goose run y la sección «Uso» en el panel; el precio de DeepSeek V4 Flash, GLM-5.3 Flash y MiniMax M2.7 es el mismo, por lo que el modelo se elige por comportamiento y no por presupuesto.

¿Quieres saber más?

Explora otras secciones o empieza a ganar GNK ahora mismo.

Obtener clave y tokens gratuitos →