Toutes les pages
Sur cette page

config.json

config.json est le fichier de configuration propre au relais : son port, qui peut le joindre, le token d’accès, les minuteurs qui décident quand un turn compte comme bloqué, et les tunnels et la preview lane, facultatifs. oar setup le crée. Vous le modifiez à la main pour tout ce que setup ne demande pas.

La plupart de ce que vous réglez dans l’interface web n’est pas dans ce fichier. Voir Réglages de l’interface web et environnement.

Où se trouve le fichier #

Installation Chemin
Installation globale sous macOS, Linux et WSL ~/.oar/config.json
Installation globale sous Windows %APPDATA%\oar\config.json
Installation globale avec OAR_STATE_ROOT défini config.json dans ce dossier
Checkout git server/config.json dans le checkout

OAR_STATE_ROOT déplace tout le dossier d’état d’une installation globale (config, données et journaux) ; voir Où OAR garde ses fichiers.

COPILOT_WEB_RELAY_CONFIG pointe le relais vers un fichier précis, où qu’il soit, mais seulement quand le relais est démarré sans le lanceur propre à oar : node server/server.js, ou oar copilot (quand le fichier existe). oar setup, oar start, oar restart et le service utilisent toujours le config.json propre à l’installation, quoi que dise la variable. Dans un checkout sans server/config.json, oar copilot crée son fichier dans ~/.config/copilot-remote à la place (%LOCALAPPDATA%\copilot-remote sous Windows). Voir Variables d’environnement.

Le relais garde le fichier lisible par son seul propriétaire (mode 0600 sous macOS et Linux), parce qu’il contient le token d’accès en clair. Traitez-en une copie comme un mot de passe.

Qui l’écrit #

  • oar setup écrit le token, localhostOnly et port, et garde toutes les autres clés telles qu’il les trouve. Un fichier qu’il crée, ou auquel elles manquent, reçoit aussi pollIntervalMs, processingTimeoutMs (600000) et conversationSessionMode. Voir oar setup et premier lancement.
  • Le relais écrit cliBinaries quand vous installez ou mettez à jour une CLI de fournisseur depuis Settings (Réglages). Il ne modifie que cette clé. S’il ne peut pas lire le fichier comme du JSON, il refuse d’écrire et garde l’association pour le processus en cours seulement.
  • Le relais crée le fichier quand aucun n’existe au démarrage, avec un authToken vide, le port 3333, localhostOnly: true, pollIntervalMs et conversationSessionMode. Il retire aussi une clé features restée d’anciennes versions (voir Clés obsolètes, ignorées et internes).
  • Vous, dans n’importe quel éditeur de texte.

Le modifier à la main #

Le fichier est un seul objet JSON. Les clés que vous omettez prennent leur valeur par défaut, et un bloc imbriqué comme previews est lu en entier. Modifiez-le, puis redémarrez le relais : le relais lit le fichier une seule fois, au démarrage. Rien de ce que tient un relais en cours ne change quand vous enregistrez le fichier. Redémarrez avec oar restart (installations globales), ou avec 🌄 Restart web relay (Redémarrer le relais web) dans le menu ⋯ d’une conversation.

  • Une clé inconnue est ignorée et conservée. Setup et les écritures propres au relais la laissent en place.
  • Un JSON non valide n’arrête pas le relais. Il journalise Failed to read config.json, using defaults. et tourne avec les valeurs par défaut : port 3333, cette machine uniquement, et un token aléatoire, nouveau à chaque démarrage et affiché dans le journal. Votre token enregistré ne fonctionne plus tant que vous n’avez pas corrigé le fichier. Un second lecteur, celui qui choisit le dossier de données, se rabat sur le dossier par défaut. Le relais ne touche pas au fichier cassé.
  • Une valeur erronée est traitée clé par clé. Les valeurs par défaut ci-dessous sont ce qu’utilise le relais quand un minuteur ou une limite manque ou est inutilisable. Les tunnels et la preview lane restent désactivés et journalisent la raison ; le relais lui-même continue de tourner.
  • La ligne de commande l’emporte sur le fichier le temps d’une exécution : --token <value> et --port <number> sur node server/server.js (oar copilot les transmet aussi ; oar start non) remplacent authToken et port et ne sont jamais enregistrés dans le fichier. Un --port qui n’est pas un nombre de 1 à 65535 est ignoré avec un avertissement.

N’exécutez pas oar setup sur un fichier qui n’est pas du JSON valide

oar setup traite un fichier qu’il ne peut pas analyser comme absent. Il écrit alors un nouveau config.json par-dessus, avec un nouveau token, et toutes les autres clés de l’ancien fichier sont perdues. Corrigez d’abord le JSON. Gardez une copie d’un fichier que vous modifiez à la main.

Réseau et accès #

Clé Type Par défaut Ce qu’elle fait
authToken chaîne aucun : un token aléatoire à chaque démarrage Le token avec lequel chaque navigateur, worker et client d’API se connecte. S’il est vide, le relais en crée un aléatoire à chaque démarrage, l’affiche dans son journal et ne l’enregistre pas. oar setup en écrit un stable.
port nombre 3333 Le port HTTP et WebSocket, un entier de 1 à 65535.
localhostOnly booléen true true lie le relais à 127.0.0.1, si bien que seule cette machine le joint. Toute autre valeur, y compris false, null, 1 et "yes", le lie à toutes les interfaces (0.0.0.0), si bien que votre LAN peut le joindre. Seuls true et le texte "true" (toute casse) comptent comme activé ; la valeur par défaut ne s’applique que si la clé manque. N’affecte pas les tunnels ci-dessous.
remotePath chaîne "" Un préfixe de chemin, quand un proxy inverse sert le relais sous un sous-chemin, par exemple /oar. Une barre oblique initiale est ajoutée et les barres obliques finales sont retirées. Le relais retire le préfixe des requêtes entrantes, et le met dans le chemin du cookie de connexion, dans le chemin du socket et dans les adresses des fichiers et des liens partagés.
trustProxy valeur trust proxy d’Express "loopback" Quels proxys peuvent définir les en-têtes X-Forwarded-* auxquels le relais se fie. L’adresse du client (limites de débit, verrouillage de connexion, journal d’accès du partage) ainsi que l’hôte et le schéma des nouveaux liens de partage sont lus à travers elle ; un client direct ne peut donc pas les falsifier. La valeur par défaut convient à un proxy ou à un tunnel sur la même machine. Utilisez un nombre de sauts (1), une adresse ou un sous-réseau ("10.0.0.0/8"), ou une liste de ces valeurs quand un proxy sur un autre hôte transmet au relais (Proxy inverse).
allowedOrigins tableau de chaînes [] Ajouté en 0.9.11 Des origines de navigateur supplémentaires (schéma, hôte, et un port autre que celui par défaut, comme "https://relay.example.com") que la connexion Socket.IO en direct accepte en plus de celle du relais. Nécessaire pour un proxy qui réécrit l’en-tête Host. Voir Proxy inverse.
publicHostnames tableau de chaînes [] Les noms d’hôte qui joignent le relais lui-même. La preview lane refuse un previews.publicBaseUrl sur l’un d’eux (ainsi que localhost et 127.0.0.1), pour qu’une app en aperçu ne partage jamais un cookie de connexion avec le relais.
tunnelMarkerHeaders tableau de chaînes [] Des noms d’en-têtes supplémentaires que la périphérie d’un tunnel ajoute au trafic. Une requête qui porte cf-ray ou l’un de ces en-têtes ne peut pas atteindre les chemins des workers de session (les sockets qu’utilisent les workers de vos propres agents, qui ne tournent que sur cette machine). cf-ray est toujours dans la liste. Une chaîne séparée par des virgules fonctionne aussi. Les noms de la variable d’environnement COPILOT_TUNNEL_MARKER_HEADERS (séparés par des virgules) s’ajoutent à ceux-ci ; une liste vide ici ne les désactive pas.
pushVapidSubject chaîne mailto:copilot-remote@example.com L’adresse de contact que le relais envoie aux services push avec les requêtes Web Push (notifications). Mettez-y une adresse mailto: à vous.
sharedPresenceMaxPerConversation nombre 200 Nombre maximal de lecteurs en direct comptés pour un lien de conversation partagée. Au moins 1. Quand il est atteint, le lecteur inactif depuis le plus longtemps est retiré pour faire de la place.
sharedPresenceMaxGlobal nombre 5000 Nombre maximal de lecteurs de liens partagés en direct comptés au total, même règle. Jamais inférieur à la limite par conversation.

Pour la première connexion, le token et l’accès LAN, voir premier lancement.

Turns et minuteurs #

Clé Type Par défaut Ce qu’elle fait
processingTimeoutMs nombre, ms 600000 Combien de temps un turn peut rester sans signe de vie de son worker avant que le relais le remette dans la queue. Ce n’est pas une limite de durée d’un turn. Une valeur inférieure ou égale à 0 utilise la valeur par défaut. Voir Quand un turn est bloqué.
maxRequeueRetries nombre 5 Combien de fois un même message peut être tenté avant d’échouer définitivement. Au moins 1. Voir Remise en queue.
contextIndicatorMode "default" ou "bar" "default" Comment la zone de saisie montre le remplissage du contexte, par une ligne le long de son bord supérieur. default est une ligne sur toute la largeur dont la couleur passe du vert au rouge à mesure que le contexte se remplit. bar est la même ligne, qui grandit depuis la gauche jusqu’à la part du contexte utilisée. Toute autre valeur, dans n’importe quelle casse, vaut default.

La durée maximale d’un turn, le délai des tâches de fond et les surveillances de blocage ne sont pas ici : voir Quand un turn est bloqué.

Redémarrages et arrêt #

Ces clés règlent le redémarrage planifié du relais (🌄 Restart web relay). Voir Redémarrages et reprise. Chaque minuteur prend des millisecondes ; une valeur inférieure ou égale à 0, ou qui n’est pas un nombre, utilise la valeur par défaut.

Clé Type Par défaut Ce qu’elle fait
restartShutdownTimeoutMs nombre, ms 45000 Combien de temps un redémarrage attend que le turn en cours se termine avant d’abandonner avec un échec shutdown-timeout.
restartGracefulTimeoutMs nombre, ms 8000 Combien de temps le relais attend un arrêt propre avant de forcer le redémarrage.
restartSpawnTimeoutMs nombre, ms 18000 Combien de temps une tentative attend la phase de redémarrage ou de reprise avant de compter comme échouée (spawn-timeout).
restartRebindTimeoutMs nombre, ms 20000 Combien de temps une tentative attend que les sessions se reconnectent après le redémarrage (rebind-timeout).
restartReadyCooldownMs nombre, ms 1000 Combien de temps la queue reste en pause juste après qu’un redémarrage a signalé qu’il était prêt.
restartMaxAttempts nombre 3 Combien de tentatives un redémarrage a avant d’être définitif. Au moins 1.
restartRetryBackoffMs tableau de nombres, ms [1000, 3000, 7000] L’attente avant les tentatives 2, 3 et ainsi de suite. Quand il y a plus de tentatives que d’entrées, la dernière entrée se répète. Les entrées qui ne sont pas des nombres positifs sont écartées ; un résultat vide utilise la valeur par défaut.

Mémoire Ajouté en 0.9.19 #

Clé Type Par défaut Ce qu’elle fait
heapLimitMb nombre, Mo 60 % de la RAM, de 2 048 à 8 192 La limite de heap du relais, un nombre entier d’au moins 512. Toutes les façons de démarrer le relais la lisent : oar start, le service systemd, le démarrage automatique de Windows et l’extension de la CLI. Elle s’applique au démarrage suivant. Une valeur qui n’est pas un nombre entier d’au moins 512 est ignorée avec une ligne dans le journal ; une valeur au-dessus de la RAM de la machine, ou de la limite de mémoire d’un conteneur, est ramenée à cette valeur. Un --max-old-space-size dans NODE_OPTIONS, ou sur la ligne de commande node qui démarre server.js, l’emporte. Voir Le relais a manqué de mémoire.

Workspace et données #

Clé Type Par défaut Ce qu’elle fait
workspaceRootAllowList tableau de chaînes non définie Les dossiers absolus dans lesquels les conversations peuvent démarrer, avec tout ce qu’ils contiennent. Non définie ou vide, elle autorise tout dossier existant. Une entrée qui n’est pas un dossier existant est journalisée et écartée. La variable d’environnement COPILOT_WORKSPACE_ROOT_ALLOW_LIST l’emporte quand elle est définie. Voir Limiter où les chats peuvent démarrer.
dataDir chaîne data/ à côté du serveur L’emplacement de la base de données et du fichier de verrou du relais, et Ajouté en 0.9.17 de deepseek-claude, l’état Claude Code des chats DeepSeek. Un chemin relatif part du dossier qui contient config.json. Les fichiers envoyés le suivent, dans uploads/ à l’intérieur ; seul un relais sur le data/ par défaut à côté du serveur, sans COPILOT_WEB_RELAY_DATA_DIR, les garde dans uploads/ à côté du serveur. COPILOT_WEB_RELAY_DATA_DIR l’emporte quand elle est définie. oar start, oar restart et le service systemd Linux la définissent toujours (sur ~/.oar/data, %APPDATA%\oar\data ou votre propre valeur) ; pour un relais démarré ainsi, cette clé n’a donc aucun effet. Elle sert à un checkout démarré directement. Le lanceur de démarrage Windows ne fixe que le fichier de config, pas cette variable.

CLI des fournisseurs #

Clé Type Par défaut Ce qu’elle fait
cliBinaries objet écrite par le relais Les chemins des CLI de fournisseurs, par fournisseur : claude et grok. Le relais l’écrit quand une installation depuis Settings résout un chemin, et l’utilise au démarrage suivant pour retrouver le même programme. Vous pouvez définir un chemin à la main. Une entrée qui n’est pas un fichier exécutable est journalisée et ignorée. Les autres noms, copilot compris, ne sont pas utilisés.
sdkPath chaîne détecté Chemin du index.js du SDK Copilot. La recherche d’une CLI Copilot installée n’est sautée que si sdkPath et cliPath sont tous deux définis. Même définie seule, elle indique aussi au relais où chercher le fichier de démarrage du moteur d’extension : dans le même dossier que ce fichier du SDK.
cliPath chaîne détecté Chemin du point d’entrée runtime de la CLI Copilot (app.js). Utilisé avec sdkPath. Le relais le passe aussi aux workers Copilot qu’il démarre comme programme CLI, sauf si l’environnement en désigne déjà un.
sdkVersion chaîne la plus récente trouvée Une version exacte, comme 1.0.63. La recherche d’une CLI Copilot installée n’accepte alors que cette version. Ignorée quand sdkPath et cliPath sont tous deux définis.

Ces clés comptent là où le relais parle lui-même à la CLI Copilot installée, par exemple pour importer des sessions Copilot existantes et pour lister les modèles. La recherche explore le cache des paquets de la CLI Copilot (COPILOT_PKG_DIR ajoute un dossier à explorer en premier). Voir GitHub Copilot.

Aperçus #

Le bloc previews active la preview lane : un second écouteur, sur son propre port et son propre nom d’hôte, qui publie des serveurs de dev et des dossiers locaux. La mise en place, les noms d’hôte et le proxy frontal sont décrits sur la page de l’outil preview.

Clé Type Par défaut Ce qu’elle fait
previews.enabled booléen false Active la lane. Seul true compte.
previews.port nombre port du relais + 1 Le port de l’écouteur des aperçus. Au moins 1024, et pas le port du relais ; 0 choisit un port libre à chaque démarrage.
previews.bindHost chaîne 127.0.0.1 L’adresse sur laquelle l’écouteur se lie. Une adresse qui n’est pas une adresse de bouclage exige previews.allowPublicBind.
previews.allowPublicBind booléen false Autorise un previews.bindHost qui n’est pas une adresse de bouclage. Chaque aperçu est alors joignable depuis le réseau sans le proxy frontal.
previews.publicBaseUrl chaîne aucune L’adresse publique http(s) de la lane. Obligatoire quand les aperçus sont activés. Son nom d’hôte doit différer de celui du relais (voir publicHostnames). Une barre oblique finale est retirée.
previews.allowedTargetHosts tableau de chaînes [] Les hôtes, en plus de cette machine, vers lesquels un aperçu de port peut pointer, comme l’adresse d’un conteneur ou d’une VM.
previews.maxLive nombre 8 Nombre maximal d’aperçus simultanés pour tout le relais. Une valeur qui n’est pas un entier positif utilise 8.

Si l’une de ces règles échoue alors que les aperçus sont activés, le relais journalise PREVIEW LANE disabled avec la raison, laisse la lane désactivée et continue de tourner.

Ces variables d’environnement remplacent les clés correspondantes : COPILOT_PREVIEWS_ENABLED (1, true, 0, false), COPILOT_PREVIEWS_PORT, COPILOT_PREVIEWS_BIND_HOST, COPILOT_PREVIEWS_PUBLIC_BASE_URL et COPILOT_PREVIEWS_ALLOWED_TARGET_HOSTS (séparés par des virgules).

Tunnels #

Deux tunnels peuvent joindre le relais depuis l’extérieur de votre réseau. Ils sont indépendants et peuvent tourner en même temps. Les deux sont désactivés par défaut, et un tunnel géré auquel il manque une valeur obligatoire reste désactivé et journalise pourquoi.

sshTunnel #

Un tunnel SSH inverse vers un serveur à vous. Voir Tunnel SSH.

Clé Type Par défaut Ce qu’elle fait
sshTunnel.mode "disabled" ou "managed" "disabled" managed fait que le relais lance et relance le tunnel.
sshTunnel.required booléen false Tant que le tunnel géré n’est pas connecté, y compris avant sa première connexion et quand une valeur obligatoire manque, le relais cesse de prendre des messages dans la queue.
sshTunnel.user chaîne aucun L’utilisateur SSH sur le serveur. Obligatoire en mode géré.
sshTunnel.host chaîne aucun Le nom d’hôte ou l’adresse du serveur. Obligatoire en mode géré.
sshTunnel.remotePort nombre aucun Le port qui s’ouvre sur le serveur (1 à 65535). Obligatoire en mode géré.
sshTunnel.remoteBind "loopback" ou "public" "loopback" Si le port distant est ouvert seulement sur le serveur lui-même ou sur toutes ses interfaces. Indépendant de localhostOnly.
sshTunnel.command chaîne ssh Le programme SSH. Utilisez un nom présent dans le PATH ou un chemin absolu : un chemin relatif part du dossier du programme du relais.
sshTunnel.identityFile chaîne aucun La clé privée à utiliser ; ~ est développé. Sans elle, SSH utilise son agent ou ses clés par défaut.
sshTunnel.autoReclaimPort booléen true Quand le port distant est déjà pris, lancer un nettoyage sur le serveur et réessayer. Seul false le désactive.
sshTunnel.reclaimStaleSshSessions booléen false Dans le cadre de ce nettoyage, terminer aussi vos propres sessions SSH sur le serveur qui n’exécutent rien.
sshTunnel.remoteCleanupCommand chaîne intégrée Votre propre commande de nettoyage, à exécuter sur le serveur à la place de celle intégrée.

cloudflaredTunnel #

Lance cloudflared de Cloudflare, que vous installez vous-même ; OAR n’en fournit pas. Voir Cloudflare Tunnel.

Clé Type Par défaut Ce qu’elle fait
cloudflaredTunnel.mode "disabled" ou "managed" "disabled" managed fait que le relais lance cloudflared. COPILOT_CLOUDFLARED_MODE le remplace.
cloudflaredTunnel.required booléen false Tant que le tunnel géré n’est pas connecté, y compris quand une valeur obligatoire manque, le relais cesse de prendre des messages dans la queue.
cloudflaredTunnel.token chaîne aucun Le token de votre propre tunnel Cloudflare. Obligatoire en mode géré. COPILOT_CLOUDFLARED_TOKEN le remplace.
cloudflaredTunnel.binary chaîne cloudflared Le programme, sous forme de chemin absolu ou de nom cherché dans le PATH. COPILOT_CLOUDFLARED_BINARY le remplace.
cloudflaredTunnel.extraArgs tableau de chaînes [] Des arguments ajoutés après cloudflared tunnel run --token <token>.

Réglages de l’interface web et environnement #

Les réglages de l’interface web ne sont pas dans ce fichier. Les interrupteurs et les clés des fournisseurs, les listes de modèles, la durée maximale d’un turn, le délai des tâches de fond et les flags de fonctionnalité sont stockés dans la base de données du relais, dans le dossier de données. Le fichier contient ce dont le relais a besoin avant que la base de données s’ouvre (le dossier de données, le port, le token) et des faits sur la machine (chemins des CLI, tunnels). La seule chose que l’interface écrit dans le fichier est cliBinaries. Ajouté en 0.9.17 DeepSeek n’a pas de clé ici non plus : sa clé d’API, son URL de base et son budget sont enregistrés depuis Settings → Providers → DeepSeek (Réglages → Fournisseurs → DeepSeek) dans la base de données.

Variables d’environnement. La liste complète se trouve sur la page Variables d’environnement. Là où une variable existe pour une clé, la variable l’emporte sur le fichier : COPILOT_WEB_RELAY_DATA_DIR (dataDir), COPILOT_WORKSPACE_ROOT_ALLOW_LIST, COPILOT_CLOUDFLARED_* et COPILOT_PREVIEWS_* (listées dans leurs sections). COPILOT_TUNNEL_MARKER_HEADERS est l’exception : ses noms s’ajoutent à tunnelMarkerHeaders. Les options --token et --port l’emportent sur les deux le temps d’une exécution. COPILOT_WEB_RELAY_CONFIG elle-même est traitée sous Où se trouve le fichier.

Un exemple #

Toutes les valeurs sont inventées. Supprimez les blocs que vous n’utilisez pas.

{
  "authToken": "0f3c1a9e-example-token-do-not-copy",
  "port": 3333,
  "localhostOnly": false,
  "remotePath": "",
  "trustProxy": "loopback",
  "allowedOrigins": [],
  "publicHostnames": ["relay.example.com"],
  "tunnelMarkerHeaders": ["x-edge-request-id"],
  "processingTimeoutMs": 600000,
  "maxRequeueRetries": 5,
  "contextIndicatorMode": "bar",
  "workspaceRootAllowList": ["/home/dev/projects", "/srv/sites"],
  "dataDir": "data",
  "cliBinaries": {
    "claude": "/home/dev/.local/bin/claude",
    "grok": "/home/dev/.grok/bin/grok"
  },
  "restartShutdownTimeoutMs": 45000,
  "restartGracefulTimeoutMs": 8000,
  "restartSpawnTimeoutMs": 18000,
  "restartRebindTimeoutMs": 20000,
  "restartReadyCooldownMs": 1000,
  "restartMaxAttempts": 3,
  "restartRetryBackoffMs": [1000, 3000, 7000],
  "previews": {
    "enabled": true,
    "port": 3334,
    "bindHost": "127.0.0.1",
    "allowPublicBind": false,
    "publicBaseUrl": "https://preview.example.com",
    "allowedTargetHosts": [],
    "maxLive": 8
  },
  "sshTunnel": {
    "mode": "managed",
    "required": false,
    "user": "ubuntu",
    "host": "vps.example.com",
    "remotePort": 4444,
    "remoteBind": "loopback",
    "identityFile": "~/.ssh/id_ed25519"
  },
  "cloudflaredTunnel": {
    "mode": "disabled",
    "token": "",
    "binary": "cloudflared",
    "extraArgs": []
  }
}

Clés obsolètes, ignorées et internes #

Si vous trouvez l’une de ces clés dans un fichier, vous pouvez la laisser ou la supprimer :

Clé Ce que c’est
features Retirée. Les flags de fonctionnalité sont désormais stockés dans la base de données du relais, sous Settings → Features (Réglages → Fonctionnalités). Au démarrage, le relais copie dans la base de données les valeurs qu’il trouve ici, sauf si une valeur y est déjà stockée, et retire la clé du fichier.
sshTunnel.enabled, cloudflaredTunnel.enabled Ancienne forme de mode. true signifie managed, et n’est lu que si mode ne vaut ni disabled ni managed.
pollIntervalMs Écrite dans les nouveaux fichiers, mais le relais ne la lit pas. Elle n’a aucun effet.
conversationSessionMode isolated ou shared. Écrite dans les nouveaux fichiers. Le relais stocke la valeur dans chaque enregistrement de session et l’indique dans son statut, mais rien dans OAR ne se comporte différemment selon la valeur. Elle n’a aucun effet pour vous.
cliPort, model Utilisées seulement par un mode autonome que vous démarrez à la main (une issue de secours pour les développeurs ; aucune commande oar ne le démarre). Le relais que vous démarrez avec oar start ignore model. Il lit cliPort pour une seule chose : la preview lane ne choisit jamais ce port.
host Lue uniquement par les programmes qui se connectent au relais (les workers de session et l’extension Copilot), pour construire l’adresse qu’ils utilisent ; l’écouteur du relais lui-même l’ignore (voir localhostOnly). Laissez-la de côté.