Compatible avec OpenClaw v2026.2 | Cet article suppose que vous avez terminé l’installation de base et souhaitez gérer OpenClaw via le navigateur.
TL;DR : Accéder au Web UI via http://127.0.0.1:18789, qui comprend les pages Chat (conversation), Sessions (sessions), Config (configuration), Nodes (nœuds), Logs (journaux) et Skills (compétences). Canvas est un espace de travail visuel piloté par l’Agent, permettant de créer des graphiques, tableaux de bord et interfaces interactives. Accès distant : Tailscale Serve ou tunnel SSH. Le Canvas mobile est disponible dans les applications iOS/Android.
Web Control UI
Accéder au Web UI
Après avoir lancé le Gateway, ouvrez votre navigateur à l’adresse :
http://127.0.0.1:18789
Vue d’ensemble de l’interface
flowchart LR
subgraph WebUI["Web Control UI"]
Chat[Chat – Conversation]
Sessions[Sessions]
Config[Config – Configuration]
Nodes[Nodes – Nœuds]
Logs[Logs – Journaux]
Skills[Skills – Compétences]
end
subgraph Features["Fonctionnalités"]
F1[Conversation en temps réel]
F2[Gestion des sessions]
F3[Édition de la configuration]
F4[Contrôle des nœuds]
F5[Consultation des journaux]
F6[Gestion des compétences]
end
Chat --> F1
Sessions --> F2
Config --> F3
Nodes --> F4
Logs --> F5
Skills --> F6
Fonctionnalités des pages
Chat (Conversation)
| Fonctionnalité | Description |
|---|---|
| Saisie de messages | Supporte le texte, Markdown et les blocs de code |
| Historique des messages | Affiche l’intégralité de l’historique de conversation |
| Appels d’outils | Affiche le processus et les résultats des appels d’outils |
| Processus de réflexion | Affichage optionnel du processus de réflexion de l’Agent |
| Statistiques de Token | Affiche la consommation de Token |
| Changement de modèle | Changer rapidement de modèle utilisé |
Sessions
| Fonctionnalité | Description |
|---|---|
| Liste des sessions | Voir toutes les sessions actives |
| Détails de session | Voir l’état et la configuration d’une session |
| Actions sur les sessions | Réinitialiser, supprimer, exporter une session |
| Changement de session | Basculer entre différentes sessions |
| Isolation des sessions | Voir les sessions par canal ou par utilisateur |
Config (Configuration)
| Fonctionnalité | Description |
|---|---|
| Édition de la configuration | Modifier les fichiers de configuration en ligne |
| Validation de la configuration | Validation en temps réel de la syntaxe |
| Rechargement à chaud | Prise en compte sans redémarrage |
| Export de la configuration | Exporter une sauvegarde de la configuration |
| Historique des modifications | Consulter l’historique des changements |
Nodes (Nœuds)
| Fonctionnalité | Description |
|---|---|
| Liste des nœuds | Voir les appareils connectés |
| État des nœuds | Afficher l’état en ligne, les permissions |
| Contrôle des nœuds | Activer/désactiver les fonctionnalités d’un nœud |
| Appairage de nœuds | Appairer un nouveau nœud |
Logs (Journaux)
| Fonctionnalité | Description |
|---|---|
| Journaux en temps réel | Affichage en streaming des journaux système |
| Filtrage des journaux | Filtrer par niveau ou par module |
| Recherche dans les journaux | Recherche par mot-clé |
| Export des journaux | Télécharger les fichiers de journaux |
Skills (Compétences)
| Fonctionnalité | Description |
|---|---|
| Liste des compétences | Voir les compétences installées |
| Installation de compétences | Installer depuis ClawHub |
| Configuration des compétences | Configurer les paramètres des compétences |
| Désactivation de compétences | Activer/désactiver les compétences |
Configurer le Web UI
{
"web": {
"enabled": true,
"port": 18789,
"bind": "loopback",
"auth": {
"mode": "password",
"password": "your-secure-password"
},
"theme": "dark"
}
}
| Paramètre | Description | Valeur par défaut |
|---|---|---|
enabled |
Activer le Web UI | true |
port |
Port d’écoute | 18789 |
bind |
Adresse de liaison | loopback |
auth.mode |
Mode d’authentification | none |
auth.password |
Mot de passe d’accès | - |
theme |
Thème | dark |
Accès distant
Méthode 1 : Tailscale
{
"gateway": {
"tailscale": {
"mode": "serve"
}
}
}
Accès via le réseau Tailscale :
https://your-tailnet-name.ts.net
Méthode 2 : Tunnel SSH
# Créer un tunnel SSH local
ssh -L 18789:localhost:18789 user@remote-server
# Puis accéder à
http://localhost:18789
Méthode 3 : Reverse proxy
Avec Caddy ou Nginx :
Caddyfile :
your-domain.com {
reverse_proxy localhost:18789
}
Canvas : espace de travail visuel
Qu’est-ce que Canvas ?
Canvas est un espace de travail visuel piloté par l’Agent. L’Agent peut :
- Créer des graphiques dynamiques
- Construire des interfaces interactives
- Afficher des données en temps réel
- Générer des tableaux de bord
- Intégrer du contenu externe
Architecture de Canvas
flowchart TB
subgraph Agent["Agent"]
PROMPT[Analyser la requête]
GEN[Générer A2UI]
EXEC[Exécuter l'opération]
end
subgraph Canvas["Canvas Runtime"]
RENDER[Moteur de rendu]
STATE[Gestion d'état]
EVENT[Gestion des événements]
end
subgraph UI["Interface utilisateur"]
DISPLAY[Afficher le Canvas]
INTERACT[Interaction utilisateur]
end
Agent --> Canvas
PROMPT --> GEN
GEN --> RENDER
RENDER --> DISPLAY
DISPLAY --> INTERACT
INTERACT --> EVENT
EVENT --> EXEC
Utilisation de base
Utiliser Canvas dans le chat
Utilisateur : Crée une application de liste de tâches simple
Agent : Je vais créer une application Canvas de liste de tâches...
[Génération des composants Canvas]
Commandes Canvas
| Commande | Description |
|---|---|
/canvas create |
Créer un nouveau Canvas |
/canvas show |
Afficher le Canvas actuel |
/canvas clear |
Vider le Canvas |
/canvas export |
Exporter le Canvas |
Composants Canvas
Composant texte
canvas.text({
content: "Hello, World!",
style: {
fontSize: "24px",
color: "#333",
fontWeight: "bold"
}
})
Composant bouton
canvas.button({
label: "Click Me",
onClick: () => {
console.log("Button clicked!")
},
style: {
background: "#3b82f6",
color: "white"
}
})
Composant liste
canvas.list({
items: ["Item 1", "Item 2", "Item 3"],
onSelect: (item) => {
console.log(`Selected: ${item}`)
}
})
Composant graphique
canvas.chart({
type: "bar",
data: {
labels: ["Jan", "Feb", "Mar"],
datasets: [{
label: "Revenue",
data: [100, 200, 150]
}]
}
})
Composant formulaire
canvas.form({
fields: [
{ name: "username", type: "text", label: "Username" },
{ name: "email", type: "email", label: "Email" },
{ name: "submit", type: "submit", label: "Submit" }
],
onSubmit: (data) => {
console.log("Form submitted:", data)
}
})
Exemples pratiques
Exemple 1 : Tableau de bord de données
// Code Canvas généré par l'Agent
canvas.render(`
<Dashboard>
<Header title="Sales Dashboard" />
<Row>
<Card title="Total Revenue" value="$125,430" trend="+12%" />
<Card title="Active Users" value="3,245" trend="+5%" />
<Card title="Conversion Rate" value="4.2%" trend="-1%" />
</Row>
<Row>
<Chart type="line" data={revenueData} title="Revenue Trend" />
<Chart type="bar" data={usersData} title="User Growth" />
</Row>
</Dashboard>
`)
Exemple 2 : Calculatrice interactive
canvas.render(`
<Calculator>
<Display value={display} />
<Keypad>
<Button onClick={() => input('7')}>7</Button>
<Button onClick={() => input('8')}>8</Button>
<Button onClick={() => input('9')}>9</Button>
<Button onClick={() => input('/')}>/</Button>
// ... more buttons
</Keypad>
</Calculator>
`)
const state = { display: '0' }
function input(value) {
state.display = calculate(state.display, value)
canvas.update()
}
Exemple 3 : Monitoring en temps réel
canvas.render(`
<Monitor>
<Header title="System Monitor" />
<Metrics>
<Metric
label="CPU Usage"
value={cpuUsage}
threshold={80}
unit="%"
/>
<Metric
label="Memory"
value={memoryUsed}
threshold={90}
unit="GB"
/>
<Metric
label="Disk I/O"
value={diskIO}
unit="MB/s"
/>
</Metrics>
<Chart type="line" data={historyData} realtime />
</Monitor>
`)
// Mise à jour périodique des données
setInterval(() => {
cpuUsage = getCpuUsage()
memoryUsed = getMemoryUsed()
diskIO = getDiskIO()
canvas.update()
}, 1000)
API Canvas
canvas.render(template)
Rend le contenu du Canvas.
canvas.render(`
<Container>
<Text>Hello</Text>
</Container>
`)
canvas.update()
Met à jour l’état du Canvas.
state.count++
canvas.update()
canvas.clear()
Vide le Canvas.
canvas.clear()
canvas.snapshot()
Capture un instantané du Canvas.
const image = await canvas.snapshot()
canvas.eval(code)
Exécute du code dans le contexte du Canvas.
await canvas.eval(`
document.getElementById('counter').innerText = '${count}'
`)
Bibliothèque de composants A2UI
Canvas utilise la bibliothèque de composants A2UI (Agent-to-UI) :
Composants de mise en page
| Composant | Description |
|---|---|
<Container> |
Conteneur |
<Row> |
Disposition horizontale |
<Column> |
Disposition verticale |
<Grid> |
Disposition en grille |
<Card> |
Conteneur carte |
Affichage de données
| Composant | Description |
|---|---|
<Text> |
Texte |
<Heading> |
Titre |
<List> |
Liste |
<Table> |
Tableau |
<Chart> |
Graphique |
Composants interactifs
| Composant | Description |
|---|---|
<Button> |
Bouton |
<Input> |
Champ de saisie |
<Select> |
Menu déroulant |
<Checkbox> |
Case à cocher |
<Form> |
Formulaire |
Collaboration entre Canvas et l’Agent
L’Agent crée un Canvas
Utilisateur : Crée-moi un tableau de suivi de l'avancement du projet
Agent : D'accord, je vais créer un Canvas de suivi de projet...
L’Agent va :
- Analyser le besoin
- Concevoir la mise en page
- Générer le code Canvas
- Rendre l’interface
Canvas déclenche l’Agent
Lorsque l’utilisateur interagit avec le Canvas, cela peut déclencher des actions de l’Agent :
canvas.button({
label: "Generate Report",
onClick: async () => {
await agent.send("Générer le rapport mensuel")
}
})
Utiliser Canvas sur différents appareils
macOS
Canvas s’affiche dans une fenêtre indépendante :
openclaw canvas show
iOS
Canvas est intégré dans l’application iOS Node :
- Ouvrir l’application OpenClaw iOS
- Basculer vers l’onglet Canvas
Android
Canvas est intégré dans l’application Android Node :
- Ouvrir l’application OpenClaw Android
- Basculer vers l’onglet Canvas
Web
Canvas s’affiche dans le Web UI :
- Ouvrir http://localhost:18789
- Cliquer sur l’onglet Canvas
Configurer Canvas
{
"canvas": {
"enabled": true,
"theme": "dark",
"autoUpdate": true,
"updateInterval": 1000,
"maxComponents": 100,
"persistState": true
}
}
| Paramètre | Description | Valeur par défaut |
|---|---|---|
enabled |
Activer Canvas | true |
theme |
Thème | dark |
autoUpdate |
Mise à jour automatique de l’état | true |
updateInterval |
Intervalle de mise à jour (ms) | 1000 |
maxComponents |
Nombre maximum de composants | 100 |
persistState |
Persistance de l’état | true |
Résumé
Le Web Control UI et Canvas font d’OpenClaw bien plus qu’un simple assistant de chat — c’est une plateforme d’interaction complète :
- Web UI : Panneau de contrôle dans le navigateur, pour tout gérer
- Canvas : Espace de travail visuel piloté par l’Agent
- A2UI : Riche bibliothèque de composants pour construire rapidement des interfaces
- Multi-appareils : Expérience unifiée sur macOS, iOS, Android et Web
Grâce à ces fonctionnalités, vous pouvez faire créer par l’Agent des tableaux de bord, des interfaces de gestion et des outils interactifs, élargissant considérablement les cas d’usage de l’assistant IA.
Résumé de cet article :
- Maîtrise des fonctionnalités et de l’utilisation du Web Control UI
- Apprentissage des concepts de base et des composants de Canvas
- Découverte de la bibliothèque de composants A2UI
- Compréhension de la collaboration entre Canvas et l’Agent
- Maîtrise de l’utilisation multi-appareils de Canvas
Historique des mises à jour :
- 2026-02-26 : Publication initiale, basée sur OpenClaw v2026.2
Navigation de la série :
- ← Précédent : Personnalisation de l’Agent
- → Suivant : Routage multi-Agent et isolation des sessions