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

> OpenScience nur über die Konfiguration auf FlexInference verweisen.

OpenScience liest einen Provider-Eintrag aus einer JSON-Datei. Eine Standard-Build erfordert keine Quellcodeänderung.

OpenScience kann `start_within` in der Konfiguration festlegen, daher ist ein Agent-Schlüssel hier optional. Der Schlüssel ist jedoch weiterhin der einfachere Weg, da er sich ohne Neustart ändern lässt. Siehe [Agent-Schlüssel](/de/agent-keys).

## Einrichtung mit einem Agenten

Öffnen Sie den folgenden Block und kopieren Sie ihn in einen beliebigen Coding-Agenten. Der Prompt fragt niemals nach Ihrem API-Schlüssel: Der Agent konfiguriert alles andere und gibt dann die eine Exportzeile aus, die Sie selbst ausführen können.

<Accordion title="Agenten-Setup-Prompt kopieren">
  ```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>

## OpenScience konfigurieren

1. Exportieren Sie den Schlüssel in der Shell, die OpenScience startet.

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

2. Schreiben Sie den Provider-Eintrag in `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. Starten Sie OpenScience mit dem festgelegten Konfigurationsverzeichnis.

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

Lassen Sie `start_within` aus den `options` weg, wenn Ihr Schlüssel die Deadline enthält. Wir füllen einen gespeicherten Standardwert nur dann ein, wenn das Feld fehlt; ein hier angegebener Wert würde den Schlüssel bei jeder Anfrage überschreiben.

Setzen Sie stattdessen `"start_within": "default"` für jedes Modell, wenn Sie **keinen** Agent-Schlüssel verwenden. Das ist die sichere Basislinie, da ein Modell, das ohne Sitzungsauswahl ausgewählt wird, dann standardmäßig routet, anstatt versehentlich ein Wettrennen zu starten.

## Wo die Datei abgelegt wird

OpenScience führt Konfigurationen aus mehreren Quellen zusammen, wobei eine spätere Quelle Vorrang hat.

* Die globale Benutzerkonfiguration im Konfigurationsverzeichnis von OpenScience.
* `OPENSCIENCE_CONFIG`, ein Pfad zu einer Konfigurationsdatei.
* `synsc.jsonc`, `synsc.json`, `openscience.jsonc` und `openscience.json`, die beim Hochgehen zum Worktree-Root gefunden werden, es sei denn, `OPENSCIENCE_DISABLE_PROJECT_CONFIG` ist gesetzt.
* `OPENSCIENCE_CONFIG_CONTENT`, das den JSON-Inhalt inline enthält.
* Dieselben vier Namen in jedem `.openscience`- oder `.synsc`-Verzeichnis auf diesem Pfad, plus jedes Verzeichnis, das durch `OPENSCIENCE_CONFIG_DIR` benannt ist.

Die beiden Pfadvariablen sind nicht austauschbar. `OPENSCIENCE_CONFIG` benennt eine Datei. `OPENSCIENCE_CONFIG_DIR` benennt ein Verzeichnis und behandelt das Ganze als Konfiguration, wobei es nach Befehlen, Agenten und Plugins durchsucht wird. Verwenden Sie die Verzeichnisform, wenn das Bundle mehr als nur JSON enthält.

## Ein Plugin durch Platzierung laden

OpenScience durchsucht jedes Konfigurationsverzeichnis nach `{plugin,plugins}/*.{ts,js}` und lädt die gefundenen Dateien als lokale Dateien. Legen Sie die Datei unter `plugins/flex.js` ab und lassen Sie `plugin` aus dem JSON weg.

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

Das Schreiben des Pfades in `plugin` funktioniert nicht. OpenScience liest jeden Eintrag dort ohne `file://`-Präfix als npm-Paketnamen und übergibt ihn an `bun add`, sodass `"./plugins/flex.js"` fehlschlägt und den Plugin-Start mit sich reißt.

Der Scan ist eine Ebene tief und erfasst jede `.js`- und `.ts`-Datei, die sich direkt in `plugins/` befindet. Halten Sie gemeinsame Module außerhalb dieses Verzeichnisses, da OpenScience sie sonst ebenfalls als Plugins lädt.

Wenn OpenScience zum ersten Mal Konfigurationen aus einem Verzeichnis lädt, schreibt es `package.json`, `bun.lock`, `node_modules/` und eine `.gitignore`-Datei, die diese abdeckt, in dieses Verzeichnis. Rechnen Sie damit und halten Sie sie von Git fern.

## Bestätigen, dass der Schlüssel angewendet wurde

Jede Antwort enthält `x-flexinference-defaults-applied`. OpenScience zeigt keine Antwort-Header im Arbeitsbereich an, lesen Sie stattdessen die Anfrage im Dashboard unter **Logs**.

## Fehlerbehebung

**Ein Plugin wurde nie geladen.** Die Benennung in `plugin` sendet es als Paketnamen an `bun add`, was fehlschlägt und den Plugin-Start mit sich reißt. Legen Sie die Datei unter `plugins/flex.js` innerhalb des Konfigurationsverzeichnisses ab und lassen Sie `plugin` aus dem JSON weg.

**Ein Hilfsmodul wurde als Plugin geladen.** Der Scan erfasst jede `.js`- und `.ts`-Datei, die sich direkt in `plugins/` befindet. Verschieben Sie gemeinsame Module außerhalb dieses Verzeichnisses.

**Anfragen erreichen uns nie.** Das Top-Level-Feld `model` wählt den Provider aus. Ohne dieses bleibt OpenScience bei seinem integrierten Standard.

**[`401 invalid_api_key`](/de/errors#invalid_api_key).** `FLEXINFERENCE_API_KEY` ist in der Shell, die OpenScience gestartet hat, nicht gesetzt. Exportieren Sie es vor dem Start.

**[`400 flex_unsupported_for_anthropic`](/de/errors#flex_unsupported_for_anthropic).** Eine Dauer in `options` erreichte ein `claude-*`-Modell mit Ihrem eigenen Anthropic-Schlüssel. Das [Wettrennen](/de/deadline-routing), das eine Claude-Dauer auslöst, erfordert verwaltete Schlüssel. Entfernen Sie die Dauer und lassen Sie den Schlüssel die Deadline tragen.

**Die Deadline des Schlüssels wird nie angewendet.** Ein `start_within` in den `options` eines Modells hat Vorrang vor dem Schlüssel, da wir einen gespeicherten Standardwert nur dann einfügen, wenn das Feld fehlt. Entfernen Sie es aus dem Eintrag.

Siehe [Fehler](/de/errors) für jede von uns zurückgegebene Ablehnung, [Agent-Schlüssel](/de/agent-keys) für diejenigen, die nicht spezifisch für OpenScience sind, und [OpenCode](/de/opencode) für die modell- und variantenspezifischen Deadline-Optionen, die OpenScience teilt.
