Documentación

Configuración de herramientas agénticas

Las herramientas agénticas envían en cada paso el contenido de los archivos, la salida de los comandos y todo el historial de la conversación. Un prompt tan grande puede tardar decenas de segundos en entregar el primer token. Si tu app se rinde antes, la solicitud cuenta igualmente, pero no recibes nada. Configura el timeout, el streaming, los reintentos y el tamaño del contexto como se indica abajo.

Por qué importa

  • Las solicitudes cortadas antes de que llegue la respuesta cuentan igualmente. En cuanto llega una solicitud, el servidor de IA empieza a procesar todo el prompt. Si tu app la abandona antes (timeout, botón de parar, conexión perdida), el coste del procesamiento ya se ha generado, pero no recibes respuesta.
  • Los prompts enormes necesitan más de 30 segundos antes del primer token. Los prompts agénticos de cientos de KB con miles de mensajes pueden superar el límite predeterminado de muchas apps (30 o 60 segundos) antes de que salga un solo token.
  • El streaming mantiene viva la conexión. Con el streaming activado, nuestro servidor envía las cabeceras de inmediato y luego una señal keepalive cada 10 segundos mientras espera la respuesta. Lo que aún puede cortarla es el límite de tiempo total de tu app, así que ajústalo a al menos 300 segundos.
  • Elige un modelo rápido para contextos grandes. Para sesiones largas o repos grandes, usa un modelo más rápido y reserva los modelos grandes para los pasos que de verdad los necesitan. Compáralos en la página de Precios.

Pautas para todas las herramientas

Timeout
Al menos 300 segundos. Ojo con la unidad: algunas herramientas usan segundos (300) y otras milisegundos (300000).
Streaming
Actívalo. Sin streaming no fluye ningún dato hasta que la respuesta está completa, así que los proxies y las apps se rinden antes.
Reintentos
Mantenlos bajos (0–3). Un reintento tras un timeout es una solicitud nueva que también se cobra. Corrige primero el timeout en lugar de subir los reintentos.
Contexto
Mantenlo pequeño. Usa el compact/resumen automático, inicia una sesión nueva por tarea y excluye las carpetas grandes (node_modules, build, data).

Claude Code

URL base y clave
Sigue la guía de Claude Code: ANTHROPIC_BASE_URL = https://ai.geraikita.com (sin /v1) y ANTHROPIC_AUTH_TOKEN = tu clave gk-. Puedes poner las variables en el bloque env de ~/.claude/settings.json.
Timeout
API_TIMEOUT_MS (milisegundos): cuánto espera cada intento las cabeceras de la respuesta, por defecto 600000 (10 minutos). No lo bajes; si alguna vez lo redujiste, vuelve a ponerlo en al menos 300000.
Streaming
Siempre usa streaming. No hay ningún ajuste para desactivarlo.
Reintentos
CLAUDE_CODE_MAX_RETRIES, por defecto 10, incluidos los timeouts antes de que la respuesta empiece a transmitirse. Para prompts grandes pon 2–3 para que un mismo paso no se cobre una y otra vez.
Contexto
/compact resume la conversación, /clear empieza una nueva. El auto-compact está activado por defecto (autoCompactEnabled); un CLAUDE_AUTOCOMPACT_PCT_OVERRIDE más bajo (p. ej. 60) compacta antes.
~/.claude/settings.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://ai.geraikita.com",
    "ANTHROPIC_AUTH_TOKEN": "gk-xxxxxxxx",
    "API_TIMEOUT_MS": "600000",
    "CLAUDE_CODE_MAX_RETRIES": "3",
    "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "60"
  }
}

Cline

URL base y clave
Sigue la guía de Cline: provider OpenAI Compatible (Base URL https://ai.geraikita.com/v1) o Anthropic con Use custom base URL https://ai.geraikita.com.
Timeout
La documentación oficial de Cline no ofrece ajuste de timeout para los providers OpenAI Compatible ni Anthropic (Request Timeout es solo para Ollama). Para que el primer token salga rápido: reduce el contexto y elige un modelo más rápido para contextos grandes.
Streaming
No hay ajuste de streaming en la documentación oficial; no hay nada que cambiar.
Reintentos
No hay ajuste de reintentos en la documentación oficial.
Contexto
Auto Compact resume automáticamente cuando el contexto está casi lleno. /smol (alias /compact) resume manualmente, /newtask lleva un resumen a una tarea nueva. Ajusta Context Window size en Model Configuration según el modelo.

Roo Code

URL base y clave
Nota: la extensión Roo Code se cerró oficialmente el 15 de mayo de 2026. Si aún la usas: provider OpenAI Compatible, Base URL https://ai.geraikita.com/v1, tu clave gk- (igual que en Cline).
Timeout
roo-cline.apiRequestTimeout en el settings.json de VS Code, en segundos (por defecto 600, rango 0–3600, 0 = sin límite). No bajes de 300.
Streaming
Asegúrate de que Enable streaming siga marcado en el perfil OpenAI Compatible.
Reintentos
Con Auto-Approve activado, las solicitudes fallidas se reintentan automáticamente con esperas crecientes; no hay un interruptor aparte.
Contexto
Intelligent Context Condensing (Settings → Context): baja el umbral desde el 100 % predeterminado para que la condensación empiece antes, o pulsa Condense Context. Excluye carpetas grandes con .rooignore.

Kilo Code

URL base y clave
Settings → Providers → Custom provider → OpenAI Compatible, Base URL https://ai.geraikita.com/v1, tu clave gk-. O usa el archivo ~/.config/kilo/kilo.jsonc como en el ejemplo de abajo.
Timeout
options.timeout en el provider (milisegundos) cubre la espera de las cabeceras y del primer byte. El valor por defecto es 300000, justo en el límite; pon 600000. No pongas chunkTimeout demasiado bajo.
Streaming
No hay ajuste de streaming en la documentación oficial; no hay nada que cambiar.
Reintentos
No hay ajuste de reintentos en la documentación oficial.
Contexto
compaction.auto (por defecto true) y /compact. Debes definir limit.context por modelo (un número menor compacta antes): sin él, la compactación automática no se ejecuta. Excluye carpetas grandes con .kilocodeignore o reglas de permisos.
~/.config/kilo/kilo.jsonc
{
  "provider": {
    "geraikita": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Geraikita AI",
      "options": {
        "baseURL": "https://ai.geraikita.com/v1",
        "apiKey": "gk-xxxxxxxx",
        "timeout": 600000
      },
      "models": {
        "claude-sonnet-5": {
          "name": "Claude Sonnet 5",
          "limit": { "context": 128000, "output": 16000 }
        }
      }
    }
  },
  "compaction": { "auto": true }
}

Cursor

URL base y clave
Cursor Settings → Models → OpenAI API key. La documentación oficial de Cursor no describe una URL base personalizada; si tu versión de Cursor muestra Override OpenAI Base URL, introduce https://ai.geraikita.com/v1. Tu propia clave API solo funciona con modelos de chat (Tab sigue usando los modelos integrados de Cursor) y las solicitudes pasan por los servidores de Cursor.
Timeout
No hay ajuste de timeout configurable en la documentación oficial. En su lugar: reduce el contexto, abre un chat nuevo por tarea y elige un modelo rápido para que el primer token llegue antes del límite de la app.
Streaming
Lo gestiona Cursor; no hay ajuste.
Reintentos
No hay ajuste de reintentos en la documentación oficial.
Contexto
Cursor resume automáticamente las partes antiguas de la conversación cuando el contexto está casi lleno. Abre un chat nuevo cada vez que cambies de tarea y excluye archivos grandes con .cursorignore.

OpenCode

URL base y clave
Sigue la guía de OpenCode: provider @ai-sdk/openai-compatible con baseURL https://ai.geraikita.com/v1.
Timeout
En provider.geraikita.options (milisegundos): headerTimeout (espera de cabeceras, por defecto 300000) y chunkTimeout (intervalo entre chunks del stream, por defecto 300000). timeout (límite total) está desactivado por defecto; si lo defines, usa al menos 300000.
Streaming
Siempre usa streaming. No hay ningún ajuste para desactivarlo.
Reintentos
No hay ajuste de reintentos en la documentación oficial. Si las solicitudes se siguen cortando, corrige el timeout y reduce el contexto.
Contexto
compaction.auto (por defecto true) resume la sesión automáticamente cuando el contexto se llena. /compact resume manualmente, /new inicia una sesión nueva.
~/.config/opencode/opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "geraikita": {
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "https://ai.geraikita.com/v1",
        "apiKey": "{env:GERAIKITA_API_KEY}",
        "headerTimeout": 300000,
        "chunkTimeout": 300000
      }
    }
  },
  "compaction": { "auto": true }
}

Continue

URL base y clave
En config.yaml: provider: openai, apiBase: https://ai.geraikita.com/v1, apiKey = tu clave gk-.
Timeout
requestOptions.timeout en segundos (por defecto 7200). Usa al menos 300, no 300000.
Streaming
El provider openai siempre usa streaming.
Reintentos
No hay ajuste de reintentos en la documentación oficial.
Contexto
defaultCompletionOptions.contextLength y maxTokens limitan el tamaño del contexto y de la respuesta. Abre un chat nuevo por tarea; la CLI de Continue tiene /compact y /clear.
~/.continue/config.yaml
models:
  - name: Claude Sonnet 5 (Geraikita)
    provider: openai
    model: claude-sonnet-5
    apiBase: https://ai.geraikita.com/v1
    apiKey: gk-xxxxxxxx
    requestOptions:
      timeout: 600        # segundos, no milisegundos
    defaultCompletionOptions:
      contextLength: 64000  # menor = se recorta el historial
      maxTokens: 8192

n8n

URL base y clave
Credenciales de OpenAI: pon Base URL en https://ai.geraikita.com/v1 y tu clave API gk-. Credenciales de Anthropic: Base URL https://ai.geraikita.com.
Timeout
Nodo OpenAI Chat Model → Options → Timeout (milisegundos). El valor por defecto es 60000 (60 segundos), causa habitual de cortes a los 60 segundos; pon al menos 300000. El nodo HTTP Request → Options → Timeout también va en milisegundos. Autoalojado: no pongas EXECUTIONS_TIMEOUT (segundos) por debajo de eso.
Streaming
AI Agent → Options → Enable Streaming (activado por defecto; requiere un Chat Trigger o un Webhook con Response Mode Streaming). Anthropic Chat Model → Stream Responses. El OpenAI Chat Model no tiene opción de streaming, así que confía en un Timeout lo bastante largo.
Reintentos
OpenAI Chat Model → Options → Max Retries, por defecto 2. Los reintentos tras un timeout también se cobran; corrige primero el Timeout.
Contexto
Subnodo Simple Memory → Context Window Length = cuántas interacciones anteriores se envían. Mantenlo bajo, p. ej. 5–10.

SDK de OpenAI (Python y Node.js)

URL base y clave
base_url / baseURL = https://ai.geraikita.com/v1, api_key / apiKey = tu clave gk-. Hay un ejemplo básico en Primera solicitud.
Timeout
timeout: segundos en Python, milisegundos en Node.js. El valor por defecto del SDK es 10 minutos, lo cual está bien mientras no lo bajes de 300 segundos.
Streaming
stream=True (Python) / stream: true (Node.js).
Reintentos
max_retries / maxRetries, por defecto 2, incluido el reintento de solicitudes que superan el timeout. Para prompts grandes pon 0–1.
Contexto
Envía solo el historial que necesitas: recorta los mensajes antiguos o resúmelos antes de enviarlos.
from openai import OpenAI

client = OpenAI(
    base_url="https://ai.geraikita.com/v1",
    api_key="gk-xxxxxxxx",
    timeout=600.0,   # segundos
    max_retries=1,   # los reintentos tras timeout también se cobran
)
stream = client.chat.completions.create(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "Halo!"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

SDK de Anthropic (Python y Node.js)

URL base y clave
base_url / baseURL = https://ai.geraikita.com (sin /v1, el SDK añade /v1/messages por sí mismo), api_key / apiKey = tu clave gk-.
Timeout
timeout: segundos en Python, milisegundos en Node.js; por defecto 10 minutos. El SDK rechaza las solicitudes sin streaming que se espera que tarden más de unos 10 minutos, así que usa streaming.
Streaming
client.messages.stream(...), o stream=True / stream: true en messages.create.
Reintentos
max_retries / maxRetries, por defecto 2. Para prompts grandes pon 0–1.
Contexto
Envía solo el historial que necesitas; limita max_tokens a lo que necesita la respuesta.
import anthropic

client = anthropic.Anthropic(
    base_url="https://ai.geraikita.com",   # sin /v1
    api_key="gk-xxxxxxxx",
    timeout=600.0,   # segundos
    max_retries=1,   # los reintentos tras timeout también se cobran
)
with client.messages.stream(
    model="claude-sonnet-5",
    max_tokens=4096,
    messages=[{"role": "user", "content": "Halo!"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

curl

URL base y clave
Cabecera Authorization: Bearer gk-... a https://ai.geraikita.com/v1/chat/completions. Hay un ejemplo básico en Primera solicitud.
Timeout
Sin --max-time, curl no limita la duración total. Si lo usas, pon al menos 300 (segundos).
Streaming
"stream": true en el body, más -N (--no-buffer) para que los chunks de la respuesta aparezcan de inmediato.
Reintentos
--retry vale 0 por defecto y también reintenta en los timeouts. No lo añadas para prompts grandes.
Contexto
Tú construyes el body: envía solo los mensajes que necesitas.
bash
curl https://ai.geraikita.com/v1/chat/completions \
  --max-time 600 -N \
  -H "Authorization: Bearer gk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"model":"claude-sonnet-5","stream":true,"messages":[{"role":"user","content":"Halo!"}]}'

Condiciones de facturación

Las solicitudes canceladas del lado del comprador (timeout de la app, botón de parar, conexión caída) antes de que llegue la respuesta se cobran igualmente. La salida vacía solo se compensa por problemas de nuestro lado (respuesta vacía o error del servidor, o ninguna salida durante ≥60 segundos). Se aplica desde el 1 de noviembre de 2026.

Términos y Condiciones, Artículo 10

Preguntas frecuentes

Mi app superó el timeout y la salida quedó vacía. ¿Me cobran igualmente?

Sí, si tu app cortó antes de que llegara la respuesta: el servidor de IA ya había procesado tu prompt. Así lo establecen los Términos y condiciones, y se aplica desde el 1 de noviembre de 2026.

¿Cuándo se compensa una salida vacía?

Cuando el problema está de nuestro lado: el servidor devuelve una respuesta vacía o un error, o no hay ninguna salida durante 60 segundos o más.

¿Por qué no subir simplemente los reintentos?

Cada reintento es una solicitud nueva. Si la causa es un timeout demasiado corto, los reintentos solo repiten el cobro sin resultado. Sube el timeout a al menos 300 segundos y activa el streaming.

Mi prompt es enorme. ¿Qué ayuda más?

Resumir o iniciar una sesión nueva, excluir carpetas grandes y usar un modelo más rápido para contextos grandes. Compara los modelos en la página de Precios.