Version 1.0.0
Variables d'environnement de la passerelle
Toutes les variables que la passerelle lit : obligation, valeur par défaut, profil concerné et effet.
Interne, peut changer sans préavis. Ce que décrit cette page relève de l’exploitation d’un déploiement, pas du contrat que la passerelle offre à un programme tiers. L’éditeur ne s’y engage pas : ces noms peuvent changer d’une version à l’autre, sans étape de dépréciation. Un changement se manifeste alors au démarrage ou à la mise à jour, par un message qui nomme ce qui manque.
La partie sur laquelle l’éditeur s’engage est le relais.
Toutes les variables que la passerelle lit sont ici. Une variable absente de cette page n’est lue par aucun de ses modules.
Aucune valeur n’est publiée, y compris en exemple. La colonne « Secret » dit lesquelles portent un secret ; leur valeur vit dans le gestionnaire de secrets du déploiement, jamais dans une documentation ni dans un fichier du dépôt.
La colonne « Profil » distingue les deux façons dont le produit est livré : le déploiement que le client héberge lui-même, et celui que l’éditeur opère. Voir Profils de déploiement.
Toutes les variables
Section intitulée « Toutes les variables »| Nom | Obligatoire | Défaut | Secret | Profil | Effet |
|---|---|---|---|---|---|
DATABASE_URL | oui | aucun | oui | les deux | La base PostgreSQL que la passerelle interroge. Sans elle, la passerelle refuse de démarrer plutôt que de supposer une base locale : une supposition masquerait une configuration absente. Le paramètre sslmode y est refusé : la validation du certificat est posée par le code, pas par l’URL. |
DATABASE_CA_CERT_PATH | non | aucun | non | les deux | Chemin de l’autorité de certification à présenter pour valider le certificat de la base. Sans elle, la validation reste active et s’appuie sur les autorités du système. Un chemin illisible arrête le démarrage. Ne se pose pas en même temps que DATABASE_CA_CERT. |
DATABASE_CA_CERT | non | aucun | non | les deux | Le contenu PEM de cette même autorité, pour les plateformes qui ne savent passer que des variables d’environnement et n’offrent aucun disque où monter un fichier. Même effet que DATABASE_CA_CERT_PATH, dont c’est la seconde entrée et non un second mécanisme : une valeur qui ne porte pas de certificat arrête le démarrage, et les deux variables posées ensemble aussi, parce que rien ne dirait laquelle fait foi. Le certificat d’une autorité est public : ce n’est pas un secret. |
DATABASE_TLS_SERVER_NAME | non | aucun | non | opéré par l’éditeur | Le nom contre lequel le certificat de la base est vérifié quand DATABASE_URL joint la base par son adresse IP, typiquement une adresse de réseau privé, alors que le certificat porte un nom DNS. La vérification reste entière : seul le nom comparé change. Une valeur qui est une adresse IP, qui n’a pas la forme d’un nom d’hôte, ou posée alors que DATABASE_URL nomme déjà la base par un nom arrête le démarrage. Offre hébergée seulement : un artefact on-premise refuse de démarrer si elle est posée. |
PORT | non | 6001 | non | les deux | Le port d’écoute. Une valeur qui n’est pas un nombre ramène au défaut. |
TLS_CERT_FILE | non | aucun | non | les deux | Chemin du certificat de service. Posé avec la clé, la passerelle termine elle-même le chiffrement du transport ; sans les deux, elle sert en clair et l’annonce au démarrage. Un seul des deux arrête le démarrage : aucune configuration incomplète ne retombe sur le clair. |
TLS_KEY_FILE | non | aucun | oui | les deux | Chemin de la clé privée du certificat de service. Va toujours avec TLS_CERT_FILE. |
UPSTREAM_TLS_CLIENT_CERT_FILE | non | aucun | non | les deux | Chemin du certificat client que la passerelle présente au moteur d’inférence quand celui-ci est joint en https. Sans lui, la sortie se fait sans certificat client. |
UPSTREAM_TLS_CLIENT_KEY_FILE | non | aucun | oui | les deux | Chemin de la clé privée du certificat client sortant. Va toujours avec le certificat. |
UPSTREAM_TLS_CA_FILE | non | aucun | non | les deux | Chemin de l’autorité de certification qui valide le certificat du moteur d’inférence. Utile quand le moteur porte un certificat émis par une autorité interne. |
HTTPS_PROXY | non | aucun | non | les deux | Le proxy d’entreprise par lequel la passerelle sort en https. Déclaré comme une URL complète ; un hôte et un port seuls sont refusés au démarrage. À défaut, HTTP_PROXY s’applique aussi aux cibles https, comme le veut la convention Unix. |
HTTP_PROXY | non | aucun | non | les deux | Le proxy d’entreprise par lequel la passerelle sort en http, et le repli des cibles https quand HTTPS_PROXY n’est pas posé. Une URL dont le protocole n’est ni http ni https arrête le démarrage. |
NO_PROXY | non | aucun | non | les deux | Les motifs d’hôtes joints sans passer par le proxy, séparés par des virgules. C’est par là qu’un moteur d’inférence hébergé sur le réseau interne échappe au proxy d’entreprise. |
NODE_EXTRA_CA_CERTS | non | aucun | non | les deux | Chemin du magasin d’autorités internes, celui qu’exige un proxy d’entreprise qui déchiffre le trafic. Lu au démarrage pour qu’un fichier illisible soit un refus de démarrage : Node, lui, se contente d’un avertissement et démarre quand même. |
REQUEST_TIMEOUT_SECONDS | non | 1800 | non | les deux | Le nombre de secondes au bout desquelles le transport coupe une requête en cours. C’est un filet de sécurité placé bien au-delà de la durée maximale d’une commande d’agent : une valeur qui repasserait sous cette durée arrête le démarrage. |
OIDC_ISSUER | non | aucun | non | déploiement client | L’émetteur de l’annuaire d’entreprise auquel la passerelle délègue l’authentification : une URL absolue en https, sans requête ni fragment. Sans elle et sans OIDC_CLIENT_ID, une passerelle en déploiement client n’authentifie personne et refuse toutes les requêtes. |
OIDC_CLIENT_ID | non | aucun | non | déploiement client | L’identifiant de client OAuth 2 de la passerelle auprès de l’annuaire. Une configuration à moitié posée (l’un des deux sans l’autre) refuse tout et le dit au journal de l’exploitant. |
OIDC_CLIENT_SECRET | non | aucun | oui | déploiement client | Le secret client, à ne poser que si l’annuaire exige un client confidentiel. Là où PKCE suffit, ne pas en détenir est préférable. |
OIDC_AUDIENCE | non | la valeur d'OIDC_CLIENT_ID | non | déploiement client | L’audience attendue dans le jeton présenté. |
OIDC_REDIRECT_URI | non | aucun | non | déploiement client | L’adresse de retour du flux d’autorisation, quand un flux de connexion est servi. |
ADMIN_API_KEY | oui | aucun | oui | opéré par l’éditeur | La clé du compte d’administration amorcé au démarrage. Propre au profil opéré par l’éditeur : en déploiement client, les identités viennent de l’annuaire et cette variable n’existe pas dans l’artefact livré. |
LEMNISCATE_LICENSE | non | aucun | oui | déploiement client | La licence du déploiement elle-même, en base64. Elle porte le nom du client, la date d’expiration, le nombre de sièges et les capacités licenciées, le tout signé : la passerelle en vérifie la signature au démarrage. Elle prend le pas sur LEMNISCATE_LICENSE_FILE quand les deux sont posées. Absente, la passerelle démarre et le dit au journal de l’exploitant : aucune requête n’est alors mesurée contre des sièges ni des capacités, le contrôle commercial propre à la passerelle étant un mécanisme distinct, encore à construire. Posée mais invalide, elle arrête le démarrage en nommant la cause : personne ne pose une licence par accident. Propre au déploiement client : le profil opéré par l’éditeur ne connaît pas de licence, ses limites commerciales passant par la facturation. |
LEMNISCATE_LICENSE_FILE | non | aucun | non | déploiement client | Le chemin d’un fichier qui contient cette même licence, pour les exploitants qui montent un secret sur disque plutôt que de le poser dans l’environnement. Même effet que LEMNISCATE_LICENSE, dont c’est la seconde entrée et non un second mécanisme. Un chemin illisible arrête le démarrage en nommant le fichier, plutôt que de faire comme si aucune licence n’avait été fournie. |
LEMNISCATE_AGENT_EXECUTION_LAUNCHER | non | aucun | non | les deux | Le lanceur de commandes d’agent que la passerelle offre. Cette version n’en offre aucun : rien d’écrit est le défaut et la seule valeur acceptée, et toute valeur (direct comprise, retirée le 2026-08-06) arrête le démarrage en disant pourquoi. Les commandes de l’agent s’exécutent dans le conteneur par session, jamais dans la passerelle : celle-ci porte les clés des fournisseurs d’inférence et l’accès à la base, et son profil de durcissement ne lui accorde d’écriture nulle part. |
PATH | non | aucun | non | les deux | Recopiée telle quelle vers les processus que le lanceur d’agent démarre. La liste des variables transmises est blanche et fermée : ce qui n’y figure pas ne franchit pas la frontière. |
LANG | non | aucun | non | les deux | Recopiée telle quelle vers les processus que le lanceur d’agent démarre. |
LC_ALL | non | aucun | non | les deux | Recopiée telle quelle vers les processus que le lanceur d’agent démarre. |
TZ | non | aucun | non | les deux | Recopiée telle quelle vers les processus que le lanceur d’agent démarre. |
LEMNISCATE_DOCS_DIR | non | aucun | non | les deux | Le répertoire où l’archive de documentation livrée avec le serveur a été dépliée. Rien d’écrit veut dire : aucune documentation servie, ce qui est le défaut. Posée, la passerelle lit lemniscate.json à la racine de ce répertoire et sert l’arborescence sous la base que ce fichier déclare : une archive n’est utilisable que sous le chemin pour lequel elle a été construite. Un répertoire absent, une archive incomplète ou une archive gelée pour un autre chemin arrêtent le démarrage plutôt que de devenir « aucune documentation ». |
CONTROL_PLANE_ORGANIZATION | oui | aucun | non | les deux | L’organisation dont cette passerelle sert la politique aux postes. Sans elle, la passerelle refuse de démarrer plutôt que de supposer une organisation : une supposition la ferait répondre « rien n’est restreint » à tout un parc, sans que rien n’ait l’air cassé. Le nom attendu est celui inscrit en base, celui que le poste reçoit sous orgSlug. |
Les orthographes également acceptées
Section intitulée « Les orthographes également acceptées »La convention Unix veut qu’un même réglage se pose en majuscules ou en minuscules. La passerelle lit les deux, et retient la première déclarée dans cet ordre.
| Nom | Également lu sous |
|---|---|
HTTPS_PROXY | https_proxy |
HTTP_PROXY | http_proxy |
NO_PROXY | no_proxy |
Une variable dont le nom n’est pas écrit dans le produit
Section intitulée « Une variable dont le nom n’est pas écrit dans le produit »la clé du fournisseur : Le nom de cette variable n’est pas écrit dans le code : c’est l’exploitant qui le choisit, en déclarant son fournisseur dans la console d’administration. La passerelle lit la variable ainsi nommée pour injecter la clé du fournisseur dans la requête sortante. Absente, elle rend un refus 500 qui nomme la variable attendue.
Ce que cette page ne couvre pas
Section intitulée « Ce que cette page ne couvre pas »Les variables que la passerelle recopie vers les processus d’agent qu’elle lance sont dans le tableau ci-dessus, avec leur effet. La liste est blanche et fermée : ce qui n’y figure pas ne franchit pas cette frontière.
Les variables de la console d’administration sont un autre jeu, décrit avec elle. Les deux
composants lisent la même base, et n’ont pas pour autant la même configuration : par
exemple, la passerelle refuse de démarrer sans DATABASE_URL là où la console retombe sur
une base de développement locale.