Aller au contenu
OmniRoute source

Feature Flags (Français)

Un indicateur de fonctionnalité est un paramètre nommé (booléen ou énumération) dont la valeur peut être modifiée lors de l’exécution et conservée dans la base de données, sans nécessiter le redéploiement du processus. Chaque indicateur est décrit par un FeatureFlagDefinition comprenant une key, un label, une description, une category, une defaultValue, un type et une indication requiresRestart.

La valeur effective d’un indicateur est résolue par resolveFeatureFlag() selon l’ordre de priorité suivant (la priorité la plus élevée l’emporte) :

  1. Remplacement en base de données — une valeur stockée dans la table key_value sous l’espace de noms feature_flags (définie via le tableau de bord ou l’API REST).
  2. Variable d’environnement — process.env[<KEY>], si elle est définie et non vide.
  3. Valeur par défaut de la définition — la defaultValue provenant de featureFlagDefinitions.ts.

Un indicateur booléen est considéré comme activé lorsque sa valeur effective est "true", "1" ou "yes" (voir isFeatureFlagEnabled()).

[!NOTE] La plupart des indicateurs disposent également d’une variable d’environnement correspondante portant le même nom, documentée dans ENVIRONMENT.md. Le remplacement en base de données de l’indicateur est prioritaire sur cette variable d’environnement. Un indicateur avec requiresRestart: true est conservé immédiatement, mais n’est relu qu’au démarrage du processus — son basculement affiche une bannière « Redémarrer le serveur » dans le tableau de bord.


77 drapeaux répartis en 6 catégories. La valeur par défaut est la définition par défaut — la valeur utilisée lorsqu’aucune surcharge de la base de données ni aucune variable d’environnement n’est présente.

Clé Type Par défaut Description
REQUIRE_API_KEY boolean false Exiger une clé API pour toutes les requêtes entrantes.
INPUT_SANITIZER_ENABLED boolean true Activer la désinfection des entrées pour toutes les requêtes.
INJECTION_GUARD_MODE enum off Mode de protection contre l’injection de prompt. Valeurs : off, warn, block, redact.
PII_REDACTION_ENABLED boolean false Masquer les informations personnelles identifiables (PII) des requêtes (indépendamment de INPUT_SANITIZER_MODE).
PII_RESPONSE_SANITIZATION boolean false Désinfecter les informations personnelles identifiables (PII) des réponses du fournisseur.
PII_RESPONSE_SANITIZATION_MODE enum redact Mode de désinfection des réponses PII. Valeurs : redact, warn, block, off.
OUTBOUND_SSRF_GUARD_ENABLED boolean true Bloquer les requêtes sortantes vers les plages d’adresses IP privées/internes.
ALLOW_API_KEY_REVEAL boolean false Permettre aux utilisateurs authentifiés du tableau de bord de révéler les clés API stockées au lieu de ne voir que les valeurs masquées.
AUTH_LOG_INCLUDE_ACCOUNT_ID boolean false Inclure le préfixe du compte dans les lignes de journal AUTH (par exemple, “Utilisation du compte <fournisseur> : abc12345…”). Désactivé par défaut afin que les identifiants de compte soient masqués des journaux de processus partagés/multi-locataires. Indépendant du mode débogage ; l’activation du mode débogage ne révèle pas cela.
OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN boolean false Lorsque OIDC est activé, désactiver la connexion par mot de passe afin que les utilisateurs ne puissent s’authentifier que via l’authentification unique OIDC. Lorsqu’il est désactivé (par défaut), la connexion par mot de passe et OIDC sont tous deux disponibles.
Key Type Default Restart Description
ENABLE_TLS_FINGERPRINT boolean false ✓ Active le mode furtif d’empreinte TLS.
AUDIO_REMOTE_PROVIDER_NODES boolean false Permet aux routes /v1/audio/* d’utiliser des nœuds de fournisseur compatibles OpenAI hébergés en dehors de localhost. Désactivé par défaut — le routage audio vers un hôte distant modifie l’identité de sortie et doit être une décision explicite de l’opérateur. Les nœuds de bouclage sont toujours autorisés et non affectés.
RERANK_REMOTE_PROVIDER_NODES boolean false Permet à POST /v1/rerank (et à l’étape de reranking en bouclage du moteur de mémoire) d’utiliser des nœuds de fournisseur compatibles OpenAI hébergés en dehors de localhost. Désactivé par défaut — le routage vers un hôte distant modifie l’identité de sortie et doit être une décision explicite de l’opérateur. Les nœuds de bouclage sont toujours autorisés ; les nœuds distants doivent également respecter la politique d’URL sortante du fournisseur.
PROXY_AUTO_SELECT_ENABLED boolean false Lorsqu’aucun proxy n’est attribué à une connexion, sélectionne automatiquement le premier proxy fonctionnel du registre. Désactivé par défaut (sinon, tout proxy du registre devient un mécanisme de secours global — #3332).
OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK boolean false Permet aux flux OAuth et de validation de fournisseur de contourner un proxy épinglé et de se connecter directement lorsque les vérifications préalables d’accessibilité du proxy échouent. Désactivé par défaut car cela peut modifier l’adresse IP de sortie.
NETWORK_ROTATION_SHARED_EGRESS_GUARD boolean true En cas d’exception réseau (délai d’attente, connexion refusée/réinitialisée) pour un exécuteur de rotation multi-comptes, lorsque le compte défaillant n’a pas de proxy dédié, applique un court délai de récupération et ignore les autres comptes sans proxy pour le reste de la requête au lieu de réessayer chacun d’eux. Activé par défaut (sûr : pas de changement d’IP de sortie, réduit seulement la latence/le risque de délai de récupération sur les comptes à sortie partagée). Désactiver pour restaurer la propagation immédiate dès la première erreur sans proxy.
ROTATION_ATTRIBUTION boolean false La rotation Opencode enregistre quel compte a servi ou a été ignoré (uniquement les identifiants masqués, jamais les identifiants de compte complets) et lie les entrées de journal de proxy à leur requête, afin que l’opérateur puisse distinguer les comptes ignorés des comptes inutilisés. Désactivé par défaut.
PROXY_SKIP_RECENTLY_FAILED boolean false Les pools de proxy et la rotation par compte d’opencode cessent de réutiliser un proxy qui vient d’échouer (sonde TCP refusée, ou un 429 reçu via celui-ci) pendant une période par processus qui double à chaque répétition, jusqu’à un plafond. Aucun statut de proxy n’est écrit ; à chaque candidat mis de côté, le choix reste inchangé. Désactivé par défaut.
PROXY_POOL_EGRESS_OBSERVATION boolean false Affiche, sous un pool de proxy dans le tableau de bord, combien d’adresses IP de sortie observées ont servi ses membres au cours des dernières 24 heures et combien de connexions les ont utilisées. En lecture seule, calculé à partir du journal du proxy, jamais utilisé pour le routage. Désactivé par défaut.
OPENCODE_RESPONSES_STALL_ROTATION boolean false Pour l’exécuteur OpenCode, surveille le premier octet du corps d’une réponse Responses en streaming (fenêtre : RESPONSES_FIRST_BYTE_TIMEOUT_MS, par défaut 15000). Un flux Responses 2xx qui reste silencieux au-delà de la fenêtre est considéré comme bloqué : le compte est mis en pause et la requête passe au compte suivant une seule fois ; un second blocage échoue rapidement. Désactivé par défaut : les flux bloqués conservent l’attente actuelle jusqu’au délai d’expiration de la préparation du flux.
OPENCODE_USER_BLOCKED_ROTATION boolean false Exécuteur OpenCode : en cas de refus 403/451 indiquant un user_blocked (pas de géo, pas de rejet d’empreinte Cloudflare), met en pause le compte refusé et passe au compte suivant au maximum une fois par requête ; un second refus est renvoyé tel quel, sans marque de succès. Désactivé par défaut : contourner un blocage utilisateur en amont peut ressembler à de l’évasion et propager le signal à travers la flotte.
OPENCODE_TRANSIENT_FAILOVER_BACKOFF boolean false Rotation OpenCode : après deux échecs transitoires consécutifs en amont (5xx ou un 400 vide), met en pause avant le compte suivant — 1,5s doublant à chaque échec supplémentaire, plafonné à 6s par pause et 10s par requête, ignoré en cas de déconnexion du client ; le corps échoué est libéré avant l’attente. Désactivé par défaut : le basculement reste immédiat.
OPENCODE_PARK_AND_RESUME boolean false Rotation OpenCode : met la requête en attente après des 429 transitoires répétés (ou un nouveau marqueur de surcharge de pool) avec un battement de cœur, puis rejoue une étape limitée de jusqu’à 3 comptes séquentiels au lieu de distribuer à toute la flotte. Désactivé par défaut : chaque 429 passe au compte suivant exactement comme avant.
FLUSH_EMPTY_RETRY_ENABLED boolean false Lors des tours de streaming traduits, lorsque le tour en amont ne contient aucun contenu utilisable (complétion de raisonnement uniquement ou zéro bloc de valeur), effectue des tentatives limitées via le chemin d’authentification normal (jusqu’à STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX) avant que quoi que ce soit ne soit exposé au client. Désactivé par défaut : les tours vides conservent le comportement actuel (200 vide ou 502 sans contenu).
OPENCODE_RATE_LIMITED_429_EARLY_STOP boolean false Rotation OpenCode : arrête la vague de comptes au premier 429 classé comme une véritable limite de débit (en-tête Retry-After analysable, ou un corps nommant une limite de débit/d’utilisation) et renvoie ce 429 amont inchangé. Les 429 non classés continuent de tourner. Désactivé par défaut : le niveau gratuit est limité par IP de sortie (#9611), donc chaque 429 tourne et une vague épuisée renvoie le dernier 429 amont.
MITM_DISABLE_TLS_VERIFY boolean false ✓ Désactive la vérification du certificat TLS pour le proxy MITM. Danger.
OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS boolean false Autorise les URL de fournisseurs pointant vers des réseaux privés/internes.
OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS boolean true Autorise l’ajout/la validation de fournisseurs sur des adresses locales/privées (127.0.0.1, localhost, LAN). Activé par défaut (priorité locale) ; désactiver pour un blocage strict uniquement public. Les métadonnées cloud restent bloquées.
ENABLE_CC_COMPATIBLE_PROVIDER boolean false ✓ Active le mode fournisseur compatible Claude Code.
Key Type Default Description
TOOL_POLICY_MODE enum disabled Mode d’application de la politique d’utilisation des outils. Valeurs : disabled, warn, block.
RATE_LIMIT_AUTO_ENABLE boolean false Active automatiquement la limitation de débit en fonction des modèles d’utilisation.
DISABLE_CONTEXT_WINDOW_CHECKS boolean false Ignore la vérification locale de la fenêtre de contexte / du nombre maximal de jetons d’entrée d’OmniRoute pour les requêtes directes à modèle unique. Les limites en amont s’appliquent toujours.
CAPABILITY_FILTER_ENABLED boolean false Rejette les requêtes avant l’envoi si le modèle cible ne dispose pas des capacités requises (vision, outils, sortie structurée, fenêtre de contexte). Protège les requêtes directes à fournisseur unique qui contournent le filtre de compatibilité de la couche combo.
RADAR_ENABLED boolean false Active le module OmniRoute Radar (écrans de flux de catalogue et synchronisation). Désactivé par défaut ; l’activation ne fait que déverrouiller l’interface utilisateur — la synchronisation des données reste une option distincte.
Key Type Default Restart Description
UNIVERSAL_CONTEXT_HANDOFF_ENABLED boolean true Génère et injecte des résumés de conversation lorsque le routage combiné change de modèle. Désactivez pour traiter les changements de modèle indépendamment et empêcher les requêtes de transfert en arrière-plan pour toutes les combinaisons existantes et futures.
RESPONSES_PASSTHROUGH_DROP_COMMENTARY boolean true Supprime les éléments de sortie de la phase de commentaire interne des flux de transmission de l’API Responses avant de les transférer aux clients. Désactivez pour recevoir les commentaires bruts en amont.
OMNIROUTE_MCP_ENFORCE_SCOPES boolean true Applique les restrictions de portée sur l’accès aux outils MCP.
OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS boolean false Compresse les descriptions des outils MCP pour réduire l’utilisation des jetons.
OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS boolean false Active le traitement des tâches en arrière-plan à l’exécution.
OMNIROUTE_DISABLE_BACKGROUND_SERVICES boolean false ✓ Désactive tous les services en arrière-plan (actualisation des quotas, synchronisation, etc.).
OMNIROUTE_RTK_TRUST_PROJECT_FILTERS boolean false Fait confiance aux filtres RTK au niveau du projet sans validation.
OMNIROUTE_ENABLE_LIVE_WS boolean true ✓ Démarre le serveur WebSocket du tableau de bord en temps réel lors de l’importation (port 20132 par défaut).
OMNIROUTE_CODEX_WS_ENABLED boolean true Permet à Codex d’utiliser le transport Réponses-sur-WebSocket. Si désactivé, Codex utilise les Réponses HTTP.
OMNIROUTE_CODEX_APP_SERVER_ENABLED boolean true Permet à Codex d’utiliser le transport JSON-RPC WebSocket du serveur d’applications local (codexTransport=app-server). Si désactivé, les connexions optant pour app-server reviennent aux autres transports de Codex.
OMNIROUTE_EMERGENCY_FALLBACK boolean true Acheminer les requêtes dont le budget est épuisé vers le fournisseur/modèle de secours gratuit d’urgence. (Voir Secours d’urgence en cas de budget ci-dessous.)
STREAM_RECOVERY_ENABLED boolean false Active la nouvelle tentative anticipée transparente pour les flux SSE en amont tronqués avant que les octets de réponse n’atteignent le client.
STREAM_RECOVERY_MIDSTREAM_ENABLED boolean false Permet à la récupération de flux de redemander et de reconstituer une réponse après que les octets ont déjà atteint le client.
STREAM_RECOVERY_TOOLCALL_ORDER_FIX boolean false Rend la continuation en milieu de flux sûre pour les appels d’outils : ne jamais reprendre un flux coupé une fois qu’un appel d’outil a été émis (en cours ou déjà terminé avec finish_reason tool_calls), et fermer après une continuation vide au lieu de dépenser tout le budget. Désactivé : comportement de publication.
STREAM_EARLY_EOF_SIBLING_FAILOVER_ENABLED boolean false Bascule une fois vers une connexion sœur lorsqu’un flux SSE se ferme avant d’émettre une trame utile et que la tentative de nouvelle connexion bornée sur la même connexion est épuisée ; sans sœur utilisable, le STREAM_EARLY_EOF 502 original est renvoyé. Désactivé par défaut : le early-EOF reste terminal après la nouvelle tentative sur la même connexion.
MODEL_CATALOG_INCLUDE_NAMES boolean true Inclut des champs de nom conviviaux dans les réponses /v1/models. Désactivez pour les clients qui n’attendent que des ID de modèle.
MODELS_CATALOG_PREFIX_MODE enum dual Contrôle la façon dont les ID de modèle sont préfixés dans /v1/models. dual (par défaut) émet à la fois les préfixes d’alias et d’ID de fournisseur canoniques pour la rétrocompatibilité. alias n’émet que le préfixe d’alias court (par exemple, ds-web/model, pas deepseek-web/model). canonical n’émet que le préfixe d’ID de fournisseur complet. Valeurs : dual, alias, canonical.
ARENA_ELO_SYNC_ENABLED boolean true Active la synchronisation périodique ELO du classement Arena AI pour les classements d’intelligence des modèles.
EXPOSE_CC_DISCOVERY_ALIASES boolean false Annonce les ID miroirs claude/&lt;provider&gt;/&lt;model&gt; sur /v1/models afin que la découverte de modèles de la passerelle Claude Code liste les modèles non-Claude. Niveau global de la porte à trois niveaux (l’environnement l’emporte sur la surcharge du tableau de bord). Voir configuration de Claude Code.
NO_THINKING_ALIAS_ENABLED boolean true Interrupteur principal pour les alias de passerelle no-think/&lt;provider&gt;/&lt;model&gt;. Activé (par défaut) : /v1/models annonce une variante no-thinking pour chaque modèle Claude éligible capable de penser, et un ID no-think/ envoyé sur une requête se résout en le modèle réel avec le raisonnement supprimé. Désactivé : aucune variante n’est annoncée et un ID no-think/ est traité comme tout autre ID de modèle inconnu. L’option ModelSpec.noThinkingAlias par modèle (opt-in/opt-out) s’applique toujours lorsque cette option est activée.
OMNIROUTE_DISABLE_THINKING_LEVEL_VARIANTS boolean false Désactive la génération de variantes de niveau de réflexion (par exemple, -low, -medium, -high) dans le catalogue /v1/models.
OMNIROUTE_CHAT_VIRTUAL_LANES boolean false ✓ Active les voies d’admission virtuelles adaptatives par locataire pour la répartition des fournisseurs (#9654) : la rafale d’un locataire ne provoque plus de 503 pour un autre. La variable d’environnement OMNIROUTE_CHAT_VIRTUAL_LANES l’emporte sur cette surcharge du tableau de bord ; les modifications prennent effet au redémarrage du serveur.
EXPOSE_FUNCTIONAL_GATEWAY_MIRRORS boolean false Annonce les identifiants miroirs &lt;gateway-alias&gt;/&lt;model&gt; sur /v1/models pour les modèles dont le propriétaire canonique n’a pas d’identifiant actif mais qu’une passerelle de type passthrough avec un identifiant actif les route. Avertissement : ajoute des entrées de catalogue pour tous les clients lorsqu’activé globalement.
NEWAPI_AGGREGATOR_BALANCE boolean false Active la détection de solde pour les nœuds compatibles avec les agrégateurs New-API / One-API / Sub2API. Lorsqu’activé, les nœuds compatibles avec le drapeau agrégateur défini rapporteront leur solde dans le tableau de bord et le routage de pré-vérification des quotas (quota-preflight).
SERVER_OWNED_TOOL_LOOP_ENABLED boolean false Continue les appels d’outils appartenant au serveur (non-streaming) jusqu’à ce que le modèle renvoie une réponse utilisable par le client.
SEARCH_STATS_HIDE_DELETED_CONNECTIONS boolean false Les statistiques de recherche et les recherches récentes ne comptent que les fournisseurs ayant encore une connexion active (les fournisseurs sans clé comme duckduckgo-free comptent toujours). Désactivé conserve chaque ligne de recherche retenue avec un identifiant de fournisseur.
FREE_BADGE_REQUIRES_PROVIDER_FREE_TIER boolean false Pages des fournisseurs du tableau de bord : affiche le badge Free uniquement sur les signaux honorés par le fournisseur — abandonne l’heuristique du nom d’affichage, les champs free non-booléens et les suffixes :free sur les fournisseurs enregistrés sans niveau gratuit documenté. Désactivé conserve la règle historique du badge.
RETRY_AFTER_PROVENANCE_ENABLED boolean false Sur les réponses d’indisponibilité 429/503 agrégées, omet Retry-After lorsqu’aucun temps de nouvelle tentative futur concret n’est connu (au lieu d’une valeur synthétique de 1s), ajoute error.retry_after_provenance (signal | none), et permet aux chemins de drainage combo de lire les indices de nouvelle tentative en prose à partir des corps JSON et texte brut en amont. Le champ n’apparaît que sur les réponses construites par unavailableResponse(); les autres corps 429/503 restent inchangés.
PROTECTED_PRIORITY_INFRA_502_ENABLED boolean false Lorsqu’une cible combo priority marquée fallback-only-on-quota-exhaustion arrête le combo pour une cause qui n’est manifestement pas liée au quota (disjoncteur du fournisseur ouvert, saut par latence prédictive), répond par une 502 au lieu de la 503 ressemblant à un quota. Les arrêts pour verrouillage, refroidissement, indisponibilité, épuisement et limite de concurrence conservent la 503.
MISTRAL_AMBIGUOUS_401_SOFT_LOCKOUT boolean false Une erreur Mistral 401 brute ({"detail":"Unauthorized"}, sans signal d’authentification explicite) est identique pour une clé révoquée et pour un quota épuisé. Lorsqu’activé, cela met la connexion en refroidissement au lieu de la marquer comme expired, au maximum 3 fois par heure et par connexion ; la suivante la parque, de sorte qu’une clé révoquée finit toujours par converger. Désactivé par défaut : chaque 401 Mistral brute parque la connexion comme auparavant.
XAI_OAUTH_LIVE_MODEL_DISCOVERY boolean false Récupère le catalogue de modèles xAI en direct pour les connexions xai-oauth depuis https://api.x.ai/v1/models en utilisant le jeton porteur OAuth, au lieu de la graine statique figée. Désactivé par défaut : xai-oauth continue de servir la graine statique inchangée. En cas d’erreur de résolution, la découverte revient à la graine (non vérifié si x.ai accepte un jeton porteur OAuth à ce point de terminaison).
BATCH_AND_FILE_AUTO_CLEANUP_ENABLED boolean false Permet au balayage de nettoyage automatique de supprimer les tâches d’API Batch terminées (achevées/échouées/annulées/expirées) plus anciennes que OMNIROUTE_BATCH_RETENTION_DAYS, ainsi que leurs points de contrôle par ligne, et d’effacer le contenu BLOB des fichiers téléchargés après leur expires_at. Désactivé par défaut : chaque installation existante conserve ces données exactement comme avant jusqu’à ce qu’un opérateur l’active. La route DELETE /api/v1/batches/delete-completed déclenchée par l’opérateur n’est pas affectée dans les deux cas — il s’agit d’un contrat d’API public distinct et inconditionnel.
ANTIGRAVITY_ACCOUNT_LEASE_ENABLED boolean false Réserve le compte Antigravity sélectionné pour le cycle de vie de streaming de la requête qui l’a choisi, de sorte qu’une nouvelle tentative concurrente ou le transfert d’informations d’identification ne puisse pas choisir un compte déjà engagé dans un flux en cours. La réservation est limitée à (connexion, modèle amont appelable), de sorte qu’un compte peut toujours servir deux modèles différents simultanément. Lorsque tous les comptes éligibles sont déjà loués pour ce modèle, la requête renvoie un 503 structuré antigravity_pool_busy avec un Retry-After borné au lieu de s’accumuler sur un compte occupé. Désactivé par défaut : la sélection de compte reste exactement la même qu’avant, et aucune réservation n’est effectuée.
Key Type Default Restart Description
CLI_COMPAT_ALL boolean false ✓ Active le mode de compatibilité pour tous les clients CLI.
MODEL_ALIAS_COMPAT_ENABLED boolean false Active la couche de compatibilité des alias de modèle.
PRICING_SYNC_ENABLED boolean false Active la synchronisation automatique des données de tarification (nécessite également la variable d’environnement PRICING_SYNC_ENABLED).
OMNIROUTE_AUTO_SYNC_CODEX_PROFILES boolean false Après une synchronisation de modèle de fournisseur, (ré)écrit automatiquement les fichiers de profil ~/.codex/*.config.toml à partir du catalogue en direct. Ne modifie jamais la configuration Codex active/par défaut. Désactivé par défaut.
OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES boolean false Après une synchronisation de modèle de fournisseur, (ré)écrit automatiquement les fichiers de profil Claude Code ~/.claude/profiles/<name>/settings.json à partir du catalogue en direct. Ne modifie jamais la configuration Claude active/par défaut. Désactivé par défaut.
Clé Type Par défaut Description
OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK boolean false Désactive le point de terminaison de vérification de l’état (health check) de l’instance locale.
OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK boolean false Désactive la vérification de l’état de la validation des jetons.
SKILLS_SANDBOX_NETWORK_ENABLED boolean false Active l’accès réseau dans l’environnement sandbox des skills.
PROXY_HEALTH_BLOCKED_RESETS_STREAK boolean false Lors du balayage de l’état du proxy, une sonde refusée par la cible (401/403/429) réinitialise la série d’échecs consécutifs du proxy. Désactivé par défaut : un refus reste neutre (#10654). Une erreur 5xx reste non concluante dans les deux cas ; un refus ne supprime, ne désactive ni ne réactive jamais un proxy.
DB_HEALTHCHECK_STARTUP_DEFERRED_ENABLED boolean false Exécute la vérification d’intégrité/d’état de la base de données au démarrage après que le serveur a commencé à accepter les requêtes (via setImmediate) au lieu de bloquer le démarrage jusqu’à ce qu’elle soit terminée (#13717). Désactivé par défaut : le démarrage bloque exactement comme avant cette PR.

[!NOTE] INPUT_SANITIZER_BLOCK_THRESHOLD et son alias hérité INJECTION_GUARD_BLOCK_THRESHOLD ajustent le mode block de INJECTION_GUARD_MODE, mais ce sont de simples variables d’environnement lues par src/shared/utils/injectionSeverity.ts, et non des feature flags : ils n’ont pas de surcharge en base de données ni de bouton d’activation dans le tableau de bord. Voir ENVIRONMENT.md.

[!NOTE] La colonne Restart marque les drapeaux avec requiresRestart: true — la valeur est persistée instantanément mais ne prend effet qu’après le redémarrage du processus. Les drapeaux de type Enum rejettent toute valeur en dehors de leur ensemble autorisé (validé côté serveur à la fois dans setFeatureFlagOverride() et dans le gestionnaire REST PUT).


Accédez à Tableau de bord → Paramètres → Drapeaux de fonctionnalités (/dashboard/settings/feature-flags). La grille (src/app/(dashboard)/dashboard/settings/components/FeatureFlagsGrid.tsx) prend en charge :

  • La recherche par clé ou description, et le filtrage par catégorie (plus une vue synthétique Nécessite un redémarrage).
  • Un interrupteur pour les drapeaux booléens et une liste déroulante pour les drapeaux énumérés (src/app/(dashboard)/dashboard/settings/components/FeatureFlagCard.tsx).
  • Un badge de source par drapeau — DB, ENV, ou DEF — indiquant d’où provient la valeur effective.
  • Un bouton Réinitialiser (affiché uniquement pour les drapeaux provenant de DB) pour annuler la surcharge, et un bouton Réinitialiser toutes les surcharges en bas.
  • Une bannière Redémarrer le serveur lorsqu’un drapeau requiresRestart est modifié.

Toutes les opérations passent par une seule route : src/app/api/settings/feature-flags/route.ts. Chaque méthode nécessite une session de tableau de bord authentifiée (401 sinon).

Renvoie chaque drapeau avec sa valeur effective, sa source et un résumé.

{
"flags": [
{
"key": "REQUIRE_API_KEY",
"label": "Require API Key",
"description": "Require an API key for all incoming requests",
"category": "security",
"type": "boolean",
"enumValues": null,
"defaultValue": "false",
"effectiveValue": "false",
"source": "default", // "db" | "env" | "default"
"requiresRestart": false,
"warningLevel": "caution",
},
// ... all 77 flags
],
"summary": {
"total": 56,
"active": 0,
"inactive": 0,
"overriddenByDb": 0,
"overriddenByEnv": 0,
},
}

Définit ou supprime une seule surcharge. Corps : { key: string; value?: string }. Omettre value supprime la surcharge (restaurer l’environnement / la valeur par défaut).

Fenêtre de terminal
# Set a DB override
curl -X PUT http://localhost:20128/api/settings/feature-flags \
-H "Content-Type: application/json" \
-d '{"key":"REQUIRE_API_KEY","value":"true"}'
# Remove the override (no "value")
curl -X PUT http://localhost:20128/api/settings/feature-flags \
-H "Content-Type: application/json" \
-d '{"key":"REQUIRE_API_KEY"}'

La réponse renvoie la nouvelle effectiveValue/source, la previousValue/ previousSource, et requiresRestart. Les clés inconnues et les valeurs d’énumération hors limites sont rejetées avec 400.

Efface toutes les surcharges de la base de données en une seule fois, restaurant chaque drapeau à sa valeur d’environnement / par défaut. Renvoie { cleared: &lt;count&gt;, message: "..." }.

[!NOTE] Les drapeaux avec requiresRestart: true ne prennent effet qu’après un rechargement du processus. Le flux de redémarrage du tableau de bord appelle POST /api/restart puis interroge GET /api/health/ping jusqu’à ce que le serveur soit de nouveau opérationnel.


Solution de repli d’urgence en cas d’épuisement du budget

Section intitulée « Solution de repli d’urgence en cas d’épuisement du budget »

OMNIROUTE_EMERGENCY_FALLBACK (catégorie runtime, valeur par défaut true) contrôle le mécanisme de repli gratuit d’urgence dans open-sse/services/emergencyFallback.ts. Lorsqu’il est activé, les requêtes qui épuisent leur budget sont acheminées vers un fournisseur/modèle de repli gratuit au lieu d’échouer purement et simplement. Définissez-le sur false (ou 0) — via le bouton d’activation/désactivation du tableau de bord, une valeur de remplacement dans la DB ou la variable d’environnement OMNIROUTE_EMERGENCY_FALLBACK — pour désactiver ce comportement et laisser échouer les requêtes dont le budget est épuisé. (Présenté sous forme de bouton d’activation/désactivation dans le tableau de bord dans les PR #3741 / #3752.)



Code source d’OmniRoute (a58000c7685f)

HagiCode

HagiCode est un espace de développement agentique qui associe workflows structurés, exécution multi-agent et vues Hero Dungeon.

Transformez vos idées en logiciels utiles grâce à un workflow agentique plus intelligent, rapide et agréable.

Interface principale de HagiCode en thème clair
  • SmartDes workflows structurés transforment une intention en parcours exécutable, de l’idée à la livraison.
  • EfficientLes workflows multi-agents font avancer recherche, réalisation et revue en parallèle.
  • FunHero Dungeon rend les longues sessions de code plus visuelles et collaboratives.
Visiter HagiCode