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

> Aponte o OpenScience para o FlexInference apenas com configuração.

O OpenScience lê uma entrada de provedor de um arquivo JSON. Uma compilação padrão não requer alteração no código-fonte.

O OpenScience pode definir `start_within` na configuração, então uma agent key é opcional aqui. A chave ainda é o caminho mais simples, pois muda sem a necessidade de reiniciar. Consulte [agent keys](/pt/agent-keys).

## Configure isso com um agente

Abra o bloco abaixo e copie-o para qualquer agente de codificação. O prompt nunca pede sua API key: o agente configura todo o resto e, em seguida, imprime a linha de exportação para você executar.

<Accordion title="Copiar prompt de configuração do 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 a chave no shell que inicia o OpenScience.

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

2. Escreva a entrada do provedor em `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 o OpenScience com o diretório de configuração definido.

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

Deixe `start_within` fora de `options` quando sua chave contiver o prazo. Nós apenas preenchemos um padrão armazenado quando o campo está ausente, então um valor aqui sobrescreveria a chave em cada solicitação.

Defina `"start_within": "default"` em cada modelo, em vez disso, quando você **não** estiver usando uma agent key. Essa é a linha de base segura, porque um modelo escolhido sem seleção de sessão então roteia de forma padrão em vez de competir acidentalmente.

## Onde o arquivo vai

O OpenScience mescla configurações de vários locais, e uma fonte posterior prevalece.

* A configuração global do usuário no diretório de configuração do OpenScience.
* `OPENSCIENCE_CONFIG`, um caminho para um arquivo de configuração.
* `synsc.jsonc`, `synsc.json`, `openscience.jsonc` e `openscience.json` encontrados subindo até a raiz do worktree, a menos que `OPENSCIENCE_DISABLE_PROJECT_CONFIG` esteja definido.
* `OPENSCIENCE_CONFIG_CONTENT`, contendo o JSON embutido.
* Esses mesmos quatro nomes dentro de cada diretório `.openscience` ou `.synsc` nesse caminho, além de qualquer diretório nomeado por `OPENSCIENCE_CONFIG_DIR`.

As duas variáveis de caminho não são intercambiáveis. `OPENSCIENCE_CONFIG` nomeia um arquivo. `OPENSCIENCE_CONFIG_DIR` nomeia um diretório e trata tudo como configuração, escaneando-o em busca de comandos, agentes e plugins. Use o formato de diretório quando o pacote contiver mais do que JSON.

## Carregar um plugin colocando-o

O OpenScience escaneia cada diretório de configuração em busca de `{plugin,plugins}/*.{ts,js}` e carrega o que encontra como um arquivo local. Coloque o arquivo em `plugins/flex.js` e deixe `plugin` fora do JSON.

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

Escrever o caminho em `plugin` não funciona. O OpenScience lê cada entrada lá sem um prefixo `file://` como um nome de pacote npm e o passa para `bun add`, então `"./plugins/flex.js"` falha na instalação e derruba a inicialização do plugin.

A varredura é de um nível de profundidade, e ela pega todo `.js` e `.ts` que está diretamente em `plugins/`. Mantenha os módulos compartilhados fora desse diretório, ou o OpenScience os carregará como plugins também.

Na primeira vez que o OpenScience carrega a configuração de um diretório, ele escreve `package.json`, `bun.lock`, `node_modules/` e um `.gitignore` cobrindo-os nele. Espere por esses arquivos e mantenha-os fora do Git.

## Confirmar a aplicação da chave

Toda resposta vem com `x-flexinference-defaults-applied`. O OpenScience não mostra os cabeçalhos de resposta no workspace, então leia a solicitação no dashboard em **Logs**.

## Solução de problemas

**Um plugin nunca foi carregado.** Nomeá-lo em `plugin` o envia para `bun add` como um nome de pacote, o que falha e derruba a inicialização do plugin. Coloque o arquivo em `plugins/flex.js` dentro do diretório de configuração e deixe `plugin` fora do JSON.

**Um módulo auxiliar foi carregado como um plugin.** A varredura pega todo `.js` e `.ts` que está diretamente em `plugins/`. Mova os módulos compartilhados para fora desse diretório.

**As solicitações nunca nos alcançam.** O campo `model` de nível superior é o que seleciona o provedor. Sem ele, o OpenScience permanece em seu padrão integrado.

**[`401 invalid_api_key`](/pt/errors#invalid_api_key).** `FLEXINFERENCE_API_KEY` não está definido no shell que iniciou o OpenScience. Exporte-o antes de iniciar.

**[`400 flex_unsupported_for_anthropic`](/pt/errors#flex_unsupported_for_anthropic).** Uma duração em `options` atingiu um modelo `claude-*` em sua própria chave Anthropic. A [corrida](/pt/deadline-routing) que uma duração Claude executa requer chaves gerenciadas. Remova a duração e deixe a chave carregar o prazo.

**O prazo da chave nunca é aplicado.** Um `start_within` nas `options` de um modelo prevalece sobre a chave, porque nós apenas preenchemos um padrão armazenado quando o campo está ausente. Remova-o da entrada.

Consulte [errors](/pt/errors) para cada recusa que retornamos, [agent keys](/pt/agent-keys) para aquelas que não são específicas do OpenScience, e [OpenCode](/pt/opencode) para as opções de prazo por modelo e por variante, que o OpenScience compartilha.
