OpenCode
Configura OpenCode con GetVibe API mediante ~/.config/opencode/opencode.json: un proveedor compatible con OpenAI con baseURL getvibeapi.com/v1.
OpenCode es un paquete npm para programar con agentes en la terminal. Los proveedores se configuran en ~/.config/opencode/opencode.json.
Configuración lista para usar con todos los modelos
OpenCode no lee los tamaños de contexto de /v1/models: un modelo que agregues manualmente muestra un contexto de 0 y el historial no se compacta a tiempo. En lugar de escribir los números, descarga la configuración generada; se crea a partir de nuestro catálogo: cada modelo publicado con su nombre, contexto, límite de salida y flags de imagen / razonamiento / herramientas. No contiene ninguna clave, solo la referencia de {env:GETVIBE_API_KEY}.
# macOS / Linux — a fresh config with every model and its context
mkdir -p ~/.config/opencode
curl -fsSL https://getvibeapi.com/api/integrations/opencode.json -o ~/.config/opencode/opencode.json# Windows PowerShell
New-Item -ItemType Directory -Force "$HOME\.config\opencode" | Out-Null
Invoke-WebRequest https://getvibeapi.com/api/integrations/opencode.json -OutFile "$HOME\.config\opencode\opencode.json"Si ya personalizaste tu opencode.json, no lo sobrescribas: reemplaza únicamente el bloque del proveedor y conserva el resto:
# Already have an opencode.json — replace only the provider block (needs jq)
cd ~/.config/opencode && cp opencode.json opencode.json.bak
curl -fsSL https://getvibeapi.com/api/integrations/opencode.json -o provider.json
jq --slurpfile pv provider.json '.provider = ((.provider // {}) + $pv[0].provider)' opencode.json.bak > opencode.json# Only the models you need (comma-separated IDs); ?variants=1 adds pinned channels too
curl -fsSL "https://getvibeapi.com/api/integrations/opencode.json?models=claude-opus-5.5,openai/gpt-6.1-sol"opencode.json manualmente
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"getvibe": {
"npm": "@ai-sdk/openai-compatible",
"name": "GetVibe",
"options": {
"baseURL": "https://getvibeapi.com/v1",
"apiKey": "{env:GETVIBE_API_KEY}"
},
"models": {
"gpt-6.1-sol": {
"name": "GPT-6.1 Sol",
"attachment": true,
"modalities": {
"input": [
"text",
"image"
],
"output": [
"text"
]
}
},
"claude-opus-5.5": {
"name": "Claude Opus 5.5",
"attachment": true,
"modalities": {
"input": [
"text",
"image"
],
"output": [
"text"
]
}
},
"deepseek-v4.1-flash": {
"name": "DeepSeek V4.1 Flash",
"attachment": true,
"modalities": {
"input": [
"text",
"image"
],
"output": [
"text"
]
}
},
"kimi-k3.1-pro": {
"name": "Kimi K3.1 Pro",
"attachment": false,
"modalities": {
"input": [
"text"
],
"output": [
"text"
]
}
}
}
}
},
"model": "getvibe/gpt-6.1-sol"
}Configura GETVIBE_API_KEY antes de iniciar OpenCode e inícialo desde la misma ventana: export GETVIBE_API_KEY="sk-pv-…" (macOS/Linux) o setx GETVIBE_API_KEY "sk-pv-…" y una nueva ventana de PowerShell (Windows). Sin la variable, OpenCode envía una clave vacía y recibe un 401 «clave de API no válida». ¿Prefieres no usar una variable? Pon la propia clave en lugar de {env:GETVIBE_API_KEY} en el campo apiKey.
models, incluye únicamente los ID de modelo públicos que necesitas. La lista completa está en el catálogo. Para el uso habitual, escribe el nombre sin :suffix: un sufijo fija un canal y desactiva el cambio automático a uno que funcione correctamente."attachment": true. OpenCode obtiene las capacidades de los modelos del registro models.dev, que no incluye GetVibe, por lo que un modelo declarado con un {} vacío se trata como si no aceptara archivos adjuntos y OpenCode envía la solicitud sin la imagen. Entonces el modelo dice correctamente que no puede ver ninguna, aunque tenga visión. Añade attachment y modalities para cada modelo que el catálogo muestre con entrada de imágenes. También comprobamos las otras integraciones publicadas: Cline, Cursor, Roo Code, Kilo Code, Aider y Continue no tienen un mapa separado de capacidades de modelos en sus ejemplos, así que esta configuración exclusiva de OpenCode no falta en esas configuraciones.