chore(i18n): refresh fr translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-05-04 07:23:17 +00:00
parent 2bf8326873
commit f87f4538b3
2 changed files with 198 additions and 192 deletions

View File

@ -1,43 +1,43 @@
---
read_when:
- Configuration du contrôle daccès aux messages directs
- Appairage dun nouveau Node iOS/Android
- Association dun nouveau Node iOS/Android
- Examen de la posture de sécurité dOpenClaw
summary: 'Vue densemble de lappairage : approuver qui peut vous envoyer des messages privés + quels nœuds peuvent rejoindre'
summary: 'Aperçu de lappairage : approuver qui peut vous envoyer des messages privés + quels nœuds peuvent rejoindre'
title: Appairage
x-i18n:
generated_at: "2026-05-04T02:21:51Z"
generated_at: "2026-05-04T07:21:44Z"
model: gpt-5.5
provider: openai
source_hash: 4fb27840f7c9ef55e7270cc29f813e6db90b240aa2180f30952eb9485f0f8874
source_hash: f2bce4cfba7708b0003f2ffeacada8bc1849cc301f28178b499a9a67bddcf36d
source_path: channels/pairing.md
workflow: 16
---
« Lappairage » est létape dapprobation explicite daccès dOpenClaw.
Il est utilisé à deux endroits :
« Appairage » est létape dapprobation explicite daccès dOpenClaw.
Elle est utilisée à deux endroits :
1. **Appairage DM** (qui est autorisé à parler au bot)
2. **Appairage Node** (quels appareils/nœuds sont autorisés à rejoindre le réseau du Gateway)
2. **Appairage Node** (quels appareils/nœuds sont autorisés à rejoindre le réseau Gateway)
Contexte de sécurité : [Sécurité](/fr/gateway/security)
## 1) Appairage DM (accès par chat entrant)
## 1) Appairage DM (accès au chat entrant)
Lorsquun canal est configuré avec la politique DM `pairing`, les expéditeurs inconnus reçoivent un code court et leur message nest **pas traité** tant que vous ne lavez pas approuvé.
Les politiques DM par défaut sont documentées dans : [Sécurité](/fr/gateway/security)
`dmPolicy: "open"` nest public que lorsque la liste dautorisation DM effective inclut `"*"`.
La configuration et la validation exigent ce joker pour les configurations publiques ouvertes. Si létat existant
contient `open` avec des entrées `allowFrom` concrètes, le runtime nadmet toujours
La configuration et la validation exigent ce joker pour les configurations public-open. Si létat existant
contient `open` avec des entrées `allowFrom` concrètes, lexécution nadmet toujours
que ces expéditeurs, et les approbations du magasin dappairage nélargissent pas laccès `open`.
Codes dappairage :
- 8 caractères, majuscules, sans caractères ambigus (`0O1I`).
- **Expirent après 1 heure**. Le bot nenvoie le message dappairage que lorsquune nouvelle demande est créée (environ une fois par heure et par expéditeur).
- Les demandes dappairage DM en attente sont plafonnées à **3 par canal** par défaut ; les demandes supplémentaires sont ignorées jusquà ce quune demande expire ou soit approuvée.
- Les demandes dappairage DM en attente sont limitées à **3 par canal** par défaut ; les demandes supplémentaires sont ignorées jusquà ce quune demande expire ou soit approuvée.
### Approuver un expéditeur
@ -49,8 +49,8 @@ openclaw pairing approve telegram <CODE>
Si aucun propriétaire de commande nest encore configuré, lapprobation dun code dappairage DM initialise aussi
`commands.ownerAllowFrom` avec lexpéditeur approuvé, par exemple `telegram:123456789`.
Cela donne aux premières configurations un propriétaire explicite pour les commandes privilégiées et les invites
dapprobation dexécution. Une fois quun propriétaire existe, les approbations dappairage ultérieures accordent seulement laccès DM ;
elles najoutent pas dautres propriétaires.
dapprobation dexécution. Une fois quun propriétaire existe, les approbations dappairage ultérieures accordent uniquement
laccès DM ; elles najoutent pas dautres propriétaires.
Canaux pris en charge : `bluebubbles`, `discord`, `feishu`, `googlechat`, `imessage`, `irc`, `line`, `matrix`, `mattermost`, `msteams`, `nextcloud-talk`, `nostr`, `openclaw-weixin`, `signal`, `slack`, `synology-chat`, `telegram`, `twitch`, `whatsapp`, `zalo`, `zalouser`.
@ -60,7 +60,7 @@ Utilisez `accessGroups` au niveau supérieur lorsque le même ensemble dexpé
plusieurs canaux de messagerie ou à la fois aux listes dautorisation DM et de groupe.
Les groupes statiques utilisent `type: "message.senders"` et sont référencés avec
`accessGroup:<name>` depuis les listes dautorisation de canal :
`accessGroup:<name>` depuis les listes dautorisation des canaux :
```json5
{
@ -88,59 +88,65 @@ Les groupes daccès sont documentés en détail ici : [Groupes daccès](/f
Stocké sous `~/.openclaw/credentials/` :
- Demandes en attente : `<channel>-pairing.json`
- Magasin de liste dautorisation approuvée :
- Magasin de liste dautorisation approuvé :
- Compte par défaut : `<channel>-allowFrom.json`
- Compte non par défaut : `<channel>-<accountId>-allowFrom.json`
Comportement de portée par compte :
Comportement de portée des comptes :
- Les comptes non par défaut lisent/écrivent uniquement leur fichier de liste dautorisation à portée définie.
- Le compte par défaut utilise le fichier de liste dautorisation non limité à un compte, à portée du canal.
- Les comptes non par défaut lisent/écrivent uniquement leur fichier de liste dautorisation scoped.
- Le compte par défaut utilise le fichier de liste dautorisation non scoped du canal.
Traitez ces fichiers comme sensibles (ils contrôlent laccès à votre assistant).
<Note>
Le magasin de liste dautorisation dappairage sert à laccès DM. Lautorisation de groupe est distincte.
Approuver un code dappairage DM nautorise pas automatiquement cet expéditeur à exécuter des commandes de groupe
ou à contrôler le bot dans les groupes. Linitialisation du premier propriétaire est un état de configuration séparé
dans `commands.ownerAllowFrom`, et la livraison de chat de groupe suit toujours les listes dautorisation de groupe
du canal (par exemple `groupAllowFrom`, `groups`, ou des substitutions par groupe
Le magasin de liste dautorisation dappairage concerne laccès DM. Lautorisation de groupe est séparée.
Lapprobation dun code dappairage DM nautorise pas automatiquement cet expéditeur à exécuter des commandes
de groupe ni à contrôler le bot dans des groupes. Linitialisation du premier propriétaire est un état de configuration
séparé dans `commands.ownerAllowFrom`, et la livraison dans les discussions de groupe suit toujours les
listes dautorisation de groupe du canal (par exemple `groupAllowFrom`, `groups`, ou des remplacements par groupe
ou par sujet selon le canal).
</Note>
## 2) Appairage dappareils Node (nœuds iOS/Android/macOS/headless)
## 2) Appairage dappareil Node (nœuds iOS/Android/macOS/headless)
Les nœuds se connectent au Gateway comme **appareils** avec `role: node`. Le Gateway
Les nœuds se connectent au Gateway comme des **appareils** avec `role: node`. Le Gateway
crée une demande dappairage dappareil qui doit être approuvée.
### Appairer via Telegram (recommandé pour iOS)
Si vous utilisez le plugin `device-pair`, vous pouvez effectuer le premier appairage dappareil entièrement depuis Telegram :
Si vous utilisez le Plugin `device-pair`, vous pouvez effectuer le premier appairage dappareil entièrement depuis Telegram :
1. Dans Telegram, envoyez un message à votre bot : `/pair`
2. Le bot répond avec deux messages : un message dinstructions et un message séparé de **code de configuration** (facile à copier/coller dans Telegram).
3. Sur votre téléphone, ouvrez lapplication iOS OpenClaw → Settings → Gateway.
4. Collez le code de configuration et connectez-vous.
5. De retour dans Telegram : `/pair pending` (examinez les ID de demande, le rôle et les portées), puis approuvez.
2. Le bot répond avec deux messages : un message dinstructions et un message séparé contenant un **code de configuration** (facile à copier/coller dans Telegram).
3. Sur votre téléphone, ouvrez lapp OpenClaw iOS → Settings → Gateway.
4. Scannez le code QR ou collez le code de configuration, puis connectez-vous.
5. De retour dans Telegram : `/pair pending` (examiner les ID de demande, le rôle et les portées), puis approuvez.
Le code de configuration est une charge utile JSON encodée en base64 qui contient :
- `url` : lURL WebSocket du Gateway (`ws://...` ou `wss://...`)
- `bootstrapToken` : un jeton damorçage éphémère à appareil unique utilisé pour la poignée de main dappairage initiale
- `bootstrapToken` : un jeton bootstrap de courte durée pour un seul appareil, utilisé pour la poignée de main dappairage initiale
Ce jeton damorçage porte le profil damorçage dappairage intégré :
Ce jeton bootstrap porte le profil bootstrap dappairage intégré :
- le jeton `node` principal transmis reste `scopes: []`
- tout jeton `operator` transmis reste limité à la liste dautorisation damorçage :
- tout jeton `operator` transmis reste limité à la liste dautorisation bootstrap :
`operator.approvals`, `operator.read`, `operator.talk.secrets`, `operator.write`
- les vérifications de portée damorçage sont préfixées par rôle, et non un seul ensemble plat de portées :
les entrées de portée operator satisfont seulement les demandes operator, et les rôles non operator
- les vérifications de portée bootstrap sont préfixées par rôle, et non regroupées dans un seul ensemble de portées plat :
les entrées de portée operator ne satisfont que les demandes operator, et les rôles non-operator
doivent toujours demander des portées sous leur propre préfixe de rôle
- la rotation/révocation ultérieure des jetons reste limitée à la fois par le contrat de rôle approuvé de lappareil
et par les portées operator de la session appelante
Traitez le code de configuration comme un mot de passe tant quil est valide.
Pour Tailscale, les configurations publiques ou tout autre appairage mobile non-loopback, utilisez Tailscale
Serve/Funnel ou une autre URL Gateway `wss://`. Les URL de configuration `ws://` directes non-loopback
sont rejetées avant lémission du QR/code de configuration. Les codes de configuration `ws://` en texte clair
sont limités aux URL loopback ; les clients `ws://` de réseau privé exigent toujours le break-glass explicite
`OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1` décrit dans le guide du Gateway distant.
### Approuver un appareil Node
```bash
@ -149,25 +155,24 @@ openclaw devices approve <requestId>
openclaw devices reject <requestId>
```
Lorsquune approbation explicite est refusée parce que la session dappareil appairé approbatrice
Lorsquune approbation explicite est refusée parce que la session dappareil appairé qui lapprouve
a été ouverte avec une portée limitée à lappairage, la CLI réessaie la même demande avec
`operator.admin`. Cela permet à un appareil appairé existant disposant des capacités dadministration de récupérer un nouvel
`operator.admin`. Cela permet à un appareil appairé disposant déjà de capacités admin de récupérer un nouvel
appairage Control UI/navigateur sans modifier `devices/paired.json` à la main. Le
Gateway valide toujours la connexion retentée ; les jetons qui ne peuvent pas sauthentifier
Gateway valide toujours la connexion réessayée ; les jetons qui ne peuvent pas sauthentifier
avec `operator.admin` restent bloqués.
Si le même appareil réessaie avec des détails dauthentification différents (par exemple un
rôle/des portées/une clé publique différents), la demande en attente précédente est remplacée et un nouveau
Si le même appareil réessaie avec des détails dauthentification différents (par exemple un rôle, des portées ou une clé publique différents), la demande en attente précédente est remplacée et un nouveau
`requestId` est créé.
<Note>
Un appareil déjà appairé nobtient pas silencieusement un accès plus large. Sil se reconnecte en demandant plus de portées ou un rôle plus large, OpenClaw conserve lapprobation existante telle quelle et crée une nouvelle demande de mise à niveau en attente. Utilisez `openclaw devices list` pour comparer laccès actuellement approuvé avec laccès nouvellement demandé avant dapprouver.
Un appareil déjà appairé nobtient pas silencieusement un accès plus large. Sil se reconnecte en demandant davantage de portées ou un rôle plus large, OpenClaw conserve lapprobation existante telle quelle et crée une nouvelle demande de mise à niveau en attente. Utilisez `openclaw devices list` pour comparer laccès actuellement approuvé avec laccès nouvellement demandé avant dapprouver.
</Note>
### Approbation automatique optionnelle des nœuds par CIDR de confiance
### Approbation automatique optionnelle de Node par CIDR de confiance
Lappairage dappareils reste manuel par défaut. Pour les réseaux de nœuds étroitement contrôlés,
vous pouvez choisir dactiver lapprobation automatique de premier appairage de nœud avec des CIDR explicites ou des IP exactes :
Lappairage dappareil reste manuel par défaut. Pour des réseaux Node strictement contrôlés,
vous pouvez activer lapprobation automatique des nouveaux Node avec des CIDR explicites ou des IP exactes :
```json5
{
@ -181,35 +186,35 @@ vous pouvez choisir dactiver lapprobation automatique de premier appairage
}
```
Cela sapplique uniquement aux nouvelles demandes dappairage `role: node` sans
portées demandées. Les clients operator, navigateur, Control UI et WebChat exigent toujours une approbation
manuelle. Les changements de rôle, de portée, de métadonnées et de clé publique exigent toujours une approbation
Cela ne sapplique quaux nouvelles demandes dappairage `role: node` sans portées demandées.
Les clients operator, navigateur, Control UI et WebChat exigent toujours une approbation manuelle.
Les changements de rôle, de portée, de métadonnées et de clé publique exigent toujours une approbation
manuelle.
### Stockage de létat dappairage Node
Stocké sous `~/.openclaw/devices/` :
- `pending.json` (éphémère ; les demandes en attente expirent)
- `pending.json` (courte durée ; les demandes en attente expirent)
- `paired.json` (appareils appairés + jetons)
### Notes
- Lancienne API `node.pair.*` (CLI : `openclaw nodes pending|approve|reject|remove|rename`) est un
magasin dappairage séparé, détenu par le Gateway. Les nœuds WS exigent toujours lappairage dappareils.
- Lenregistrement dappairage est la source de vérité durable pour les rôles approuvés. Les jetons dappareil
actifs restent limités à cet ensemble de rôles approuvé ; une entrée de jeton isolée
hors des rôles approuvés ne crée pas de nouvel accès.
magasin dappairage séparé appartenant au Gateway. Les nœuds WS exigent toujours lappairage dappareil.
- Lenregistrement dappairage est la source de vérité durable pour les rôles approuvés. Les jetons
dappareil actifs restent limités à cet ensemble de rôles approuvé ; une entrée de jeton isolée
en dehors des rôles approuvés ne crée pas de nouvel accès.
## Documentation associée
## Docs associées
- Modèle de sécurité + injection de prompt : [Sécurité](/fr/gateway/security)
- Mettre à jour en toute sécurité (exécuter doctor) : [Mise à jour](/fr/install/updating)
- Mise à jour en sécurité (exécuter doctor) : [Mise à jour](/fr/install/updating)
- Configurations de canaux :
- Telegram : [Telegram](/fr/channels/telegram)
- WhatsApp : [WhatsApp](/fr/channels/whatsapp)
- Signal : [Signal](/fr/channels/signal)
- BlueBubbles (iMessage) : [BlueBubbles](/fr/channels/bluebubbles)
- iMessage (ancien) : [iMessage](/fr/channels/imessage)
- iMessage (hérité) : [iMessage](/fr/channels/imessage)
- Discord : [Discord](/fr/channels/discord)
- Slack : [Slack](/fr/channels/slack)

View File

@ -1,29 +1,29 @@
---
read_when:
- Vous souhaitez utiliser le Gateway depuis un navigateur
- Vous voulez utiliser le Gateway depuis un navigateur
- Vous voulez accéder au Tailnet sans tunnels SSH
sidebarTitle: Control UI
summary: Interface de contrôle basée sur navigateur pour le Gateway (discussion, nœuds, configuration)
summary: Interface de contrôle basée sur le navigateur pour le Gateway (chat, nœuds, configuration)
title: Interface de contrôle
x-i18n:
generated_at: "2026-05-04T07:06:32Z"
generated_at: "2026-05-04T07:21:38Z"
model: gpt-5.5
provider: openai
source_hash: 07fbbe1c7fec5f67a04a231e02bdf0f7d16be9c5fe188915674d71fcd69002a5
source_hash: 896c75116d7a396571017ac6e6db7ff6ce328617e44470c303fd41af58aa2bd7
source_path: web/control-ui.md
workflow: 16
---
La Control UI est une petite application monopage **Vite + Lit** servie par le Gateway :
Linterface de contrôle est une petite application monopage **Vite + Lit** servie par le Gateway :
- par défaut : `http://<host>:18789/`
- préfixe facultatif : définissez `gateway.controlUi.basePath` (p. ex. `/openclaw`)
- préfixe facultatif : définissez `gateway.controlUi.basePath` (par exemple `/openclaw`)
Elle communique **directement avec le WebSocket du Gateway** sur le même port.
## Ouverture rapide (locale)
## Ouverture rapide (local)
Si le Gateway sexécute sur le même ordinateur, ouvrez :
Si le Gateway est en cours dexécution sur le même ordinateur, ouvrez :
- [http://127.0.0.1:18789/](http://127.0.0.1:18789/) (ou [http://localhost:18789/](http://localhost:18789/))
@ -34,13 +34,13 @@ Lauthentification est fournie pendant la négociation WebSocket via :
- `connect.params.auth.token`
- `connect.params.auth.password`
- les en-têtes didentité Tailscale Serve lorsque `gateway.auth.allowTailscale: true`
- les en-têtes didentité de proxy de confiance lorsque `gateway.auth.mode: "trusted-proxy"`
- les en-têtes didentité du proxy approuvé lorsque `gateway.auth.mode: "trusted-proxy"`
Le panneau de paramètres du tableau de bord conserve un jeton pour la session de longlet de navigateur actuel et lURL de Gateway sélectionnée ; les mots de passe ne sont pas persistés. Lintégration génère généralement un jeton de Gateway pour lauthentification par secret partagé lors de la première connexion, mais lauthentification par mot de passe fonctionne aussi lorsque `gateway.auth.mode` vaut `"password"`.
Le panneau des paramètres du tableau de bord conserve un jeton pour la session de longlet de navigateur actuel et lURL de gateway sélectionnée ; les mots de passe ne sont pas conservés. Lintégration génère généralement un jeton de gateway pour lauthentification par secret partagé à la première connexion, mais lauthentification par mot de passe fonctionne aussi lorsque `gateway.auth.mode` vaut `"password"`.
## Appairage dappareil (première connexion)
Lorsque vous vous connectez à la Control UI depuis un nouveau navigateur ou appareil, le Gateway exige généralement une **approbation dappairage unique**. Il sagit dune mesure de sécurité destinée à empêcher les accès non autorisés.
Lorsque vous vous connectez à linterface de contrôle depuis un nouveau navigateur ou appareil, le Gateway exige généralement une **approbation dappairage unique**. Il sagit dune mesure de sécurité destinée à empêcher tout accès non autorisé.
**Ce que vous verrez :** « disconnected (1008): pairing required »
@ -57,15 +57,15 @@ Lorsque vous vous connectez à la Control UI depuis un nouveau navigateur ou app
</Step>
</Steps>
Si le navigateur retente lappairage avec des détails dauthentification modifiés (rôle/portées/clé publique), la demande en attente précédente est remplacée et un nouveau `requestId` est créé. Réexécutez `openclaw devices list` avant lapprobation.
Si le navigateur relance lappairage avec des détails dauthentification modifiés (rôle/portées/clé publique), la demande en attente précédente est remplacée et un nouveau `requestId` est créé. Relancez `openclaw devices list` avant lapprobation.
Si le navigateur est déjà appairé et que vous le faites passer dun accès en lecture à un accès en écriture/administration, cela est traité comme une mise à niveau dapprobation, et non comme une reconnexion silencieuse. OpenClaw conserve lancienne approbation active, bloque la reconnexion plus étendue et vous demande dapprouver explicitement le nouvel ensemble de portées.
Si le navigateur est déjà appairé et que vous le faites passer dun accès en lecture à un accès en écriture/administration, cela est traité comme une mise à niveau dapprobation, et non comme une reconnexion silencieuse. OpenClaw conserve lancienne approbation active, bloque la reconnexion plus large et vous demande dapprouver explicitement le nouvel ensemble de portées.
Une fois approuvé, lappareil est mémorisé et ne demandera plus de nouvelle approbation, sauf si vous le révoquez avec `openclaw devices revoke --device <id> --role <role>`. Consultez [CLI des appareils](/fr/cli/devices) pour la rotation et la révocation des jetons.
Une fois approuvé, lappareil est mémorisé et ne nécessitera pas de nouvelle approbation, sauf si vous le révoquez avec `openclaw devices revoke --device <id> --role <role>`. Consultez [CLI des appareils](/fr/cli/devices) pour la rotation et la révocation des jetons.
<Note>
- Les connexions directes de navigateur en local loopback (`127.0.0.1` / `localhost`) sont approuvées automatiquement.
- Tailscale Serve peut ignorer laller-retour dappairage pour les sessions opérateur de la Control UI lorsque `gateway.auth.allowTailscale: true`, que lidentité Tailscale est vérifiée et que le navigateur présente son identité dappareil.
- Les connexions directes depuis un navigateur en local loopback (`127.0.0.1` / `localhost`) sont approuvées automatiquement.
- Tailscale Serve peut éviter laller-retour dappairage pour les sessions opérateur de linterface de contrôle lorsque `gateway.auth.allowTailscale: true`, que lidentité Tailscale est vérifiée et que le navigateur présente son identité dappareil.
- Les liaisons Tailnet directes, les connexions de navigateur sur le LAN et les profils de navigateur sans identité dappareil nécessitent toujours une approbation explicite.
- Chaque profil de navigateur génère un ID dappareil unique ; changer de navigateur ou effacer les données du navigateur nécessitera donc un nouvel appairage.
@ -73,80 +73,81 @@ Une fois approuvé, lappareil est mémorisé et ne demandera plus de nouvelle
## Identité personnelle (locale au navigateur)
La Control UI prend en charge une identité personnelle par navigateur (nom daffichage et avatar) attachée aux messages sortants pour lattribution dans les sessions partagées. Elle réside dans le stockage du navigateur, est limitée au profil de navigateur actuel et nest pas synchronisée avec dautres appareils ni persistée côté serveur au-delà des métadonnées normales dauteur de transcript sur les messages que vous envoyez réellement. Effacer les données du site ou changer de navigateur la réinitialise à une valeur vide.
Linterface de contrôle prend en charge une identité personnelle propre à chaque navigateur (nom daffichage et avatar), attachée aux messages sortants pour lattribution dans les sessions partagées. Elle réside dans le stockage du navigateur, est limitée au profil de navigateur actuel et nest pas synchronisée avec dautres appareils ni conservée côté serveur au-delà des métadonnées normales dauteur de transcript sur les messages que vous envoyez réellement. Effacer les données du site ou changer de navigateur la réinitialise à vide.
Le même modèle local au navigateur sapplique au remplacement de lavatar de lassistant. Les avatars dassistant téléversés superposent lidentité résolue par le Gateway dans le navigateur local uniquement et ne font jamais daller-retour via `config.patch`. Le champ de configuration partagé `ui.assistant.avatar` reste disponible pour les clients non-UI qui écrivent directement dans ce champ (comme les gateways scriptés ou les tableaux de bord personnalisés).
Le même modèle local au navigateur sapplique à la substitution de lavatar de lassistant. Les avatars dassistant téléversés remplacent lidentité résolue par le gateway uniquement dans le navigateur local et ne transitent jamais via `config.patch`. Le champ de configuration partagé `ui.assistant.avatar` reste disponible pour les clients non UI qui écrivent directement ce champ (comme les gateways scriptés ou les tableaux de bord personnalisés).
## Point de terminaison de configuration dexécution
## Endpoint de configuration dexécution
La Control UI récupère ses paramètres dexécution depuis `/__openclaw/control-ui-config.json`. Ce point de terminaison est protégé par la même authentification de Gateway que le reste de la surface HTTP : les navigateurs non authentifiés ne peuvent pas le récupérer, et une récupération réussie nécessite soit un jeton/mot de passe de Gateway déjà valide, soit une identité Tailscale Serve, soit une identité de proxy de confiance.
Linterface de contrôle récupère ses paramètres dexécution depuis `/__openclaw/control-ui-config.json`. Cet endpoint est protégé par la même authentification de gateway que le reste de la surface HTTP : les navigateurs non authentifiés ne peuvent pas le récupérer, et une récupération réussie exige soit un jeton/mot de passe de gateway déjà valide, soit une identité Tailscale Serve, soit une identité de proxy approuvé.
## Prise en charge des langues
La Control UI peut se localiser au premier chargement selon la locale de votre navigateur. Pour la remplacer plus tard, ouvrez **Vue densemble -> Accès au Gateway -> Langue**. Le sélecteur de locale se trouve dans la carte Accès au Gateway, pas sous Apparence.
Linterface de contrôle peut se localiser au premier chargement selon la langue de votre navigateur. Pour la modifier plus tard, ouvrez **Vue densemble -> Accès au Gateway -> Langue**. Le sélecteur de langue se trouve dans la carte Accès au Gateway, pas sous Apparence.
- Locales prises en charge : `en`, `zh-CN`, `zh-TW`, `pt-BR`, `de`, `es`, `ja-JP`, `ko`, `fr`, `ar`, `it`, `tr`, `uk`, `id`, `pl`, `th`, `vi`, `nl`, `fa`
- Les traductions non anglaises sont chargées paresseusement dans le navigateur.
- La locale sélectionnée est enregistrée dans le stockage du navigateur et réutilisée lors des visites futures.
- Les clés de traduction manquantes se rabattent sur langlais.
- Langues prises en charge : `en`, `zh-CN`, `zh-TW`, `pt-BR`, `de`, `es`, `ja-JP`, `ko`, `fr`, `ar`, `it`, `tr`, `uk`, `id`, `pl`, `th`, `vi`, `nl`, `fa`
- Les traductions non anglaises sont chargées à la demande dans le navigateur.
- La langue sélectionnée est enregistrée dans le stockage du navigateur et réutilisée lors des visites futures.
- Les clés de traduction manquantes reviennent à langlais.
Les traductions de la documentation sont générées pour le même ensemble de locales non anglaises, mais le sélecteur de langue Mintlify intégré au site de documentation est limité aux codes de locale acceptés par Mintlify. Les docs en thaï (`th`) et en persan (`fa`) sont quand même générées dans le dépôt de publication ; elles peuvent ne pas apparaître dans ce sélecteur tant que Mintlify ne prend pas en charge ces codes.
Les traductions de la documentation sont générées pour le même ensemble de langues non anglaises, mais le sélecteur de langue Mintlify intégré au site de documentation est limité aux codes de langue acceptés par Mintlify. La documentation en thaï (`th`) et en persan (`fa`) est tout de même générée dans le dépôt de publication ; elle peut ne pas apparaître dans ce sélecteur tant que Mintlify ne prend pas en charge ces codes.
## Thèmes dapparence
Le panneau Apparence conserve les thèmes intégrés Claw, Knot et Dash, ainsi quun emplacement dimport tweakcn local au navigateur. Pour importer un thème, ouvrez [léditeur tweakcn](https://tweakcn.com/editor/theme), choisissez ou créez un thème, cliquez sur **Partager**, puis collez le lien de thème copié dans Apparence. Limportateur accepte aussi les URL de registre `https://tweakcn.com/r/themes/<id>`, les URL déditeur comme `https://tweakcn.com/editor/theme?theme=amethyst-haze`, les chemins relatifs `/themes/<id>`, les ID de thème bruts et les noms de thème par défaut comme `amethyst-haze`.
Les thèmes importés sont stockés uniquement dans le profil de navigateur actuel. Ils ne sont pas écrits dans la configuration du Gateway et ne se synchronisent pas entre appareils. Remplacer le thème importé met à jour lunique emplacement local ; leffacer fait revenir le thème actif à Claw si le thème importé était sélectionné.
Les thèmes importés sont stockés uniquement dans le profil de navigateur actuel. Ils ne sont pas écrits dans la configuration du gateway et ne se synchronisent pas entre les appareils. Remplacer le thème importé met à jour lunique emplacement local ; leffacer rebascule le thème actif vers Claw si le thème importé était sélectionné.
## Ce quelle peut faire (aujourdhui)
<AccordionGroup>
<Accordion title="Chat et conversation vocale">
- Discuter avec le modèle via le WS du Gateway (`chat.history`, `chat.send`, `chat.abort`, `chat.inject`).
- Parler via des sessions temps réel dans le navigateur. OpenAI utilise WebRTC direct, Google Live utilise un jeton de navigateur contraint à usage unique sur WebSocket, et les plugins de voix temps réel côté backend uniquement utilisent le transport de relais du Gateway. Le relais conserve les identifiants de fournisseur sur le Gateway pendant que le navigateur diffuse le PCM du microphone via les RPC `talk.realtime.relay*` et renvoie les appels doutil `openclaw_agent_consult` via `chat.send` pour le plus grand modèle OpenClaw configuré.
- Diffuser les appels doutil + les cartes de sortie doutil en direct dans Chat (événements dagent).
- Discuter avec le modèle via le Gateway WS (`chat.history`, `chat.send`, `chat.abort`, `chat.inject`).
- Parler via des sessions temps réel du navigateur. OpenAI utilise WebRTC direct, Google Live utilise un jeton de navigateur contraint à usage unique sur WebSocket, et les plugins de voix temps réel côté backend uniquement utilisent le transport relais du Gateway. Le relais conserve les identifiants du fournisseur sur le Gateway pendant que le navigateur diffuse le PCM du microphone via les RPC `talk.realtime.relay*` et renvoie les appels doutil `openclaw_agent_consult` via `chat.send` vers le modèle OpenClaw configuré plus large.
- Diffuser les appels doutils + les cartes de sortie doutils en direct dans Chat (événements dagent).
</Accordion>
<Accordion title="Canaux, instances, sessions, rêves">
- Canaux : statut des canaux intégrés et des canaux de plugins groupés/externes, connexion par QR code et configuration par canal (`channels.status`, `web.login.*`, `config.patch`).
- Canaux : état des canaux intégrés et des canaux de plugins groupés/externes, connexion par QR code et configuration par canal (`channels.status`, `web.login.*`, `config.patch`).
- Instances : liste de présence + actualisation (`system-presence`).
- Sessions : liste + remplacements par session pour le modèle/la réflexion/le mode rapide/le mode verbeux/la trace/le raisonnement (`sessions.list`, `sessions.patch`).
- Rêves : statut de Dreaming, bascule dactivation/désactivation et lecteur du journal des rêves (`doctor.memory.status`, `doctor.memory.dreamDiary`, `config.patch`).
- Sessions : liste + substitutions par session pour modèle/thinking/rapide/verbeux/trace/reasoning (`sessions.list`, `sessions.patch`).
- Rêves : état de Dreaming, bascule activer/désactiver et lecteur du journal de rêves (`doctor.memory.status`, `doctor.memory.dreamDiary`, `config.patch`).
</Accordion>
<Accordion title="Cron, Skills, Nodes, approbations exec">
- Tâches Cron : lister/ajouter/modifier/exécuter/activer/désactiver + historique dexécution (`cron.*`).
- Skills : statut, activation/désactivation, installation, mises à jour de clé API (`skills.*`).
- Skills : état, activer/désactiver, installer, mises à jour de clé API (`skills.*`).
- Nodes : liste + capacités (`node.list`).
- Approbations exec : modifier les listes dautorisation du Gateway ou des Nodes + politique de demande pour `exec host=gateway/node` (`exec.approvals.*`).
- Approbations exec : modifier les listes dautorisation du gateway ou du node + politique de demande pour `exec host=gateway/node` (`exec.approvals.*`).
</Accordion>
<Accordion title="Configuration">
- Afficher/modifier `~/.openclaw/openclaw.json` (`config.get`, `config.set`).
- Appliquer + redémarrer avec validation (`config.apply`) et réveiller la dernière session active.
- Les écritures incluent une garde par hachage de base pour éviter décraser des modifications concurrentes.
- Les écritures (`config.set`/`config.apply`/`config.patch`) prévalident la résolution des SecretRef actifs pour les références dans la charge utile de configuration soumise ; les références actives soumises non résolues sont rejetées avant lécriture.
- Schéma + rendu de formulaire (`config.schema` / `config.schema.lookup`, y compris les champs `title` / `description`, les indices dinterface correspondants, les résumés denfants immédiats, les métadonnées de documentation sur les nœuds objet imbriqué/joker/tableau/composition, ainsi que les schémas de plugin + canal lorsquils sont disponibles) ; léditeur JSON brut est disponible uniquement lorsque linstantané dispose dun aller-retour brut sûr.
- Si un instantané ne peut pas effectuer en toute sécurité laller-retour du texte brut, la Control UI force le mode Formulaire et désactive le mode Brut pour cet instantané.
- La commande « Réinitialiser à lenregistré » de léditeur JSON brut préserve la forme rédigée en brut (mise en forme, commentaires, disposition `$include`) au lieu de rerendre un instantané aplati, afin que les modifications externes survivent à une réinitialisation lorsque linstantané peut effectuer un aller-retour sûr.
- Les valeurs dobjet SecretRef structurées sont rendues en lecture seule dans les entrées de texte du formulaire pour éviter une corruption accidentelle dobjet vers chaîne.
- Les écritures (`config.set`/`config.apply`/`config.patch`) prévalident la résolution active des SecretRef pour les références dans la charge utile de configuration soumise ; les références soumises actives non résolues sont rejetées avant lécriture.
- Schéma + rendu de formulaire (`config.schema` / `config.schema.lookup`, y compris les champs `title` / `description`, les indications UI correspondantes, les résumés des enfants immédiats, les métadonnées de documentation sur les nœuds objet imbriqué/joker/tableau/composition, ainsi que les schémas de plugin + canal lorsquils sont disponibles) ; léditeur JSON brut nest disponible que lorsque linstantané permet un aller-retour brut sûr.
- Si un instantané ne peut pas effectuer en toute sécurité un aller-retour du texte brut, linterface de contrôle force le mode Formulaire et désactive le mode Brut pour cet instantané.
- Dans léditeur JSON brut, « Réinitialiser vers la version enregistrée » conserve la forme rédigée en brut (formatage, commentaires, disposition `$include`) au lieu de restituer un instantané aplati, de sorte que les modifications externes survivent à une réinitialisation lorsque linstantané peut effectuer un aller-retour sûr.
- Les valeurs dobjet SecretRef structurées sont rendues en lecture seule dans les champs texte du formulaire afin déviter une corruption accidentelle dobjet en chaîne.
</Accordion>
<Accordion title="Débogage, journaux, mise à jour">
- Débogage : instantanés de statut/santé/modèles + journal dévénements + appels RPC manuels (`status`, `health`, `models.list`).
- Journaux : suivi en direct des journaux de fichier du Gateway avec filtre/export (`logs.tail`).
- Mise à jour : exécuter une mise à jour de package/git + redémarrer (`update.run`) avec un rapport de redémarrage, puis interroger `update.status` après reconnexion pour vérifier la version du Gateway en cours dexécution.
- Débogage : instantanés détat/santé/modèles + journal dévénements + appels RPC manuels (`status`, `health`, `models.list`).
- Le journal dévénements inclut les minutages dactualisation/RPC de linterface de contrôle ainsi que les entrées de réactivité du navigateur pour les longues images danimation ou les tâches longues lorsque le navigateur expose ces types dentrées PerformanceObserver.
- Journaux : suivi en direct des journaux de fichiers du gateway avec filtre/export (`logs.tail`).
- Mise à jour : exécuter une mise à jour package/git + redémarrage (`update.run`) avec un rapport de redémarrage, puis interroger `update.status` après reconnexion pour vérifier la version du gateway en cours dexécution.
</Accordion>
<Accordion title="Notes du panneau des tâches Cron">
- Pour les tâches isolées, la livraison annonce un résumé par défaut. Vous pouvez passer à aucune si vous voulez des exécutions internes uniquement.
- Pour les tâches isolées, la livraison annonce le résumé par défaut. Vous pouvez passer à aucune si vous voulez des exécutions internes uniquement.
- Les champs canal/cible apparaissent lorsque lannonce est sélectionnée.
- Le mode Webhook utilise `delivery.mode = "webhook"` avec `delivery.to` défini sur une URL Webhook HTTP(S) valide.
- Pour les tâches de session principale, les modes de livraison Webhook et aucune sont disponibles.
- Les contrôles dédition avancée incluent supprimer après exécution, effacer le remplacement dagent, options Cron exact/décalage, remplacements du modèle/de la réflexion de lagent et bascules de livraison au mieux.
- La validation du formulaire est intégrée avec des erreurs au niveau des champs ; les valeurs invalides désactivent le bouton denregistrement jusquà correction.
- Définissez `cron.webhookToken` pour envoyer un jeton bearer dédié ; sil est omis, le Webhook est envoyé sans en-tête dauthentification.
- Solution de repli obsolète : les anciennes tâches stockées avec `notify: true` peuvent encore utiliser `cron.webhook` jusquà migration.
- Le mode Webhook utilise `delivery.mode = "webhook"` avec `delivery.to` défini sur une URL de webhook HTTP(S) valide.
- Pour les tâches de session principale, les modes de livraison webhook et aucune sont disponibles.
- Les contrôles de modification avancés incluent suppression après exécution, effacement de la substitution dagent, options cron exact/décalage, substitutions de modèle/thinking dagent et bascules de livraison au mieux.
- La validation du formulaire est en ligne avec des erreurs au niveau des champs ; les valeurs invalides désactivent le bouton denregistrement jusquà correction.
- Définissez `cron.webhookToken` pour envoyer un jeton bearer dédié ; sil est omis, le webhook est envoyé sans en-tête dauthentification.
- Solution de secours obsolète : les anciennes tâches stockées avec `notify: true` peuvent toujours utiliser `cron.webhook` jusquà migration.
</Accordion>
</AccordionGroup>
@ -154,63 +155,63 @@ Les thèmes importés sont stockés uniquement dans le profil de navigateur actu
## Comportement du chat
<AccordionGroup>
<Accordion title="Send and history semantics">
- `chat.send` est **non bloquant** : il accuse réception immédiatement avec `{ runId, status: "started" }` et la réponse est diffusée via des événements `chat`.
- Les téléversements de chat acceptent les images ainsi que les fichiers non vidéo. Les images conservent le chemin dimage natif ; les autres fichiers sont stockés comme médias gérés et affichés dans lhistorique sous forme de liens de pièces jointes.
- Un nouvel envoi avec le même `idempotencyKey` renvoie `{ status: "in_flight" }` pendant lexécution, puis `{ status: "ok" }` après la fin.
- Les réponses `chat.history` sont limitées en taille pour la sécurité de linterface utilisateur. Lorsque les entrées de transcription sont trop volumineuses, le Gateway peut tronquer les champs de texte longs, omettre les blocs de métadonnées lourds et remplacer les messages surdimensionnés par un espace réservé (`[chat.history omitted: message too large]`).
- Les images dassistant/générées sont conservées comme références de médias gérés et resservies via des URL de médias authentifiées du Gateway, afin que les rechargements ne dépendent pas de la présence durable des charges utiles dimage base64 brutes dans la réponse dhistorique du chat.
- `chat.history` supprime également les balises de directives en ligne uniquement destinées à laffichage du texte visible de lassistant (par exemple `[[reply_to_*]]` et `[[audio_as_voice]]`), les charges utiles XML dappels doutils en texte brut (y compris `<tool_call>...</tool_call>`, `<function_call>...</function_call>`, `<tool_calls>...</tool_calls>`, `<function_calls>...</function_calls>` et les blocs dappels doutils tronqués), ainsi que les jetons de contrôle de modèle ASCII/pleine chasse divulgués, et omet les entrées dassistant dont tout le texte visible est uniquement le jeton silencieux exact `NO_REPLY` / `no_reply`.
- Pendant un envoi actif et lactualisation finale de lhistorique, la vue de chat garde visibles les messages utilisateur/assistant optimistes locaux si `chat.history` renvoie brièvement un instantané plus ancien ; la transcription canonique remplace ces messages locaux une fois que lhistorique du Gateway a rattrapé son retard.
- Les événements `chat` en direct représentent létat de livraison, tandis que `chat.history` est reconstruit à partir de la transcription durable de la session. Après les événements finaux doutils, linterface Control recharge lhistorique et ne fusionne quune petite fin optimiste ; la limite de transcription est documentée dans [WebChat](/fr/web/webchat).
- `chat.inject` ajoute une note dassistant à la transcription de session et diffuse un événement `chat` pour les mises à jour uniquement destinées à linterface utilisateur (aucune exécution dagent, aucune livraison de canal).
- Le modèle den-tête du chat et les sélecteurs de réflexion modifient immédiatement la session active via `sessions.patch` ; ce sont des remplacements persistants de session, et non des options denvoi limitées à un seul tour.
- Saisir `/new` dans linterface Control crée et bascule vers la même nouvelle session de tableau de bord que Nouveau chat. Saisir `/reset` conserve la réinitialisation explicite en place du Gateway pour la session actuelle.
- Le sélecteur de modèle de chat demande la vue de modèle configurée du Gateway. Si `agents.defaults.models` est présent, cette liste dautorisation pilote le sélecteur. Sinon, le sélecteur affiche les entrées explicites `models.providers.*.models` ainsi que les fournisseurs avec une authentification utilisable. Le catalogue complet reste disponible via le RPC de débogage `models.list` avec `view: "all"`.
- Lorsque les rapports dutilisation dune session Gateway fraîche indiquent une forte pression de contexte, la zone de composition du chat affiche un avis de contexte et, aux niveaux de Compaction recommandés, un bouton compact qui exécute le chemin normal de Compaction de session. Les instantanés de jetons obsolètes sont masqués jusquà ce que le Gateway signale à nouveau une utilisation fraîche.
<Accordion title="Sémantique denvoi et dhistorique">
- `chat.send` est **non bloquant** : il acquitte immédiatement avec `{ runId, status: "started" }` et la réponse est diffusée via les événements `chat`.
- Les téléversements de chat acceptent les images ainsi que les fichiers non vidéo. Les images conservent le chemin dimage natif ; les autres fichiers sont stockés comme médias gérés et affichés dans lhistorique sous forme de liens de pièce jointe.
- Un nouvel envoi avec le même `idempotencyKey` renvoie `{ status: "in_flight" }` pendant lexécution, puis `{ status: "ok" }` après lachèvement.
- Les réponses `chat.history` ont une taille limitée pour préserver la sécurité de linterface utilisateur. Lorsque les entrées de transcription sont trop volumineuses, le Gateway peut tronquer les longs champs de texte, omettre les blocs de métadonnées lourds et remplacer les messages trop volumineux par un espace réservé (`[chat.history omitted: message too large]`).
- Les images dassistant/générées sont conservées comme références de médias gérés et resservies via des URL de médias Gateway authentifiées ; ainsi, les rechargements ne dépendent pas du maintien de charges utiles dimages base64 brutes dans la réponse de lhistorique de chat.
- `chat.history` supprime aussi du texte visible de lassistant les balises de directives intégrées destinées uniquement à laffichage (par exemple `[[reply_to_*]]` et `[[audio_as_voice]]`), les charges utiles XML dappels doutils en texte brut (y compris `<tool_call>...</tool_call>`, `<function_call>...</function_call>`, `<tool_calls>...</tool_calls>`, `<function_calls>...</function_calls>` et les blocs dappels doutils tronqués), ainsi que les tokens de contrôle de modèle ASCII/pleine chasse divulgués, et omet les entrées dassistant dont tout le texte visible nest que le token silencieux exact `NO_REPLY` / `no_reply`.
- Pendant un envoi actif et le rafraîchissement final de lhistorique, la vue de chat garde visibles les messages utilisateur/assistant optimistes locaux si `chat.history` renvoie brièvement un instantané plus ancien ; la transcription canonique remplace ces messages locaux lorsque lhistorique du Gateway se synchronise.
- Les événements `chat` en direct représentent létat de livraison, tandis que `chat.history` est reconstruit à partir de la transcription durable de session. Après les événements finaux doutils, la Control UI recharge lhistorique et ne fusionne quune petite queue optimiste ; la limite de transcription est documentée dans [WebChat](/fr/web/webchat).
- `chat.inject` ajoute une note dassistant à la transcription de session et diffuse un événement `chat` pour les mises à jour réservées à linterface utilisateur (aucune exécution dagent, aucune livraison de canal).
- Les sélecteurs de modèle et de réflexion de len-tête de chat modifient immédiatement la session active via `sessions.patch` ; ce sont des remplacements persistants de session, et non des options denvoi limitées à un seul tour.
- Saisir `/new` dans la Control UI crée et bascule vers la même session de tableau de bord fraîche que New Chat. Saisir `/reset` conserve la réinitialisation explicite sur place du Gateway pour la session actuelle.
- Le sélecteur de modèle de chat demande la vue de modèles configurée du Gateway. Si `agents.defaults.models` est présent, cette liste dautorisation pilote le sélecteur. Sinon, le sélecteur affiche les entrées explicites `models.providers.*.models` ainsi que les fournisseurs disposant dune authentification utilisable. Le catalogue complet reste disponible via le RPC de débogage `models.list` avec `view: "all"`.
- Lorsque les rapports récents dutilisation de session du Gateway indiquent une forte pression de contexte, la zone de composition du chat affiche un avis de contexte et, aux niveaux de compaction recommandés, un bouton de compaction qui exécute le chemin normal de Compaction de session. Les instantanés de tokens obsolètes sont masqués jusquà ce que le Gateway signale à nouveau une utilisation fraîche.
</Accordion>
<Accordion title="Talk mode (browser realtime)">
Le mode Parler utilise un fournisseur vocal temps réel enregistré. Configurez OpenAI avec `talk.provider: "openai"` plus `talk.providers.openai.apiKey`, ou configurez Google avec `talk.provider: "google"` plus `talk.providers.google.apiKey` ; la configuration du fournisseur temps réel Voice Call peut encore être réutilisée comme solution de repli. Le navigateur ne reçoit jamais de clé API de fournisseur standard. OpenAI reçoit un secret client Realtime éphémère pour WebRTC. Google Live reçoit un jeton dauthentification Live API contraint à usage unique pour une session WebSocket de navigateur, avec les instructions et déclarations doutils verrouillées dans le jeton par le Gateway. Les fournisseurs qui exposent uniquement un pont temps réel dorsal passent par le transport relais du Gateway, de sorte que les identifiants et les sockets fournisseur restent côté serveur tandis que laudio du navigateur transite par des RPC Gateway authentifiés. Linvite de session Realtime est assemblée par le Gateway ; `talk.realtime.session` naccepte pas les remplacements dinstructions fournis par lappelant.
<Accordion title="Mode Talk (temps réel dans le navigateur)">
Le mode Talk utilise un fournisseur vocal temps réel enregistré. Configurez OpenAI avec `talk.provider: "openai"` plus `talk.providers.openai.apiKey`, ou configurez Google avec `talk.provider: "google"` plus `talk.providers.google.apiKey` ; la configuration du fournisseur temps réel Voice Call peut toujours être réutilisée comme solution de repli. Le navigateur ne reçoit jamais de clé API de fournisseur standard. OpenAI reçoit un secret client Realtime éphémère pour WebRTC. Google Live reçoit un token dauthentification Live API contraint et à usage unique pour une session WebSocket de navigateur, avec les instructions et déclarations doutils verrouillées dans le token par le Gateway. Les fournisseurs qui nexposent quun pont temps réel côté backend passent par le transport relais du Gateway, de sorte que les identifiants et les sockets fournisseur restent côté serveur tandis que laudio du navigateur circule via des RPC Gateway authentifiés. Le prompt de session Realtime est assemblé par le Gateway ; `talk.realtime.session` naccepte pas de remplacements dinstructions fournis par lappelant.
Dans le compositeur de Chat, le contrôle Parler est le bouton à vagues à côté du bouton de dictée au microphone. Lorsque Parler démarre, la ligne détat du compositeur affiche `Connecting Talk...`, puis `Talk live` pendant que laudio est connecté, ou `Asking OpenClaw...` pendant quun appel doutil temps réel consulte le modèle plus grand configuré via `chat.send`.
Dans le compositeur de chat, le contrôle Talk est le bouton à ondes à côté du bouton de dictée au microphone. Lorsque Talk démarre, la ligne détat du compositeur affiche `Connecting Talk...`, puis `Talk live` pendant que laudio est connecté, ou `Asking OpenClaw...` lorsquun appel doutil temps réel consulte le modèle plus grand configuré via `chat.send`.
Smoke en direct pour mainteneur : `OPENAI_API_KEY=... GEMINI_API_KEY=... node --import tsx scripts/dev/realtime-talk-live-smoke.ts` vérifie léchange SDP WebRTC navigateur dOpenAI, la configuration WebSocket navigateur à jeton contraint de Google Live et ladaptateur navigateur relais du Gateway avec un média de microphone simulé. La commande naffiche que létat du fournisseur et ne journalise pas les secrets.
Smoke test live mainteneur : `OPENAI_API_KEY=... GEMINI_API_KEY=... node --import tsx scripts/dev/realtime-talk-live-smoke.ts` vérifie léchange SDP WebRTC du navigateur OpenAI, la configuration WebSocket de navigateur à token contraint Google Live et ladaptateur de navigateur relais du Gateway avec un faux média de microphone. La commande naffiche que létat du fournisseur et ne journalise pas de secrets.
</Accordion>
<Accordion title="Stop and abort">
<Accordion title="Arrêt et abandon">
- Cliquez sur **Arrêter** (appelle `chat.abort`).
- Pendant quune exécution est active, les suivis normaux sont mis en file dattente. Cliquez sur **Orienter** sur un message en file dattente pour injecter ce suivi dans le tour en cours.
- Pendant quune exécution est active, les suivis normaux sont mis en file dattente. Cliquez sur **Orienter** sur un message en file dattente pour injecter ce suivi dans le tour en cours dexécution.
- Saisissez `/stop` (ou des phrases dabandon autonomes comme `stop`, `stop action`, `stop run`, `stop openclaw`, `please stop`) pour abandonner hors bande.
- `chat.abort` prend en charge `{ sessionKey }` (sans `runId`) pour abandonner toutes les exécutions actives de cette session.
</Accordion>
<Accordion title="Abort partial retention">
- Lorsquune exécution est abandonnée, le texte partiel de lassistant peut tout de même être affiché dans linterface utilisateur.
- Le Gateway conserve le texte partiel dassistant abandonné dans lhistorique de transcription lorsquune sortie mise en mémoire tampon existe.
- Les entrées conservées incluent des métadonnées dabandon afin que les consommateurs de transcription puissent distinguer les fragments partiels abandonnés de la sortie dachèvement normale.
<Accordion title="Conservation partielle lors dun abandon">
- Lorsquune exécution est abandonnée, le texte partiel de lassistant peut toujours être affiché dans linterface utilisateur.
- Le Gateway conserve dans lhistorique de transcription le texte partiel dassistant abandonné lorsquune sortie mise en mémoire tampon existe.
- Les entrées conservées incluent des métadonnées dabandon afin que les consommateurs de transcription puissent distinguer les fragments issus dun abandon de la sortie dachèvement normale.
</Accordion>
</AccordionGroup>
## Installation PWA et web push
## Installation PWA et Web Push
Linterface Control fournit un `manifest.webmanifest` et un service worker, ce qui permet aux navigateurs modernes de linstaller comme PWA autonome. Web Push permet au Gateway de réveiller la PWA installée avec des notifications même lorsque longlet ou la fenêtre du navigateur nest pas ouvert.
La Control UI fournit un `manifest.webmanifest` et un service worker ; les navigateurs modernes peuvent donc linstaller comme PWA autonome. Web Push permet au Gateway de réveiller la PWA installée avec des notifications même lorsque longlet ou la fenêtre du navigateur nest pas ouvert.
| Surface | Ce quelle fait |
| ----------------------------------------------------- | ------------------------------------------------------------------ |
| ----------------------------------------------------- | ----------------------------------------------------------------- |
| `ui/public/manifest.webmanifest` | Manifeste PWA. Les navigateurs proposent « Installer lapplication » une fois quil est accessible. |
| `ui/public/sw.js` | Service worker qui gère les événements `push` et les clics de notification. |
| `push/vapid-keys.json` (sous le répertoire détat OpenClaw) | Paire de clés VAPID générée automatiquement utilisée pour signer les charges utiles Web Push. |
| `push/web-push-subscriptions.json` | Points de terminaison dabonnement de navigateur conservés. |
| `ui/public/sw.js` | Service worker qui gère les événements `push` et les clics sur les notifications. |
| `push/vapid-keys.json` (sous le répertoire détat OpenClaw) | Paire de clés VAPID générée automatiquement pour signer les charges utiles Web Push. |
| `push/web-push-subscriptions.json` | Points de terminaison dabonnement navigateur conservés. |
Remplacez la paire de clés VAPID via des variables denvironnement sur le processus Gateway lorsque vous voulez épingler les clés (pour les déploiements multi-hôtes, la rotation des secrets ou les tests) :
Remplacez la paire de clés VAPID via des variables denvironnement sur le processus Gateway lorsque vous voulez figer les clés (pour les déploiements multi-hôtes, la rotation des secrets ou les tests) :
- `OPENCLAW_VAPID_PUBLIC_KEY`
- `OPENCLAW_VAPID_PRIVATE_KEY`
- `OPENCLAW_VAPID_SUBJECT` (par défaut `mailto:openclaw@localhost`)
Linterface Control utilise ces méthodes Gateway limitées par portée pour enregistrer et tester les abonnements de navigateur :
La Control UI utilise ces méthodes Gateway limitées par portée pour enregistrer et tester les abonnements navigateur :
- `push.web.vapidPublicKey` — récupère la clé publique VAPID active.
- `push.web.subscribe` — enregistre un `endpoint` plus `keys.p256dh`/`keys.auth`.
@ -218,19 +219,19 @@ Linterface Control utilise ces méthodes Gateway limitées par portée pour e
- `push.web.test` — envoie une notification de test à labonnement de lappelant.
<Note>
Web Push est indépendant du chemin relais APNS iOS (voir [Configuration](/fr/gateway/configuration) pour le push adossé à un relais) et de la méthode `push.test` existante, qui ciblent lappairage mobile natif.
Web Push est indépendant du chemin relais iOS APNS (voir [Configuration](/fr/gateway/configuration) pour le push adossé à un relais) et de la méthode `push.test` existante, qui cible lappairage mobile natif.
</Note>
## Intégrations hébergées
Les messages dassistant peuvent afficher du contenu web hébergé en ligne avec le shortcode `[embed ...]`. La politique de sandbox iframe est contrôlée par `gateway.controlUi.embedSandbox` :
Les messages dassistant peuvent afficher du contenu web hébergé en ligne avec le shortcode `[embed ...]`. La politique de sandbox de liframe est contrôlée par `gateway.controlUi.embedSandbox` :
<Tabs>
<Tab title="strict">
Désactive lexécution de scripts dans les intégrations hébergées.
</Tab>
<Tab title="scripts (default)">
Autorise les intégrations interactives tout en conservant lisolation dorigine ; cest la valeur par défaut et elle suffit généralement pour les jeux/widgets de navigateur autonomes.
<Tab title="scripts (par défaut)">
Autorise les intégrations interactives tout en conservant lisolation dorigine ; cest le comportement par défaut et il suffit généralement pour les jeux/widgets de navigateur autonomes.
</Tab>
<Tab title="trusted">
Ajoute `allow-same-origin` en plus de `allow-scripts` pour les documents du même site qui ont intentionnellement besoin de privilèges plus forts.
@ -250,14 +251,14 @@ Exemple :
```
<Warning>
Utilisez `trusted` uniquement lorsque le document intégré a réellement besoin du comportement même origine. Pour la plupart des jeux générés par agent et des canevas interactifs, `scripts` est le choix le plus sûr.
Nutilisez `trusted` que lorsque le document intégré a réellement besoin dun comportement same-origin. Pour la plupart des jeux générés par agent et des canevas interactifs, `scripts` est le choix le plus sûr.
</Warning>
Les URL dintégration externes absolues `http(s)` restent bloquées par défaut. Si vous voulez intentionnellement que `[embed url="https://..."]` charge des pages tierces, définissez `gateway.controlUi.allowExternalEmbedUrls: true`.
## Largeur des messages de chat
Les messages de chat groupés utilisent une largeur maximale lisible par défaut. Les déploiements sur grands écrans peuvent la remplacer sans modifier le CSS fourni en définissant `gateway.controlUi.chatMessageMaxWidth` :
Les messages de chat groupés utilisent une largeur maximale lisible par défaut. Les déploiements sur écrans larges peuvent la remplacer sans modifier le CSS groupé en définissant `gateway.controlUi.chatMessageMaxWidth` :
```json5
{
@ -274,8 +275,8 @@ La valeur est validée avant datteindre le navigateur. Les valeurs prises en
## Accès tailnet (recommandé)
<Tabs>
<Tab title="Integrated Tailscale Serve (preferred)">
Gardez le Gateway sur loopback et laissez Tailscale Serve le relayer avec HTTPS :
<Tab title="Tailscale Serve intégré (préféré)">
Gardez le Gateway sur loopback et laissez Tailscale Serve le proxifier avec HTTPS :
```bash
openclaw gateway --tailscale serve
@ -285,16 +286,16 @@ La valeur est validée avant datteindre le navigateur. Les valeurs prises en
- `https://<magicdns>/` (ou votre `gateway.controlUi.basePath` configuré)
Par défaut, les requêtes Serve de linterface Control/WebSocket peuvent sauthentifier via les en-têtes didentité Tailscale (`tailscale-user-login`) lorsque `gateway.auth.allowTailscale` est `true`. OpenClaw vérifie lidentité en résolvant ladresse `x-forwarded-for` avec `tailscale whois` et en la faisant correspondre à len-tête, et naccepte ces requêtes que lorsquelles atteignent loopback avec les en-têtes `x-forwarded-*` de Tailscale. Pour les sessions opérateur de linterface Control avec identité dappareil de navigateur, ce chemin Serve vérifié saute également laller-retour dappairage dappareil ; les navigateurs sans appareil et les connexions de rôle de nœud suivent toujours les vérifications dappareil normales. Définissez `gateway.auth.allowTailscale: false` si vous voulez exiger des identifiants explicites à secret partagé même pour le trafic Serve. Utilisez ensuite `gateway.auth.mode: "token"` ou `"password"`.
Par défaut, les requêtes Control UI/WebSocket Serve peuvent sauthentifier via les en-têtes didentité Tailscale (`tailscale-user-login`) lorsque `gateway.auth.allowTailscale` vaut `true`. OpenClaw vérifie lidentité en résolvant ladresse `x-forwarded-for` avec `tailscale whois` et en la faisant correspondre à len-tête, et ne les accepte que lorsque la requête atteint loopback avec les en-têtes `x-forwarded-*` de Tailscale. Pour les sessions opérateur Control UI avec identité dappareil navigateur, ce chemin Serve vérifié saute aussi laller-retour dappairage dappareil ; les navigateurs sans appareil et les connexions à rôle de nœud suivent toujours les vérifications dappareil normales. Définissez `gateway.auth.allowTailscale: false` si vous voulez exiger des identifiants explicites à secret partagé même pour le trafic Serve. Utilisez alors `gateway.auth.mode: "token"` ou `"password"`.
Pour ce chemin didentité Serve asynchrone, les tentatives dauthentification échouées pour la même IP cliente et la même portée dauthentification sont sérialisées avant les écritures de limitation de débit. Des nouvelles tentatives incorrectes simultanées depuis le même navigateur peuvent donc afficher `retry later` sur la deuxième requête au lieu de deux non-correspondances simples en concurrence parallèle.
Pour ce chemin didentité Serve asynchrone, les tentatives dauthentification échouées pour la même IP cliente et la même portée dauthentification sont sérialisées avant les écritures de limite de débit. Des nouvelles tentatives incorrectes concurrentes depuis le même navigateur peuvent donc afficher `retry later` sur la deuxième requête au lieu de deux simples non-correspondances en concurrence parallèle.
<Warning>
Lauthentification Serve sans jeton suppose que lhôte du Gateway est fiable. Si du code local non fiable peut sexécuter sur cet hôte, exigez une authentification par jeton/mot de passe.
Lauthentification Serve sans token suppose que lhôte du gateway est fiable. Si du code local non fiable peut sexécuter sur cet hôte, exigez une authentification par token/mot de passe.
</Warning>
</Tab>
<Tab title="Bind to tailnet + token">
<Tab title="Lier au tailnet + token">
```bash
openclaw gateway --bind tailnet --token "$(openssl rand -hex 32)"
```
@ -310,21 +311,21 @@ La valeur est validée avant datteindre le navigateur. Les valeurs prises en
## HTTP non sécurisé
Si vous ouvrez le tableau de bord via HTTP simple (`http://<lan-ip>` ou `http://<tailscale-ip>`), le navigateur sexécute dans un **contexte non sécurisé** et bloque WebCrypto. Par défaut, OpenClaw **bloque** les connexions de linterface Control sans identité dappareil.
Si vous ouvrez le tableau de bord via HTTP simple (`http://<lan-ip>` ou `http://<tailscale-ip>`), le navigateur sexécute dans un **contexte non sécurisé** et bloque WebCrypto. Par défaut, OpenClaw **bloque** les connexions Control UI sans identité dappareil.
Exceptions documentées :
- compatibilité HTTP non sécurisé limitée à localhost avec `gateway.controlUi.allowInsecureAuth=true`
- authentification opérateur réussie de linterface Control via `gateway.auth.mode: "trusted-proxy"`
- authentification Control UI opérateur réussie via `gateway.auth.mode: "trusted-proxy"`
- option de dernier recours `gateway.controlUi.dangerouslyDisableDeviceAuth=true`
**Correctif recommandé :** utilisez HTTPS (Tailscale Serve) ou ouvrez linterface localement :
**Correctif recommandé :** utilisez HTTPS (Tailscale Serve) ou ouvrez lUI localement :
- `https://<magicdns>/` (Serve)
- `http://127.0.0.1:18789/` (sur lhôte du Gateway)
<AccordionGroup>
<Accordion title="Comportement du basculeur dauthentification non sécurisée">
<Accordion title="Comportement du basculement insecure-auth">
```json5
{
gateway: {
@ -335,14 +336,14 @@ Exceptions documentées :
}
```
`allowInsecureAuth` est uniquement un basculeur de compatibilité locale :
`allowInsecureAuth` est uniquement un basculement de compatibilité locale :
- Il permet aux sessions de linterface de contrôle localhost de continuer sans identité dappareil dans des contextes HTTP non sécurisés.
- Il permet aux sessions de lUI de contrôle localhost de continuer sans identité dappareil dans les contextes HTTP non sécurisés.
- Il ne contourne pas les vérifications dappairage.
- Il nassouplit pas les exigences didentité dappareil distant (non-localhost).
</Accordion>
<Accordion title="Solution durgence uniquement">
<Accordion title="Break-glass uniquement">
```json5
{
gateway: {
@ -354,54 +355,54 @@ Exceptions documentées :
```
<Warning>
`dangerouslyDisableDeviceAuth` désactive les vérifications didentité dappareil de linterface de contrôle et constitue une forte dégradation de la sécurité. Rétablissez rapidement le réglage après une utilisation durgence.
`dangerouslyDisableDeviceAuth` désactive les vérifications didentité dappareil de lUI de contrôle et constitue un affaiblissement de sécurité sévère. Rétablissez rapidement la configuration après lutilisation durgence.
</Warning>
</Accordion>
<Accordion title="Note sur le proxy de confiance">
- Une authentification de proxy de confiance réussie peut autoriser des sessions dinterface de contrôle **opérateur** sans identité dappareil.
- Cela ne sétend **pas** aux sessions dinterface de contrôle avec rôle de nœud.
- Les proxys inverses local loopback sur le même hôte ne satisfont toujours pas lauthentification de proxy de confiance ; consultez [Authentification par proxy de confiance](/fr/gateway/trusted-proxy-auth).
- Une authentification par proxy de confiance réussie peut autoriser des sessions dUI de contrôle **operator** sans identité dappareil.
- Cela ne sétend **pas** aux sessions dUI de contrôle de rôle node.
- Les proxys inverses local loopback sur le même hôte ne satisfont toujours pas à lauthentification par proxy de confiance ; consultez [Authentification par proxy de confiance](/fr/gateway/trusted-proxy-auth).
</Accordion>
</AccordionGroup>
Consultez [Tailscale](/fr/gateway/tailscale) pour les instructions de configuration HTTPS.
Consultez [Tailscale](/fr/gateway/tailscale) pour des conseils de configuration HTTPS.
## Politique de sécurité du contenu
Linterface de contrôle est livrée avec une politique `img-src` stricte : seuls les ressources de **même origine**, les URL `data:` et les URL `blob:` générées localement sont autorisées. Les URL dimages distantes `http(s)` et relatives au protocole sont rejetées par le navigateur et ne déclenchent aucune requête réseau.
LUI de contrôle est fournie avec une politique `img-src` stricte : seuls les éléments **same-origin**, les URL `data:` et les URL `blob:` générées localement sont autorisés. Les URL dimages distantes `http(s)` et relatives au protocole sont rejetées par le navigateur et ne déclenchent pas de requêtes réseau.
Ce que cela signifie en pratique :
- Les avatars et les images servis sous des chemins relatifs (par exemple `/avatars/<id>`) saffichent toujours, y compris les routes davatars authentifiées que linterface récupère et convertit en URL `blob:` locales.
- Les avatars et images servis sous des chemins relatifs (par exemple `/avatars/<id>`) saffichent toujours, y compris les routes davatar authentifiées que lUI récupère et convertit en URL `blob:` locales.
- Les URL inline `data:image/...` saffichent toujours (utile pour les charges utiles dans le protocole).
- Les URL `blob:` locales créées par linterface de contrôle saffichent toujours.
- Les URL davatar distantes émises par les métadonnées de canal sont retirées par les assistants davatar de linterface de contrôle et remplacées par le logo/badge intégré, de sorte quun canal compromis ou malveillant ne puisse pas forcer des récupérations dimages distantes arbitraires depuis le navigateur dun opérateur.
- Les URL `blob:` locales créées par lUI de contrôle saffichent toujours.
- Les URL davatar distantes émises par les métadonnées de canal sont supprimées par les assistants davatar de lUI de contrôle et remplacées par le logo/badge intégré, de sorte quun canal compromis ou malveillant ne peut pas forcer des récupérations arbitraires dimages distantes depuis le navigateur dun opérateur.
Vous navez rien à changer pour obtenir ce comportement : il est toujours activé et nest pas configurable.
Vous navez rien à modifier pour obtenir ce comportement : il est toujours activé et nest pas configurable.
## Authentification de la route davatar
Lorsque lauthentification du Gateway est configurée, le point de terminaison davatar de linterface de contrôle exige le même jeton Gateway que le reste de lAPI :
Lorsque lauthentification du Gateway est configurée, le point de terminaison davatar de lUI de contrôle exige le même jeton Gateway que le reste de lAPI :
- `GET /avatar/<agentId>` renvoie limage davatar uniquement aux appelants authentifiés. `GET /avatar/<agentId>?meta=1` renvoie les métadonnées de lavatar selon la même règle.
- Les requêtes non authentifiées vers lune ou lautre route sont rejetées (comme la route sœur assistant-media). Cela empêche la route davatar de divulguer lidentité de lagent sur des hôtes qui sont autrement protégés.
- Linterface de contrôle transmet elle-même le jeton Gateway comme en-tête bearer lors de la récupération des avatars, et utilise des URL blob authentifiées afin que limage saffiche toujours dans les tableaux de bord.
- `GET /avatar/<agentId>` renvoie limage davatar uniquement aux appelants authentifiés. `GET /avatar/<agentId>?meta=1` renvoie les métadonnées davatar selon la même règle.
- Les requêtes non authentifiées vers lune ou lautre route sont rejetées (comme pour la route sœur assistant-media). Cela empêche la route davatar de divulguer lidentité de lagent sur des hôtes autrement protégés.
- LUI de contrôle transfère elle-même le jeton Gateway comme en-tête bearer lors de la récupération des avatars, et utilise des URL blob authentifiées afin que limage saffiche toujours dans les tableaux de bord.
Si vous désactivez lauthentification du Gateway (non recommandé sur les hôtes partagés), la route davatar devient également non authentifiée, conformément au reste du Gateway.
## Authentification de la route des médias de lassistant
## Authentification de la route média de lassistant
Lorsque lauthentification du Gateway est configurée, les aperçus de médias locaux de lassistant utilisent une route en deux étapes :
- `GET /__openclaw__/assistant-media?meta=1&source=<path>` exige lauthentification opérateur normale de linterface de contrôle. Le navigateur envoie le jeton Gateway comme en-tête bearer lors de la vérification de disponibilité.
- Les réponses de métadonnées réussies incluent un `mediaTicket` de courte durée limité à ce chemin source exact.
- Les URL dimage, daudio, de vidéo et de document rendues par le navigateur utilisent `mediaTicket=<ticket>` au lieu du jeton Gateway actif ou du mot de passe. Le ticket expire rapidement et ne peut pas autoriser une source différente.
- `GET /__openclaw__/assistant-media?meta=1&source=<path>` exige lauthentification operator normale de lUI de contrôle. Le navigateur envoie le jeton Gateway comme en-tête bearer lors de la vérification de la disponibilité.
- Les réponses de métadonnées réussies incluent un `mediaTicket` à courte durée de vie limité à ce chemin source exact.
- Les URL dimages, daudio, de vidéos et de documents rendues par le navigateur utilisent `mediaTicket=<ticket>` au lieu du jeton Gateway actif ou du mot de passe. Le ticket expire rapidement et ne peut pas autoriser une autre source.
Cela rend le rendu normal des médias compatible avec les éléments multimédias natifs du navigateur sans placer didentifiants Gateway réutilisables dans des URL de médias visibles.
Cela maintient le rendu multimédia normal compatible avec les éléments multimédias natifs du navigateur sans placer didentifiants Gateway réutilisables dans des URL de média visibles.
## Construction de linterface
## Construction de lUI
Le Gateway sert les fichiers statiques depuis `dist/control-ui`. Construisez-les avec :
@ -409,7 +410,7 @@ Le Gateway sert les fichiers statiques depuis `dist/control-ui`. Construisez-les
pnpm ui:build
```
Base absolue facultative (lorsque vous voulez des URL de ressources fixes) :
Base absolue facultative (lorsque vous voulez des URL déléments fixes) :
```bash
OPENCLAW_CONTROL_UI_BASE_PATH=/openclaw/ pnpm ui:build
@ -421,14 +422,14 @@ Pour le développement local (serveur de développement séparé) :
pnpm ui:dev
```
Pointez ensuite linterface vers votre URL WS du Gateway (par exemple `ws://127.0.0.1:18789`).
Pointez ensuite lUI vers lURL WS de votre Gateway (par exemple `ws://127.0.0.1:18789`).
## Débogage/tests : serveur de développement + Gateway distant
Linterface de contrôle est constituée de fichiers statiques ; la cible WebSocket est configurable et peut être différente de lorigine HTTP. Cest pratique lorsque vous voulez le serveur de développement Vite localement, mais que le Gateway sexécute ailleurs.
LUI de contrôle est constituée de fichiers statiques ; la cible WebSocket est configurable et peut être différente de lorigine HTTP. Cest pratique lorsque vous voulez le serveur de développement Vite localement, mais que le Gateway sexécute ailleurs.
<Steps>
<Step title="Démarrer le serveur de développement de linterface">
<Step title="Démarrer le serveur de développement de lUI">
```bash
pnpm ui:dev
```
@ -438,7 +439,7 @@ Linterface de contrôle est constituée de fichiers statiques ; la cible WebS
http://localhost:5173/?gatewayUrl=ws%3A%2F%2F<gateway-host>%3A18789
```
Authentification ponctuelle facultative (si nécessaire) :
Authentification unique facultative (si nécessaire) :
```text
http://localhost:5173/?gatewayUrl=wss%3A%2F%2F<gateway-host>%3A18789#token=<gateway-token>
@ -450,15 +451,15 @@ Linterface de contrôle est constituée de fichiers statiques ; la cible WebS
<AccordionGroup>
<Accordion title="Notes">
- `gatewayUrl` est stocké dans localStorage après le chargement et supprimé de lURL.
- Si vous transmettez un point de terminaison complet `ws://` ou `wss://` via `gatewayUrl`, encodez en URL la valeur `gatewayUrl` afin que le navigateur analyse correctement la chaîne de requête.
- `token` doit être transmis via le fragment dURL (`#token=...`) chaque fois que possible. Les fragments ne sont pas envoyés au serveur, ce qui évite les fuites dans les journaux de requêtes et le Referer. Les paramètres de requête hérités `?token=` sont encore importés une fois par compatibilité, mais uniquement comme solution de repli, et sont supprimés immédiatement après lamorçage.
- Si vous transmettez un point de terminaison `ws://` ou `wss://` complet via `gatewayUrl`, encodez en URL la valeur `gatewayUrl` afin que le navigateur analyse correctement la chaîne de requête.
- `token` doit être transmis via le fragment dURL (`#token=...`) chaque fois que possible. Les fragments ne sont pas envoyés au serveur, ce qui évite les fuites dans les journaux de requêtes et le Referer. Les anciens paramètres de requête `?token=` sont toujours importés une fois pour compatibilité, mais uniquement en solution de repli, et sont supprimés immédiatement après lamorçage.
- `password` est conservé uniquement en mémoire.
- Lorsque `gatewayUrl` est défini, linterface ne se rabat pas sur les identifiants de configuration ou denvironnement. Fournissez explicitement `token` (ou `password`). Labsence didentifiants explicites est une erreur.
- Lorsque `gatewayUrl` est défini, lUI ne revient pas aux identifiants de configuration ou denvironnement. Fournissez explicitement `token` (ou `password`). Labsence didentifiants explicites est une erreur.
- Utilisez `wss://` lorsque le Gateway est derrière TLS (Tailscale Serve, proxy HTTPS, etc.).
- `gatewayUrl` nest accepté que dans une fenêtre de premier niveau (non intégrée) afin dempêcher le clickjacking.
- Les déploiements non-loopback de linterface de contrôle doivent définir explicitement `gateway.controlUi.allowedOrigins` (origines complètes). Cela inclut les configurations de développement distantes.
- Le démarrage du Gateway peut initialiser des origines locales comme `http://localhost:<port>` et `http://127.0.0.1:<port>` à partir de ladresse de liaison et du port dexécution effectifs, mais les origines de navigateurs distants nécessitent toujours des entrées explicites.
- Nutilisez pas `gateway.controlUi.allowedOrigins: ["*"]` sauf pour des tests locaux strictement contrôlés. Cela signifie autoriser nimporte quelle origine de navigateur, et non « correspondre à lhôte que jutilise ».
- `gatewayUrl` nest accepté que dans une fenêtre de premier niveau (non intégrée) afin dempêcher le détournement de clic.
- Les déploiements non-loopback de lUI de contrôle doivent définir explicitement `gateway.controlUi.allowedOrigins` (origines complètes). Cela inclut les configurations de développement distantes.
- Le démarrage du Gateway peut initialiser des origines locales telles que `http://localhost:<port>` et `http://127.0.0.1:<port>` à partir du bind et du port dexécution effectifs, mais les origines de navigateur distantes nécessitent toujours des entrées explicites.
- Nutilisez pas `gateway.controlUi.allowedOrigins: ["*"]`, sauf pour des tests locaux strictement contrôlés. Cela signifie autoriser toute origine de navigateur, et non « correspondre à lhôte que jutilise ».
- `gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=true` active le mode de repli dorigine par en-tête Host, mais cest un mode de sécurité dangereux.
</Accordion>
@ -478,9 +479,9 @@ Exemple :
Détails de configuration de laccès distant : [Accès distant](/fr/gateway/remote).
## Liens connexes
## Connexe
- [Tableau de bord](/fr/web/dashboard) — tableau de bord du Gateway
- [Contrôles détat](/fr/gateway/health) — surveillance de létat du Gateway
- [TUI](/fr/web/tui) — interface utilisateur en terminal
- [WebChat](/fr/web/webchat) — interface de chat dans le navigateur
- [Vérifications dintégrité](/fr/gateway/health) — surveillance de lintégrité du Gateway
- [TUI](/fr/web/tui) — interface utilisateur de terminal
- [WebChat](/fr/web/webchat) — interface de chat basée sur le navigateur