Feature Flags (Deutsch)
Was Feature-Flags sind
Abschnitt betitelt „Was Feature-Flags sind“Ein Feature-Flag ist ein benannter Umschalter (boolesch oder Enum), dessen Wert zur
Laufzeit geändert und in der Datenbank gespeichert werden kann, ohne dass der Prozess
erneut bereitgestellt werden muss. Jedes Flag wird durch eine FeatureFlagDefinition
mit key, label, description, category, defaultValue, type und einem
requiresRestart-Hinweis beschrieben.
Auflösungsreihenfolge
Abschnitt betitelt „Auflösungsreihenfolge“Der effektive Wert eines Flags wird durch
resolveFeatureFlag() mit folgender
Priorität ermittelt (die höchste gewinnt):
- DB-Überschreibung — ein Wert, der in der Tabelle
key_valueunter dem Namespacefeature_flagsgespeichert ist (über das Dashboard oder die REST-API festgelegt). - Umgebungsvariable —
process.env[<KEY>], sofern gesetzt und nicht leer. - Definitionsstandardwert — der
defaultValueausfeatureFlagDefinitions.ts.
Ein boolesches Flag gilt als aktiviert, wenn sein effektiver Wert "true",
"1" oder "yes" ist (siehe isFeatureFlagEnabled()).
[!NOTE] Für die meisten Flags ist außerdem eine entsprechende Umgebungsvariable mit demselben Namen in
ENVIRONMENT.mddokumentiert. Die DB-Überschreibung des Flags hat Vorrang vor dieser Umgebungsvariable. Ein Flag mitrequiresRestart: truewird sofort gespeichert, aber erst beim Prozessstart erneut eingelesen — beim Umschalten wird im Dashboard ein Banner „Server neu starten“ angezeigt.
Flag-Katalog
Abschnitt betitelt „Flag-Katalog“77 Flags in 6 Kategorien. Standardwert ist der in der Definition festgelegte Standardwert – der Wert, der verwendet wird, wenn weder eine DB-Überschreibung noch eine Umgebungsvariable vorhanden ist.
Sicherheit (10)
Abschnitt betitelt „Sicherheit (10)“| Schlüssel | Typ | Standardwert | Beschreibung |
|---|---|---|---|
REQUIRE_API_KEY |
boolean | false |
Einen API-Schlüssel für alle eingehenden Anfragen verlangen. |
INPUT_SANITIZER_ENABLED |
boolean | true |
Eingabebereinigung für alle Anfragen aktivieren. |
INJECTION_GUARD_MODE |
enum | off |
Modus zum Schutz vor Prompt-Injection. Werte: off, warn, block, redact. |
PII_REDACTION_ENABLED |
boolean | false |
Personenbezogene Daten aus Anfragen entfernen (unabhängig von INPUT_SANITIZER_MODE). |
PII_RESPONSE_SANITIZATION |
boolean | false |
Personenbezogene Daten aus Antworten des Anbieters bereinigen. |
PII_RESPONSE_SANITIZATION_MODE |
enum | redact |
Modus für die Bereinigung personenbezogener Daten in Antworten. Werte: redact, warn, block, off. |
OUTBOUND_SSRF_GUARD_ENABLED |
boolean | true |
Ausgehende Anfragen an private/interne IP-Adressbereiche blockieren. |
ALLOW_API_KEY_REVEAL |
boolean | false |
Authentifizierten Dashboard-Benutzern erlauben, gespeicherte API-Schlüssel anzuzeigen, anstatt nur maskierte Werte zu sehen. |
AUTH_LOG_INCLUDE_ACCOUNT_ID |
boolean | false |
Das Kontopräfix in AUTH-Protokollzeilen aufnehmen (z. B. „Using <provider> account: abc12345…“). Standardmäßig deaktiviert, damit Kontokennungen in gemeinsam genutzten/mandantenfähigen Prozessprotokollen unkenntlich gemacht werden. Unabhängig vom Debug-Modus; das Umschalten des Debug-Modus legt diese nicht offen. |
OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN |
boolean | false |
Wenn OIDC aktiviert ist, die Anmeldung per Passwort deaktivieren, sodass sich Benutzer nur über OIDC Single Sign-On authentifizieren können. Wenn deaktiviert (Standardwert), sind sowohl die Anmeldung per Passwort als auch OIDC verfügbar. |
Netzwerk (19)
Abschnitt betitelt „Netzwerk (19)“| Schlüssel | Typ | Standardwert | Neustart | Beschreibung |
|---|---|---|---|---|
ENABLE_TLS_FINGERPRINT |
boolean | false |
✓ | Aktiviert den Tarnmodus für TLS-Fingerabdrücke. |
AUDIO_REMOTE_PROVIDER_NODES |
boolean | false |
Erlaubt den Routen /v1/audio/*, OpenAI-kompatible Provider-Knoten zu verwenden, die außerhalb von localhost gehostet werden. Standardmäßig deaktiviert — das Weiterleiten von Audio an einen Remote-Host ändert die Egress-Identität und muss eine ausdrückliche Entscheidung des Betreibers sein. Loopback-Knoten sind immer zulässig und davon nicht betroffen. | |
RERANK_REMOTE_PROVIDER_NODES |
boolean | false |
Erlaubt POST /v1/rerank (und dem Loopback-Reranking-Schritt der Memory-Engine), OpenAI-kompatible Provider-Knoten zu verwenden, die außerhalb von localhost gehostet werden. Standardmäßig deaktiviert — das Weiterleiten an einen Remote-Host ändert die Egress-Identität und muss eine ausdrückliche Entscheidung des Betreibers sein. Loopback-Knoten sind immer zulässig; Remote-Knoten müssen außerdem die Richtlinie für ausgehende Provider-URLs erfüllen. | |
PROXY_AUTO_SELECT_ENABLED |
boolean | false |
Wählt automatisch den ersten funktionierenden Proxy aus der Registry aus, wenn einer Verbindung kein Proxy zugewiesen ist. Standardmäßig deaktiviert (andernfalls wird jeder Registry-Proxy zu einem globalen Fallback — #3332). | |
OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK |
boolean | false |
Erlaubt OAuth- und Provider-Validierungsabläufen, einen fest zugewiesenen Proxy zu umgehen und eine direkte Verbindung herzustellen, wenn Vorabprüfungen der Proxy-Erreichbarkeit fehlschlagen. Standardmäßig deaktiviert, da dies die Egress-IP ändern kann. | |
NETWORK_ROTATION_SHARED_EGRESS_GUARD |
boolean | true |
Wendet bei einer Netzwerkausnahme (Zeitüberschreitung, Verbindung abgelehnt/zurückgesetzt) für einen Rotations-Executor mit mehreren Konten eine kurze Abklingzeit an und überspringt für den Rest der Anfrage andere Konten ohne Proxy, anstatt jedes erneut zu versuchen, wenn das fehlschlagende Konto keinen dedizierten Proxy besitzt. Standardmäßig aktiviert (sicher: keine Änderung der Egress-IP; reduziert lediglich das Latenz-/Abklingzeitrisiko bei Konten mit gemeinsamem Egress). Deaktivieren, um die sofortige Weitergabe beim ersten Fehler eines Kontos ohne Proxy wiederherzustellen. | |
ROTATION_ATTRIBUTION |
boolean | false |
Die Opencode-Rotation zeichnet auf, welches Konto die Anfrage bedient hat oder übersprungen wurde (nur maskierte IDs, niemals vollständige Konto-IDs), und verknüpft Proxy-Protokolleinträge mit der zugehörigen Anfrage, sodass der Betreiber übersprungene Konten von nicht verwendeten unterscheiden kann. Standardmäßig deaktiviert. | |
PROXY_SKIP_RECENTLY_FAILED |
boolean | false |
Proxy-Pools und die kontobezogene Rotation von Opencode stellen einen gerade fehlgeschlagenen Proxy (abgelehnte TCP-Prüfung oder darüber empfangene 429-Antwort) für einen prozessbezogenen Zeitraum nicht erneut bereit; dieser Zeitraum verdoppelt sich bei jeder Wiederholung bis zu einem Höchstwert. Es wird kein Proxy-Status geschrieben; wenn alle Kandidaten zurückgestellt wurden, bleibt die Auswahl unverändert. Standardmäßig deaktiviert. | |
PROXY_POOL_EGRESS_OBSERVATION |
boolean | false |
Zeigt im Dashboard unter einem Proxy-Pool an, wie viele beobachtete Egress-IPs dessen Mitglieder in den letzten 24 h bedient haben und wie viele Verbindungen sie verwendet haben. Schreibgeschützt, aus dem Proxy-Protokoll berechnet und niemals für das Routing verwendet. Standardmäßig deaktiviert. | |
OPENCODE_RESPONSES_STALL_ROTATION |
boolean | false |
Überwacht beim OpenCode-Executor das erste Byte des Bodys einer gestreamten Responses-Antwort (Zeitfenster: RESPONSES_FIRST_BYTE_TIMEOUT_MS, Standardwert 15000). Ein 2xx-Responses-Stream, der über dieses Zeitfenster hinaus stumm bleibt, gilt als blockiert: Für das Konto wird eine Abkühlphase festgelegt, und die Anfrage wechselt einmal zum nächsten Konto; eine zweite Blockierung führt zu einem sofortigen Fehler. Standardmäßig deaktiviert: Bei blockierten Streams wird weiterhin wie bisher bis zum Zeitlimit für die Stream-Bereitschaft gewartet. |
|
OPENCODE_USER_BLOCKED_ROTATION |
boolean | false |
OpenCode-Executor: Bei einer 403/451-Antwort mit einer user_blocked-Ablehnung (nicht aufgrund der geografischen Position und nicht aufgrund einer Ablehnung des Cloudflare-Fingerprints) wird für das abgelehnte Konto eine Abkühlphase festgelegt und höchstens einmal pro Anfrage zum nächsten Konto gewechselt; eine zweite Ablehnung wird unverändert und ohne Erfolgsmarkierung zurückgegeben. Standardmäßig deaktiviert: Das Umgehen einer vorgelagerten Benutzersperre durch Routing kann wie eine Umgehungsmaßnahme wirken und die Kennzeichnung über die gesamte Flotte verbreiten. |
|
OPENCODE_TRANSIENT_FAILOVER_BACKOFF |
boolean | false |
OpenCode-Rotation: Nach zwei aufeinanderfolgenden vorübergehenden Fehlern des vorgelagerten Dienstes (5xx oder eine leere 400-Antwort) wird vor dem nächsten Konto pausiert — beginnend bei 1,5 s und sich mit jedem weiteren Fehler verdoppelnd, begrenzt auf 6 s pro Pause und 10 s pro Anfrage; bei einer Client-Trennung wird die Pause übersprungen. Der fehlerhafte Body wird vor dem Warten freigegeben. Standardmäßig deaktiviert: Das Failover erfolgt weiterhin sofort. | |
OPENCODE_PARK_AND_RESUME |
boolean | false |
OpenCode-Rotation: Die Anfrage wird nach wiederholten vorübergehenden 429-Antworten (oder einer neuen Markierung für eine hohe Pool-Auslastung) mit einem Heartbeat geparkt; anschließend wird ein begrenzter Durchlauf mit bis zu 3 aufeinanderfolgenden Konten wiederholt, anstatt die gesamte Flotte parallel anzufragen. Standardmäßig deaktiviert: Jede 429-Antwort führt genau wie bisher zum Wechsel auf das nächste Konto. | |
FLUSH_EMPTY_RETRY_ENABLED |
boolean | false |
Wenn bei übersetzten Streaming-Durchläufen der vorgelagerte Durchlauf keine nutzbaren Inhalte enthält (nur Reasoning-Abschluss oder keine wertvollen Chunks), werden über den normalen Anmeldeinformationspfad begrenzte Wiederholungsversuche ausgeführt (bis zu STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX), bevor dem Client irgendetwas bereitgestellt wird. Standardmäßig deaktiviert: Leere Durchläufe behalten das aktuelle Verhalten bei (leere 200-Antwort oder 502-Antwort aufgrund leerer Inhalte). |
|
OPENCODE_RATE_LIMITED_429_EARLY_STOP |
boolean | false |
OpenCode-Rotation: Die Kontenwelle wird bei der ersten 429-Antwort beendet, die als echte Ratenbegrenzung klassifiziert wurde (auswertbares Retry-After oder ein Body, der eine Raten- bzw. Nutzungsbegrenzung nennt), und diese vorgelagerte 429-Antwort wird unverändert zurückgegeben. Nicht klassifizierte 429-Antworten führen weiterhin zu einer Rotation. Standardmäßig deaktiviert: Die kostenlose Stufe ist pro ausgehender IP-Adresse begrenzt (#9611), daher führt jede 429-Antwort zu einer Rotation, und bei einer erschöpften Welle wird die letzte vorgelagerte 429-Antwort zurückgegeben. |
|
MITM_DISABLE_TLS_VERIFY |
boolean | false |
✓ | Deaktiviert die Überprüfung von TLS-Zertifikaten für den MITM-Proxy. Gefahr. |
OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS |
boolean | false |
Erlaubt Anbieter-URLs, die auf private/interne Netzwerke verweisen. | |
OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS |
boolean | true |
Erlaubt das Hinzufügen/Validieren von Anbietern unter lokalen/privaten Adressen (127.0.0.1, localhost, LAN). Standardmäßig aktiviert (Local-first); für eine strikte Beschränkung auf öffentliche Adressen deaktivieren. Cloud-Metadaten bleiben blockiert. | |
ENABLE_CC_COMPATIBLE_PROVIDER |
boolean | false |
✓ | Aktiviert den mit Claude Code kompatiblen Anbietermodus. |
Richtlinien (5)
Abschnitt betitelt „Richtlinien (5)“| Schlüssel | Typ | Standardwert | Beschreibung |
|---|---|---|---|
TOOL_POLICY_MODE |
enum | disabled |
Durchsetzungsmodus für Richtlinien zur Werkzeugnutzung. Werte: disabled, warn, block. |
RATE_LIMIT_AUTO_ENABLE |
boolean | false |
Aktiviert die Ratenbegrenzung automatisch auf Grundlage von Nutzungsmustern. |
DISABLE_CONTEXT_WINDOW_CHECKS |
boolean | false |
Überspringt die lokale Prüfung des Kontextfensters bzw. der maximalen Eingabe-Token durch OmniRoute bei direkten Anfragen an ein einzelnes Modell. Vorgelagerte Begrenzungen gelten weiterhin. |
CAPABILITY_FILTER_ENABLED |
boolean | false |
Lehnt Anfragen vor der Weiterleitung ab, wenn dem Zielmodell erforderliche Fähigkeiten fehlen (Bildverarbeitung, Werkzeuge, strukturierte Ausgabe, Kontextfenster). Schützt direkte Anfragen an einen einzelnen Anbieter, die den Kompatibilitätsfilter der Kombinationsschicht umgehen. |
RADAR_ENABLED |
boolean | false |
Aktiviert das OmniRoute-Radar-Modul (Katalog-Feed-Ansichten und Synchronisierung). Standardmäßig deaktiviert; die Aktivierung schaltet lediglich die Benutzeroberfläche frei — die Datensynchronisierung muss weiterhin separat aktiviert werden. |
Laufzeit (33)
Abschnitt betitelt „Laufzeit (33)“| Schlüssel | Typ | Standardwert | Neustart | Beschreibung |
|---|---|---|---|---|
UNIVERSAL_CONTEXT_HANDOFF_ENABLED |
boolean | true |
Erstellt und injiziert Zusammenfassungen von Unterhaltungen, wenn beim Combo-Routing das Modell gewechselt wird. Deaktivieren Sie diese Option, um Modellwechsel unabhängig voneinander zu behandeln und Hintergrundanfragen zur Kontextübergabe für alle bestehenden und zukünftigen Combos zu verhindern. | |
RESPONSES_PASSTHROUGH_DROP_COMMENTARY |
boolean | true |
Entfernt interne Ausgabeelemente der Kommentarphase aus Passthrough-Streams der Responses API, bevor sie an Clients weitergeleitet werden. Deaktivieren Sie diese Option, um unveränderte Kommentare vom Upstream zu erhalten. | |
OMNIROUTE_MCP_ENFORCE_SCOPES |
boolean | true |
Erzwingt Bereichsbeschränkungen für den Zugriff auf MCP-Tools. | |
OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS |
boolean | false |
Komprimiert Beschreibungen von MCP-Tools, um die Token-Nutzung zu reduzieren. | |
OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS |
boolean | false |
Aktiviert die Verarbeitung von Hintergrundaufgaben zur Laufzeit. | |
OMNIROUTE_DISABLE_BACKGROUND_SERVICES |
boolean | false |
✓ | Deaktiviert alle Hintergrunddienste (Kontingentaktualisierung, Synchronisierung usw.). |
OMNIROUTE_RTK_TRUST_PROJECT_FILTERS |
boolean | false |
RTK-Filter auf Projektebene ohne Validierung vertrauen. | |
OMNIROUTE_ENABLE_LIVE_WS |
boolean | true |
✓ | Den WebSocket-Server für das Echtzeit-Dashboard beim Import starten (standardmäßig Port 20132). |
OMNIROUTE_CODEX_WS_ENABLED |
boolean | true |
Codex die Verwendung des Responses-over-WebSocket-Transports erlauben. Wenn deaktiviert, greift Codex auf HTTP Responses zurück. | |
OMNIROUTE_CODEX_APP_SERVER_ENABLED |
boolean | true |
Codex die Verwendung des lokalen app-server-WebSocket-JSON-RPC-Transports (codexTransport=app-server) erlauben. Wenn deaktiviert, greifen Verbindungen, die app-server verwenden sollen, auf die anderen Transporte von Codex zurück. |
|
OMNIROUTE_EMERGENCY_FALLBACK |
boolean | true |
Anfragen mit ausgeschöpftem Budget an den kostenlosen Notfall-Fallback-Anbieter bzw. das entsprechende Modell weiterleiten. (Siehe Notfall-Fallback bei ausgeschöpftem Budget unten.) | |
STREAM_RECOVERY_ENABLED |
boolean | false |
Transparente frühzeitige Wiederholungsversuche für abgeschnittene vorgelagerte SSE-Streams aktivieren, bevor Antwort-Bytes den Client erreichen. | |
STREAM_RECOVERY_MIDSTREAM_ENABLED |
boolean | false |
Der Stream-Wiederherstellung erlauben, nach der Übertragung von Bytes an den Client eine Antwort erneut anzufordern und zusammenzufügen. | |
STREAM_RECOVERY_TOOLCALL_ORDER_FIX |
boolean | false |
Fortsetzungen während eines Streams für Tool-Aufrufe absichern: Einen unterbrochenen Stream niemals fortsetzen, sobald ein Tool-Aufruf ausgegeben wurde (noch in Bearbeitung oder bereits mit finish_reason tool_calls beendet), und nach einer leeren Fortsetzung schließen, statt das gesamte Budget aufzubrauchen. Deaktiviert: Release-Verhalten. |
|
STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED |
boolean | false |
Einmaliges Failover zu einer gleichgeordneten Verbindung, wenn ein SSE-Stream geschlossen wird, bevor ein verwertbarer Frame ausgegeben wurde, und der begrenzte Wiederholungsversuch über dieselbe Verbindung ausgeschöpft ist; ist keine verwendbare gleichgeordnete Verbindung verfügbar, wird der ursprüngliche STREAM_EARLY_EOF-502-Fehler zurückgegeben. Standardmäßig deaktiviert: Ein vorzeitiges EOF bleibt nach dem Wiederholungsversuch über dieselbe Verbindung endgültig. |
|
MODEL_CATALOG_INCLUDE_NAMES |
boolean | true |
Anzeigenfreundliche Namensfelder in /v1/models-Antworten einschließen. Für Clients deaktivieren, die nur Modell-IDs erwarten. |
|
MODELS_CATALOG_PREFIX_MODE |
enum | dual |
Steuert, wie Modell-IDs in /v1/models mit Präfixen versehen werden. ‘dual’ (Standard) gibt aus Gründen der Abwärtskompatibilität sowohl Alias- als auch kanonische Anbieter-ID-Präfixe aus. ‘alias’ gibt nur das kurze Alias-Präfix aus (z. B. ds-web/model, nicht deepseek-web/model). ‘canonical’ gibt nur das vollständige Anbieter-ID-Präfix aus. Werte: dual, alias, canonical. |
|
ARENA_ELO_SYNC_ENABLED |
boolean | true |
Regelmäßige ELO-Synchronisierung der Arena-AI-Bestenliste für Intelligenzranglisten von Modellen aktivieren. | |
EXPOSE_CC_DISCOVERY_ALIASES |
boolean | false |
claude/<provider>/<model>-Spiegel-IDs unter /v1/models veröffentlichen, damit die Modellerkennung des Claude-Code-Gateways auch Nicht-Claude-Modelle auflistet. Globale Ebene der dreistufigen Steuerung (die Umgebungsvariable hat Vorrang vor der Dashboard-Überschreibung). Siehe Claude-Code-Konfiguration. |
|
NO_THINKING_ALIAS_ENABLED |
boolean | true |
Hauptschalter für die Gateway-Aliasse no-think/<provider>/<model>. Aktiviert (Standard): /v1/models veröffentlicht für jedes geeignete, denkfähige Claude-Modell eine Variante ohne Denkprozess, und eine mit einer Anfrage gesendete no-think/-ID wird wieder dem tatsächlichen Modell zugeordnet, wobei die Schlussfolgerungsfunktion unterdrückt wird. Deaktiviert: Es werden keine Varianten veröffentlicht, und eine no-think/-ID wird wie jede andere unbekannte Modell-ID behandelt. Die modellspezifische Aktivierung bzw. Deaktivierung über ModelSpec.noThinkingAlias gilt weiterhin, solange diese Option aktiviert ist. | |
OMNIROUTE_DISABLE_THINKING_LEVEL_VARIANTS |
boolean | false |
Die Generierung von Denkstufenvarianten (z. B. -low, -medium, -high) im /v1/models-Katalog deaktivieren. | |
OMNIROUTE_CHAT_VIRTUAL_LANES |
boolean | false |
✓ | Adaptive virtuelle Zulassungsspuren pro Mandant für die Anbieterweiterleitung aktivieren (#9654): Eine Lastspitze eines Mandanten führt dann nicht mehr zu 503-Fehlern bei einem anderen. Die Umgebungsvariable OMNIROUTE_CHAT_VIRTUAL_LANES hat Vorrang vor dieser Dashboard-Überschreibung; Änderungen werden beim Neustart des Servers wirksam. |
EXPOSE_FUNCTIONAL_GATEWAY_MIRRORS |
boolean | false |
<gateway-alias>/<model>-Spiegel-IDs unter /v1/models für Modelle bekannt geben, deren kanonischer Eigentümer keine aktiven Anmeldedaten besitzt, die jedoch von einem Passthrough-Gateway mit aktiven Anmeldedaten weitergeleitet werden. Warnung: Fügt bei globaler Aktivierung Katalogeinträge für alle Clients hinzu. | |
NEWAPI_AGGREGATOR_BALANCE |
boolean | false |
Guthabenerkennung für mit New-API-/One-API-/Sub2API-Aggregatoren kompatible Knoten aktivieren. Wenn diese Option aktiviert ist, zeigen kompatible Knoten mit gesetztem Aggregator-Flag ihr Guthaben im Dashboard und beim Quoten-Preflight-Routing an. | |
SERVER_OWNED_TOOL_LOOP_ENABLED |
boolean | false |
Nicht streamende, serverseitig verwaltete Tool-Aufrufe fortsetzen, bis das Modell eine vom Client verwendbare Antwort zurückgibt. | |
SEARCH_STATS_HIDE_DELETED_CONNECTIONS |
boolean | false |
In Suchstatistiken und kürzlich durchgeführten Suchen nur Anbieter berücksichtigen, die noch über eine aktive Verbindung verfügen (schlüssellose Anbieter wie duckduckgo-free werden immer berücksichtigt). Bei deaktivierter Option wird jede gespeicherte Suchzeile mit einer Anbieter-ID beibehalten. | |
FREE_BADGE_REQUIRES_PROVIDER_FREE_TIER |
boolean | false |
Anbieter-Seiten im Dashboard: Das „Kostenlos“-Badge nur bei Signalen anzeigen, die vom Anbieter berücksichtigt werden – die Heuristik für Anzeigenamen, nicht boolesche Kostenlos-Felder und :free-Suffixe bei registrierten Anbietern ohne dokumentierte kostenlose Tarifstufe werden nicht mehr berücksichtigt. Bei deaktivierter Option bleibt die bisherige Badge-Regel erhalten. | |
RETRY_AFTER_PROVENANCE_ENABLED |
boolean | false |
Bei aggregierten 429-/503-Nichtverfügbarkeitsantworten Retry-After weglassen, wenn kein konkreter zukünftiger Zeitpunkt für einen erneuten Versuch bekannt ist (anstelle eines synthetischen Werts von 1 s), error.retry_after_provenance (signal | none) hinzufügen und Combo-Drain-Pfaden ermöglichen, textuelle Hinweise zu erneuten Versuchen aus JSON- und Klartext-Upstream-Antwortkörpern zu lesen. Das Feld erscheint nur in Antworten, die von unavailableResponse() erstellt wurden; andere 429-/503-Antwortkörper bleiben unverändert. |
|
PROTECTED_PRIORITY_INFRA_502_ENABLED |
boolean | false |
Wenn ein priority-Combo-Ziel, das als Ausweichziel nur bei erschöpfter Quote markiert ist, die Combo aus einem nachweislich nicht quotenbedingten Grund stoppt (offener Anbieter-Schutzschalter, vorausschauendes Überspringen aufgrund der Latenz), mit 502 statt mit der wie ein Quotenfehler wirkenden 503 antworten. Stopps aufgrund von Sperrung, Abklingzeit, Nichtverfügbarkeit, Erschöpfung und Parallelitätsbegrenzung verwenden weiterhin 503. |
|
MISTRAL_AMBIGUOUS_401_SOFT_LOCKOUT |
boolean | false |
Eine einfache Mistral-401-Antwort ({"detail":"Unauthorized"}, ohne explizites Authentifizierungssignal) ist bei einem widerrufenen Schlüssel und bei erschöpfter Quote identisch. Wenn diese Option aktiviert ist, wird die Verbindung in eine Abklingphase versetzt, anstatt sie als expired zu parken, und zwar höchstens dreimal pro Stunde und Verbindung; beim nächsten Auftreten wird sie geparkt, sodass ein widerrufener Schlüssel dennoch letztlich entsprechend behandelt wird. Standardmäßig deaktiviert: Jede einfache Mistral-401-Antwort parkt die Verbindung weiterhin wie bisher. |
|
XAI_OAUTH_LIVE_MODEL_DISCOVERY |
boolean | false |
Den Live-xAI-Modellkatalog für xai-oauth-Verbindungen mithilfe des OAuth-Bearer-Tokens von https://api.x.ai/v1/models abrufen, anstatt den unveränderlichen statischen Ausgangsbestand zu verwenden. Standardmäßig deaktiviert: xai-oauth stellt weiterhin unverändert den statischen Ausgangsbestand bereit. Bei jedem Auflösungsfehler greift die Erkennung auf den Ausgangsbestand zurück (es ist nicht verifiziert, ob x.ai an diesem Endpunkt einen OAuth-Bearer akzeptiert). |
|
BATCH_AND_FILE_AUTO_CLEANUP_ENABLED |
boolean | false |
Dem automatischen Bereinigungsdurchlauf erlauben, abgeschlossene (erfolgreich/fehlgeschlagen/abgebrochen/abgelaufen) Batch-API-Aufträge zu löschen, die älter als OMNIROUTE_BATCH_RETENTION_DAYS sind, einschließlich ihrer zeilenweisen Prüfpunkte, und den BLOB-Inhalt hochgeladener Dateien zu löschen, deren eigenes expires_at überschritten ist. Standardmäßig deaktiviert: Bei jeder bestehenden Installation bleiben diese Daten genau wie bisher erhalten, bis ein Betreiber die Funktion aktiviert. Die vom Betreiber ausgelöste Route DELETE /api/v1/batches/delete-completed bleibt davon in jedem Fall unberührt — sie ist ein separater, bedingungsloser öffentlicher API-Vertrag. |
|
ANTIGRAVITY_ACCOUNT_LEASE_ENABLED |
boolean | false |
Das ausgewählte Antigravity-Konto für den Streaming-Lebenszyklus der Anfrage reservieren, die es ausgewählt hat, sodass weder ein paralleler Wiederholungsversuch noch die Übergabe der Anmeldedaten ein Konto erneut auswählen kann, das bereits einem laufenden Stream zugewiesen ist. Die Reservierung ist auf (Verbindung, aufrufbares Upstream-Modell) begrenzt, sodass ein Konto weiterhin zwei verschiedene Modelle gleichzeitig bedienen kann. Wenn alle geeigneten Konten bereits für dieses Modell reserviert sind, gibt die Anfrage eine strukturierte 503-Antwort antigravity_pool_busy mit einem begrenzten Retry-After zurück, anstatt ein ausgelastetes Konto zusätzlich zu belasten. Standardmäßig deaktiviert: Die Kontoauswahl bleibt genau wie bisher, und es erfolgt keine Reservierung. |
CLI (5)
Abschnitt betitelt „CLI (5)“| Schlüssel | Typ | Standardwert | Neustart | Beschreibung |
|---|---|---|---|---|
CLI_COMPAT_ALL |
boolean | false |
✓ | Kompatibilitätsmodus für alle CLI-Clients aktivieren. |
MODEL_ALIAS_COMPAT_ENABLED |
boolean | false |
Kompatibilitätsschicht für Modellaliase aktivieren. | |
PRICING_SYNC_ENABLED |
boolean | false |
Automatische Synchronisierung der Preisdaten aktivieren (erfordert zusätzlich die Umgebungsvariable PRICING_SYNC_ENABLED). |
|
OMNIROUTE_AUTO_SYNC_CODEX_PROFILES |
boolean | false |
Nach einer Synchronisierung der Anbietermodelle automatisch die Profildateien ~/.codex/*.config.toml anhand des Live-Katalogs (neu) schreiben. Ändert niemals die aktive/standardmäßige Codex-Konfiguration. Standardmäßig deaktiviert. | |
OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES |
boolean | false |
Nach einer Synchronisierung der Anbietermodelle automatisch die Claude-Code-Profile unter ~/.claude/profiles/<name>/settings.json anhand des Live-Katalogs (neu) schreiben. Ändert niemals die aktive/standardmäßige Claude-Konfiguration. Standardmäßig deaktiviert. |
Systemzustand (5)
Abschnitt betitelt „Systemzustand (5)“| Schlüssel | Typ | Standardwert | Beschreibung |
|---|---|---|---|
OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK |
boolean | false |
Deaktiviert den Endpunkt für die Integritätsprüfung der lokalen Instanz. |
OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK |
boolean | false |
Deaktiviert die Integritätsprüfung der Token-Validierung. |
SKILLS_SANDBOX_NETWORK_ENABLED |
boolean | false |
Aktiviert den Netzwerkzugriff in der Skills-Sandbox-Umgebung. |
PROXY_HEALTH_BLOCKED_RESETS_STREAK |
boolean | false |
Bei der Proxy-Integritätsprüfung setzt eine vom Ziel abgelehnte Prüfung (401/403/429) die Serie aufeinanderfolgender Fehler des Proxys zurück. Standardmäßig deaktiviert: Eine Ablehnung bleibt neutral (#10654). Ein 5xx-Ergebnis bleibt in beiden Fällen nicht eindeutig; eine Ablehnung entfernt, deaktiviert oder reaktiviert niemals einen Proxy. |
DB_HEALTHCHECK_STARTUP_DEFERRED_ENABLED |
boolean | false |
Führt die Integritäts-/Zustandsprüfung der DB beim Start erst aus, nachdem der Server Anfragen akzeptiert (über setImmediate), anstatt den Start bis zum Abschluss zu blockieren (#13717). Standardmäßig deaktiviert: Der Start wird genauso wie vor diesem PR blockiert. |
[!NOTE]
INPUT_SANITIZER_BLOCK_THRESHOLDund der zugehörige Legacy-AliasINJECTION_GUARD_BLOCK_THRESHOLDkonfigurieren den ModusblockvonINJECTION_GUARD_MODE, sind jedoch einfache Umgebungsvariablen, die vonsrc/shared/utils/injectionSeverity.tsgelesen werden, und keine Feature-Flags: Sie können weder über die DB überschrieben noch im Dashboard umgeschaltet werden. SieheENVIRONMENT.md.
[!NOTE] Die Spalte
Restartkennzeichnet Flags mitrequiresRestart: true— der Wert wird sofort gespeichert, tritt jedoch erst nach dem Neustart des Prozesses in Kraft. Enum- Flags lehnen alle Werte außerhalb der zulässigen Menge ab (serverseitig sowohl insetFeatureFlagOverride()als auch im REST-Handler fürPUTvalidiert).
Flags umschalten
Abschnitt betitelt „Flags umschalten“Dashboard
Abschnitt betitelt „Dashboard“Navigieren Sie zu Dashboard → Einstellungen → Feature-Flags
(/dashboard/settings/feature-flags). Das Raster
(src/app/(dashboard)/dashboard/settings/components/FeatureFlagsGrid.tsx)
unterstützt:
- Suche nach Schlüssel oder Beschreibung und Filterung nach Kategorie (sowie eine synthetische Ansicht Neustart erforderlich).
- Einen Umschalter für boolesche Flags und ein Dropdown-Menü für Enum-Flags
(
src/app/(dashboard)/dashboard/settings/components/FeatureFlagCard.tsx). - Ein Quell-Badge pro Flag —
DB,ENVoderDEF—, das anzeigt, woher der effektive Wert stammt. - Eine Schaltfläche Zurücksetzen (wird nur für Flags aus der Quelle
DBangezeigt), um die Überschreibung zu entfernen, sowie die Schaltfläche Alle Überschreibungen zurücksetzen am unteren Rand. - Ein Banner Server neu starten, wenn ein Flag mit
requiresRestartgeändert wird.
REST-API
Abschnitt betitelt „REST-API“Alle Vorgänge laufen über eine einzige Route:
src/app/api/settings/feature-flags/route.ts.
Jede Methode erfordert eine authentifizierte Dashboard-Sitzung (andernfalls 401).
GET /api/settings/feature-flags
Abschnitt betitelt „GET /api/settings/feature-flags“Gibt jedes Flag mit seinem effektiven Wert, seiner Quelle und einer Zusammenfassung zurück.
{ "flags": [ { "key": "REQUIRE_API_KEY", "label": "API-Schlüssel erforderlich", "description": "Einen API-Schlüssel für alle eingehenden Anfragen verlangen", "category": "security", "type": "boolean", "enumValues": null, "defaultValue": "false", "effectiveValue": "false", "source": "default", // "db" | "env" | "default" "requiresRestart": false, "warningLevel": "caution", }, // ... alle 77 Flags ], "summary": { "total": 56, "active": 0, "inactive": 0, "overriddenByDb": 0, "overriddenByEnv": 0, },}PUT /api/settings/feature-flags
Abschnitt betitelt „PUT /api/settings/feature-flags“Legt eine einzelne Überschreibung fest oder entfernt sie. Body: { key: string; value?: string }.
Wird value weggelassen, wird die Überschreibung entfernt (wodurch der Umgebungs- bzw. Standardwert wiederhergestellt wird).
# Eine DB-Überschreibung festlegencurl -X PUT http://localhost:20128/api/settings/feature-flags \ -H "Content-Type: application/json" \ -d '{"key":"REQUIRE_API_KEY","value":"true"}'
# Die Überschreibung entfernen (ohne "value")curl -X PUT http://localhost:20128/api/settings/feature-flags \ -H "Content-Type: application/json" \ -d '{"key":"REQUIRE_API_KEY"}'Die Antwort gibt den neuen effectiveValue/die neue source, den previousValue/
die previousSource sowie requiresRestart zurück. Unbekannte Schlüssel und Enum-Werte
außerhalb des zulässigen Bereichs werden mit 400 abgelehnt.
DELETE /api/settings/feature-flags
Abschnitt betitelt „DELETE /api/settings/feature-flags“Entfernt alle DB-Überschreibungen auf einmal und setzt jedes Flag auf seinen Umgebungs- bzw. Standardwert
zurück. Gibt { cleared: <count>, message: "..." } zurück.
[!NOTE] Flags mit
requiresRestart: truewerden erst nach einem Neustart des Prozesses wirksam. Der Neustartablauf des Dashboards ruftPOST /api/restartauf und fragt anschließendGET /api/health/pingab, bis der Server wieder verfügbar ist.
Notfall-Fallback für Budgets
Abschnitt betitelt „Notfall-Fallback für Budgets“OMNIROUTE_EMERGENCY_FALLBACK (Kategorie runtime, Standardwert true) steuert den
kostenlosen Notfall-Fallback-Pfad in
open-sse/services/emergencyFallback.ts.
Wenn diese Option aktiviert ist, werden Anfragen, die ihr Budget ausgeschöpft haben, an einen kostenlosen Fallback-
Anbieter bzw. ein kostenloses Fallback-Modell weitergeleitet, anstatt vollständig fehlzuschlagen. Setzen Sie den Wert auf false (oder 0) — über den
Dashboard-Umschalter, eine DB-Überschreibung oder die Umgebungsvariable OMNIROUTE_EMERGENCY_FALLBACK
—, um dieses Verhalten zu deaktivieren und Anfragen mit ausgeschöpftem Budget
fehlschlagen zu lassen. (In den PRs #3741 / #3752 als Dashboard-Umschalter bereitgestellt.)
Siehe auch
Abschnitt betitelt „Siehe auch“- Referenz der Umgebungsvariablen — für die meisten Flags ist dort eine gleichnamige Umgebungsvariable dokumentiert (die DB-Überschreibung hat Vorrang vor ihr).
src/shared/constants/featureFlagDefinitions.ts— maßgebliche Quelle für jedes Flag.src/shared/utils/featureFlags.ts— Auflösungslogik (resolveFeatureFlag,isFeatureFlagEnabled,resolveAllFeatureFlags).src/lib/db/featureFlags.ts— Persistierung der DB-Überschreibungen im Namensraumfeature_flagsder Tabellekey_value.
HagiCode
HagiCode ist ein agentischer Coding-Arbeitsplatz mit strukturierten Workflows, Multi-Agent-Ausführung und Hero-Dungeon-Ansichten.
Mit einem intelligenteren, schnelleren und unterhaltsameren agentischen Workflow wird aus Ideen nutzbare Software.

- SmartStrukturierte Workflows machen aus Absichten einen umsetzbaren Weg von der Idee bis zur Auslieferung.
- EfficientMulti-Agent-Workflows führen Recherche, Umsetzung und Prüfung parallel aus.
- FunHero Dungeon macht lange Coding-Sitzungen anschaulich und gemeinschaftlich.