> ## 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.

# OpenScience

> Dirija OpenScience a FlexInference solo con configuración.

OpenScience lee una entrada de proveedor de un archivo JSON. Una compilación estándar no requiere cambios en el código fuente.

OpenScience 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).

## Configure esto con un agente

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

<Accordion title="Copiar prompt de configuración del agente">
  ```text theme={null}
  Configure OpenScience 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.

  1. Create a directory named `config/` and put `openscience.json` in it with this content:

  {
    "$schema": "https://syntheticsciences.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
          }
        }
      }
    }
  }

  2. Print these lines for me to run. Do not run the export and do not ask for the value:

  export FLEXINFERENCE_API_KEY=<paste your key here>
  OPENSCIENCE_CONFIG_DIR=./config bun run dev

  3. Add `config/package.json`, `config/bun.lock`, and `config/node_modules/` to `.gitignore`. OpenScience writes those into any directory it loads config from on first run.

  Rules that matter, do not deviate:
  - Use `OPENSCIENCE_CONFIG_DIR`, not `OPENSCIENCE_CONFIG`. The first names a directory and scans it for commands, agents, and plugins. The second names a single file and scans nothing.
  - If I ask for a plugin, place the file at `config/plugins/<name>.js` and leave the `plugin` key out of the JSON entirely.
  - Tell me that any `.openscience` or `.synsc` directory inside a repository I open is also scanned for plugins, and that those plugins run with my exported key in the environment. Recommend I export the key only in the launch shell. Every entry in that array without a `file://` prefix is treated as an npm package name and handed to `bun add`, which fails and takes plugin startup down. The directory scan is one level deep and loads every `.js` and `.ts` sitting directly in `plugins/`, so keep shared modules outside it.
  - Do NOT put `start_within` in any model's `options`. FlexInference injects a key default only when the field is ABSENT, so writing it here permanently overrides my agent key's deadline with whatever you hardcoded. Only add it if I tell you I am not using an agent key.
  - 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 OpenScience stays on its built-in default.
  - Every key under `models` is a slug sent verbatim on the wire, so it must be one FlexInference serves.

  Verify the file is valid JSON, then report what you created and the exact command to run.
  ```
</Accordion>

## Configurar OpenScience

1. Exporte la clave en el shell que inicia OpenScience.

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

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

   ```json theme={null}
   {
     "$schema": "https://syntheticsciences.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
           }
         }
       }
     }
   }
   ```

3. Inicie OpenScience con el directorio de configuración establecido.

   ```bash theme={null}
   OPENSCIENCE_CONFIG_DIR=/path/to/config bun run dev
   ```

Omita `start_within` de `options` cuando su clave contenga el plazo. Solo rellenamos un valor predeterminado almacenado cuando el campo está ausente, por lo que un valor aquí anularía la clave en cada solicitud.

Establezca `"start_within": "default"` en cada modelo en su lugar cuando **no** esté utilizando una clave de agente. Esa es la línea de base segura, porque un modelo elegido sin selección de sesión se enruta de forma estándar en lugar de competir por accidente.

## Dónde va el archivo

OpenScience fusiona la configuración de varios lugares, y una fuente posterior prevalece.

* La configuración global del usuario en el directorio de configuración de OpenScience.
* `OPENSCIENCE_CONFIG`, una ruta a un archivo de configuración.
* `synsc.jsonc`, `synsc.json`, `openscience.jsonc` y `openscience.json` encontrados al subir hasta la raíz del worktree, a menos que se establezca `OPENSCIENCE_DISABLE_PROJECT_CONFIG`.
* `OPENSCIENCE_CONFIG_CONTENT`, que contiene el JSON en línea.
* Esos mismos cuatro nombres dentro de cada directorio `.openscience` o `.synsc` en ese recorrido, más cualquier directorio nombrado por `OPENSCIENCE_CONFIG_DIR`.

Las dos variables de ruta no son intercambiables. `OPENSCIENCE_CONFIG` nombra un archivo. `OPENSCIENCE_CONFIG_DIR` nombra un directorio y trata todo el contenido como configuración, escaneándolo en busca de comandos, agentes y plugins. Use la forma de directorio cuando el paquete contenga más que solo JSON.

## Cargar un plugin colocándolo

OpenScience escanea cada directorio de configuración en busca de `{plugin,plugins}/*.{ts,js}` y carga lo que encuentra como un archivo local. Coloque el archivo en `plugins/flex.js` y omita `plugin` del JSON.

```
config/
  openscience.json
  plugins/
    flex.js
```

Escribir la ruta en `plugin` no funciona. OpenScience lee cada entrada allí sin un prefijo `file://` como un nombre de paquete npm y lo entrega a `bun add`, por lo que `"./plugins/flex.js"` falla al instalarse y detiene el inicio del plugin.

El escaneo es de un nivel de profundidad y toma cada archivo `.js` y `.ts` que se encuentra directamente en `plugins/`. Mantenga los módulos compartidos fuera de ese directorio, o OpenScience también los cargará como plugins.

La primera vez que OpenScience carga la configuración de un directorio, escribe `package.json`, `bun.lock`, `node_modules/` y un `.gitignore` que los cubre. Espere esos archivos y manténgalos fuera de Git.

## Confirmar que la clave se aplicó

Cada respuesta viene con `x-flexinference-defaults-applied`. OpenScience no muestra los encabezados de respuesta en el espacio de trabajo, así que lea la solicitud en el panel de control en **Logs** en su lugar.

## Solución de problemas

**Un plugin nunca se cargó.** Nombrarlo en `plugin` lo envía a `bun add` como un nombre de paquete, lo que falla y detiene el inicio del plugin. Coloque el archivo en `plugins/flex.js` dentro del directorio de configuración y omita `plugin` del JSON.

**Un módulo auxiliar se cargó como plugin.** El escaneo toma cada archivo `.js` y `.ts` que se encuentra directamente en `plugins/`. Mueva los módulos compartidos fuera de ese directorio.

**Las solicitudes nunca nos llegan.** El campo `model` de nivel superior es lo que selecciona el proveedor. Sin él, OpenScience permanece en su valor predeterminado incorporado.

**[`401 invalid_api_key`](/es/errors#invalid_api_key).** `FLEXINFERENCE_API_KEY` no está configurada en el shell que inició OpenScience. Exporte la clave antes de iniciar.

**[`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 lleve el plazo.

**El plazo de la clave nunca se aplica.** Un `start_within` en las `options` de un modelo prevalece sobre la clave, porque solo rellenamos un valor predeterminado almacenado cuando el campo está ausente. Elimínelo de la entrada.

Consulte [errores](/es/errors) para cada rechazo que devolvemos, [claves de agente](/es/agent-keys) para los que no son específicos de OpenScience, y [OpenCode](/es/opencode) para las opciones de plazo por modelo y por variante, que OpenScience comparte.
