> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flexinference.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenCode

> Dirija OpenCode a FlexInference solo con configuración.

OpenCode lee una entrada de proveedor de un archivo JSON, sin cambios en el código fuente y sin bifurcaciones.

OpenCode puede establecer `start_within` en la configuración, por lo que una clave de agente es opcional aquí. La clave sigue siendo la ruta más sencilla, ya que cambia sin necesidad de reiniciar. Consulte [claves de agente](/es/agent-keys).

## Configúrelo con un agente

Abra el bloque siguiente y cópielo en cualquier agente de codificación. El prompt nunca le pedirá su clave API: el agente configura todo lo demás y luego imprime la línea de exportación para que usted la ejecute.

<Accordion title="Copiar prompt de configuración del agente">
  ```text theme={null}
  Configure OpenCode to send its requests to FlexInference. This is config only: no source change, no fork, no patch.

  You will never see or handle my API key. The provider entry stores only the `{env:FLEXINFERENCE_API_KEY}` template, and I export the value myself. Do not ask me for the key, and do not read it from my environment.

  Ask me whether this should apply to every project or one project, then write the provider entry to the matching file. Global is `~/.config/opencode/opencode.json`. Per project is `opencode.json` in the project root. Project config wins over global. Create the file if it does not exist, and merge into it rather than overwriting anything already there.

  The entry:

  {
    "$schema": "https://opencode.ai/config.json",
    "model": "flexinference/gpt-5.6-sol",
    "provider": {
      "flexinference": {
        "name": "FlexInference",
        "env": ["FLEXINFERENCE_API_KEY"],
        "npm": "@ai-sdk/openai-compatible",
        "options": {
          "apiKey": "{env:FLEXINFERENCE_API_KEY}",
          "baseURL": "https://api.flexinference.com/v1"
        },
        "models": {
          "gpt-5.6-sol": {
            "name": "GPT-5.6 Sol",
            "reasoning": true,
            "tool_call": true,
            "limit": { "context": 400000, "output": 128000 }
          }
        }
      }
    }
  }

  Then print this line for me to run in the shell I start OpenCode from. Do not run it and do not ask for the value:

      export FLEXINFERENCE_API_KEY=<paste your key here>

  Rules that matter, do not deviate:
  - Keep `options.apiKey` as the literal `{env:FLEXINFERENCE_API_KEY}` template. Never inline my key.
  - The top-level `model` field is what selects the provider. Without it OpenCode stays on its built-in default and never reaches FlexInference.
  - `options.baseURL` must end in `/v1`.
  - Every key under `models` is a slug sent verbatim on the wire, so it must be one FlexInference serves. `gpt-5.6-sol` is a safe default.
  - Do not put `seed`, `stop`, `presence_penalty`, `frequency_penalty`, `logit_bias`, `logprobs`, `top_logprobs`, `prediction`, `audio`, `modalities`, or `web_search_options` in any model's `options`. FlexInference refuses those Chat Completions parameters, and they also conflict with a key that carries a flex duration.
  - Do not add `start_within` unless I ask. My agent key already carries the deadline, and a key duration falls back safely on models that cannot race while a config duration errors.
  - If I mention working in repositories I do not control, tell me to set `OPENCODE_DISABLE_PROJECT_CONFIG`. A project config wins over the global one and can repoint `baseURL` while still reading my exported key. `OPENCODE_CONFIG` does not prevent that, because project config loads after it.

  Verify the file is valid JSON, then report what you changed and which file you wrote.
  ```
</Accordion>

## Configurar OpenCode

1. Exporte la clave en la shell que inicia OpenCode.

   ```bash theme={null}
   export FLEXINFERENCE_API_KEY=flex_live_...
   ```

2. Escriba la entrada del proveedor en `opencode.json`.

   ```json theme={null}
   {
     "$schema": "https://opencode.ai/config.json",
     "model": "flexinference/gpt-5.6-sol",
     "provider": {
       "flexinference": {
         "name": "FlexInference",
         "env": ["FLEXINFERENCE_API_KEY"],
         "npm": "@ai-sdk/openai-compatible",
         "options": {
           "apiKey": "{env:FLEXINFERENCE_API_KEY}",
           "baseURL": "https://api.flexinference.com/v1"
         },
         "models": {
           "gpt-5.6-sol": {
             "name": "GPT-5.6 Sol",
             "reasoning": true,
             "tool_call": true,
             "limit": { "context": 400000, "output": 128000 }
           }
         }
       }
     }
   }
   ```

3. Inicie OpenCode con ese archivo.

   ```bash theme={null}
   OPENCODE_CONFIG=/path/to/opencode.json opencode
   ```

Cuatro campos contienen la integración. `npm` selecciona el paquete compatible con OpenAI. `options.baseURL` envía las solicitudes al enrutador. `options.apiKey` lee la clave del entorno. Cada clave bajo `models` es un slug que ejecutamos.

Agregue un modelo añadiendo una clave bajo `models`. Todo lo demás en la entrada es visualización y límites.

## Global o por proyecto

Coloque la entrada del proveedor en uno de dos lugares, dependiendo de qué tan ampliamente desee aplicarla.

| Alcance       | Ruta                                          | Se aplica a                      |
| ------------- | --------------------------------------------- | -------------------------------- |
| Global        | `~/.config/opencode/opencode.json`            | a cada proyecto en esta máquina  |
| Por proyecto  | `opencode.json` en la raíz del proyecto       | solo a ese proyecto              |
| Una ejecución | cualquier ruta, a través de `OPENCODE_CONFIG` | al lanzamiento al que se lo pase |

**La configuración del proyecto prevalece sobre la global.** OpenCode busca `opencode.json` en el directorio de trabajo y sube hasta el directorio Git más cercano, de modo que un repositorio puede anular su proveedor a nivel de máquina sin modificarlo.

Coloque la entrada del proveedor en el archivo global y el deadline (plazo) se mantendrá igual en todas partes. Colóquela en un archivo de proyecto y solo ese repositorio enrutará a través de nosotros.

Establezca `OPENCODE_DISABLE_PROJECT_CONFIG` para detener la búsqueda ascendente.

Existen dos fuentes más para paquetes y automatización. `OPENCODE_CONFIG_DIR` nombra un directorio del que OpenCode lee la configuración, y `OPENCODE_CONFIG_CONTENT` contiene el JSON en línea. Use `OPENCODE_CONFIG` para un archivo que elija por ejecución.

```bash theme={null}
OPENCODE_CONFIG=/path/to/opencode.json opencode
```

## Establezca el deadline en la configuración en su lugar

OpenCode puede enviar `start_within` por sí mismo. Ambos lugares son JSON simple, y ambos prevalecen sobre la clave.

Establézcalo por modelo. El bloque `options` va en el cuerpo de la solicitud para ese modelo.

```json theme={null}
"gpt-5.6-sol": {
  "name": "GPT-5.6 Sol",
  "options": { "start_within": "00h-00m-30s", "reasoningEffort": "medium" }
}
```

Establézcalo por variante en su lugar, para cambiar sin modificar el modelo. Elija uno con `--variant` en `opencode run`, o cíclelos en la TUI con `ctrl+t`.

```json theme={null}
"gpt-5.6-sol": {
  "name": "GPT-5.6 Sol",
  "variants": {
    "patient": { "start_within": "00h-05m-00s", "reasoningEffort": "high" },
    "now": { "start_within": "priority", "reasoningEffort": "low" }
  }
}
```

Una duración aquí falla en un modelo que no puede competir. La misma duración en la clave, en cambio, recurre a un valor predeterminado. Esa es la razón para preferir la clave.

## Confirmar que la clave se aplicó

Cada respuesta viene con `x-flexinference-defaults-applied`. OpenCode no muestra los encabezados de respuesta en la TUI, así que lea la solicitud en el dashboard bajo **Logs** en su lugar.

## Solución de problemas

**Las solicitudes nunca nos llegan.** El campo `model` de nivel superior es el que selecciona el proveedor, por lo que definir un proveedor sin nombrarlo allí deja a OpenCode con su valor predeterminado incorporado. Establezca `"model": "flexinference/<slug>"`.

**[`401 invalid_api_key`](/es/errors#invalid_api_key).** `FLEXINFERENCE_API_KEY` no está configurada en la shell que inició OpenCode. Exporte la clave antes de iniciar, ya que `options.apiKey` la lee del entorno.

**[`400 unsupported_parameter`](/es/errors#unsupported_parameter).** Un parámetro de Chat Completions que no traducimos estaba en las `options` de un modelo, como `seed` o `stop`. Elimínelo de la entrada.

**[`400 key_default_not_applicable`](/es/errors#key_default_not_applicable).** Su clave contiene una duración y uno de esos parámetros apareció junto a ella. Edite la clave a un tier, o elimine el parámetro.

**[`400 flex_unsupported_for_anthropic`](/es/errors#flex_unsupported_for_anthropic).** Una duración en `options` llegó a un modelo `claude-*` con su propia clave de Anthropic. La [carrera](/es/deadline-routing) que ejecuta una duración de Claude requiere claves gestionadas. Elimine la duración y deje que la clave contenga el deadline, ya que una duración de clave recurre a un valor predeterminado en su lugar.

**Una edición de configuración no cambió nada.** Una fuente de configuración posterior la anuló. Verifique el orden de búsqueda anterior y prefiera `OPENCODE_CONFIG` para optar por un archivo por ejecución.

Consulte [errores](/es/errors) para cada rechazo que devolvemos, y [claves de agente](/es/agent-keys) para aquellos que no son específicos de OpenCode. [OpenWork](/es/openwork) y [OpenScience](/es/openscience) leen la misma entrada de proveedor.
