Sin tocar archivos de config: configura OpenClaw entero desde la Web UI
Demasiados tutoriales te mandan a editar JSON el primer día y luego se preguntan por qué la gente huye. La buena noticia es esta: hay una interfaz que puedes clicar.
Qué vas a aprender
- Abrir la Web UI y completar la autenticación
- Entender formulario vs Raw JSON
- Configurar routing de varios workspaces desde la UI
- Saber dónde está cada función principal
Abre la Web UI
Paso 1: confirma que el Gateway está corriendo
openclaw gatewayPaso 2: abre el navegador
http://127.0.0.1:18789/
Si configuraste basePath, por ejemplo /openclaw:
http://127.0.0.1:18789/openclaw
Paso 3: resuelve la autenticación
| Lo que ves | Solución |
|---|---|
pairing required |
Ejecuta openclaw devices list y luego openclaw devices approve <requestId> |
| Pide token | Pega el token del onboarding |
💡 Puedes cambiar el idioma de la interfaz en la sección Access.
Dos formas de editar la config: formulario vs Raw JSON
Ve a la página Config y verás dos estilos:
Modo formulario: campos visuales, ideal para principiantes o cambios pequeños.
Raw JSON: edición directa del archivo, mejor para usuarios avanzados o cambios grandes.
Ambos editan el mismo archivo: ~/.openclaw/openclaw.json.
El caso más común: distintos grupos de Telegram usan asistentes distintos
Escenario A: mismo bot, distintos grupos, distintos workspaces
Pasa a Raw JSON y añade una estructura como esta:
{
"agents": {
"list": [
{ "id": "main", "name": "Principal", "workspace": "~/.openclaw/workspace-main", "default": true },
{ "id": "project-a", "name": "Proyecto A", "workspace": "~/.openclaw/workspace-project-a" },
{ "id": "project-b", "name": "Proyecto B", "workspace": "~/.openclaw/workspace-project-b" }
]
},
"bindings": [
{ "agentId": "project-a", "match": { "channel": "telegram", "peer": { "kind": "group", "id": "-1001234567890" } } },
{ "agentId": "project-b", "match": { "channel": "telegram", "peer": { "kind": "group", "id": "-1009876543210" } } },
{ "agentId": "main", "match": { "channel": "telegram" } }
],
"channels": {
"telegram": {
"enabled": true,
"botToken": "tu bot token",
"dmPolicy": "pairing",
"groups": { "*": { "requireMention": true } }
}
}
}¿Cómo encontrar el ID del grupo?
- Método 1: envía un mensaje al grupo y ejecuta
openclaw logs --follow, luego revisachat.id - Método 2: reenvía un mensaje a @userinfobot
Escenario B: distintas cuentas de bot, distintos workspaces
{
"agents": {
"list": [
{ "id": "main", "workspace": "~/.openclaw/workspace-main" },
{ "id": "alerts", "workspace": "~/.openclaw/workspace-alerts" }
]
},
"bindings": [
{ "agentId": "main", "match": { "channel": "telegram", "accountId": "default" } },
{ "agentId": "alerts", "match": { "channel": "telegram", "accountId": "alerts" } }
],
"channels": {
"telegram": {
"accounts": {
"default": { "botToken": "123456:ABC...", "dmPolicy": "pairing" },
"alerts": { "botToken": "987654:XYZ...", "dmPolicy": "allowlist", "allowFrom": ["tg:123456789"] }
}
}
}
}No olvides guardar
Pulsa Save / Apply. OpenClaw hará dos cosas:
- Validar la configuración
- Aplicarla, normalmente con recarga en caliente
⚠️ Si aparece conflicto de
baseHash, algo cambió la config en otro sitio. Recarga y vuelve a intentarlo.
¿Qué más puede hacer la Web UI?
| Sección | Para qué sirve |
|---|---|
| Chat | Hablar con el asistente directamente desde el navegador |
| Sessions | Revisar y gestionar sesiones |
| Cron | Añadir, editar o ejecutar tareas programadas |
| Skills | Activar, desactivar e instalar Skills |
| Channels | Revisar el estado de los canales |
| Debug / Logs | Ver logs y lanzar acciones RPC manuales |
Tabla rápida
| Quiero... | Dónde mirarlo en la Web UI |
|---|---|
| Enviar distintos grupos de Telegram a distintos workspaces | Config → Raw JSON → agents + bindings |
| Enviar distintas cuentas de bot a distintos workspaces | Config → channels.telegram.accounts + bindings |
| Cambiar el bot token | Config → channels.telegram.botToken |
| Gestionar schedules | Pestaña Cron |
| Ver logs en vivo | Pestaña Debug / Logs |
La idea clave es esta: el routing de workspaces siempre lo deciden agents + bindings. La Web UI solo te da una forma más cómoda de editarlo.