Saltar al contenido principal

Notificaciones

Libre WebUI mantiene una bandeja de notificaciones duradera por usuario para que la actividad del equipo —menciones, mensajes directos, recursos compartidos, fallos de automatizaciones y recordatorios del calendario— llegue a las personas aunque la página correspondiente esté cerrada.

Mensajes emergentes de estado​

Los mensajes de estado breves, como un cambio guardado o una operación de Git completada, aparecen cerca de la parte superior de la página. Usa el botón Cerrar para descartar un mensaje emergente con el puntero o con el teclado. Al pasar el puntero por encima, el mensaje sigue visible para que puedas leerlo; al cerrarlo, el mensaje desaparece y la operación subyacente conserva su estado actual.

La bandeja de entrada​

Las notificaciones son primero filas de la base de datos: título y cuerpo cifrados en reposo, un máximo de 500 por usuario (se podan las más antiguas) y deduplicación mediante una clave de origen opcional, para que una publicación repetida se agrupe en una entrada en lugar de saturar la campana. La superficie REST permite enumerar, contar las no leídas, marcar como leída una o todas y eliminar.

La entrega en directo usa el flujo duradero por usuario notify:<userId> mediante GET /api/notifications/events (SSE). La identidad del flujo procede de la sesión autenticada, nunca de la entrada del cliente, y la bandeja SQL sigue siendo la fuente de verdad: un evento perdido se recupera leyendo la lista, no reproduciendo el flujo.

Qué produce notificaciones​

TipoCuándo se produce
channel-dmAlguien te envía un mensaje directo
channel-mentionAlguien hace @mentions de ti en un canal o responde a tu mensaje
channel-inviteTe añaden a un canal
shareAlguien comparte un recurso contigo
automation-failedFalla una de tus automatizaciones (salvo que haya desactivado el aviso)
calendar-reminderUn evento con recordatorio alcanza la hora prevista
work-run-finishedUno de tus agentes de Work contratados termina una ejecución
work-run-attentionUn agente contratado se detiene para pedir entrada o encuentra un error
work-takeoverUn agente de Work te pide que tomes el control de su pantalla
work-approvalUna ejecución de Work espera que apruebes una acción con efectos
systemAnuncios para toda la instancia

Las notificaciones siempre se publican únicamente para el usuario afectado; una mención a un nombre que no pertenece al canal no produce nada.

Las notificaciones también pueden disparar automatizaciones: una automatización con un disparador event se ejecuta cada vez que una notificación del tipo elegido llega a su propietario, acotada por un tiempo de espera de un minuto por automatización.

Webhooks salientes​

Los administradores pueden registrar destinos webhook que reciban eventos del equipo.

  • Salida protegida. Los destinos pasan por la misma política que los servidores de herramientas: URL exacta, sin redirecciones ni direcciones privadas o locales de enlace, salvo que el administrador incluya expresamente un host en TOOLS_PRIVATE_NETWORK_ALLOWLIST. Los nombres se resuelven y comprueban en cada entrega.
  • Firmados. Con un secreto configurado, cada entrega incluye X-Libre-Signature: sha256=<hmac>, calculada sobre el cuerpo exacto.
  • Censurados. El sobre contiene la clase de evento, el tipo de notificación, el título, identificadores y marcas de tiempo. Los cuerpos, el contenido de mensajes, los prompts y los documentos nunca abandonan la instancia.
  • Duraderos. Las entregas son trabajos duraderos con reintentos acotados; una respuesta 5xx vuelve a intentarse, mientras que una 4xx se considera el veredicto del receptor y se da por resuelta.
  • Limitados. Cada destino se suscribe a tipos concretos (o a *).

Notificaciones push del navegador​

Configuración → Notificaciones registra este navegador para Web Push, para que las menciones, los recursos compartidos, los recordatorios y el trabajo terminado lleguen al dispositivo aunque la pestaña esté cerrada. La implementación es estándar y autónoma:

  • VAPID (RFC 8292). El servidor firma cada entrega con un par de claves ES256, generado una vez y almacenado cifrado, o fijado mediante VAPID_PUBLIC_KEY/VAPID_PRIVATE_KEY (VAPID_SUBJECT define la declaración de contacto). No intervienen bibliotecas push ni cuentas de servicio de terceros, aparte del endpoint push del proveedor del navegador.
  • Cargas cifradas (RFC 8291). Cada mensaje se cifra para las claves del propio dispositivo con aes128gcm antes de abandonar la instancia; el servicio push transmite un texto cifrado que no puede leer.
  • Por dispositivo y vinculadas a la sesión. Una suscripción pertenece al navegador que la creó y a su sesión de autenticación: cerrar esa sesión (o «cerrar las demás sesiones») elimina también el registro push. Los endpoints se almacenan cifrados con un token de búsqueda con clave y deben ser destinos HTTPS públicos, con la misma higiene de salida que los webhooks.
  • Duraderas. Las entregas push son trabajos duraderos con reintentos acotados; si un servicio informa de que la suscripción desapareció (404/410), se elimina.
  • La carga lleva el título, el cuerpo opcional, el tipo y el enlace de destino, con la misma postura de censura que la bandeja.

Push requiere la aplicación de producción (el service worker solo se registra allí) y un origen seguro. El mismo service worker proporciona la carcasa sin conexión y la posibilidad de instalación: el manifiesto hace instalable Libre WebUI, la navegación recurre a la carcasa almacenada cuando no hay conexión y los recursos de compilación con hash se guardan de forma inmutable. El tráfico de API nunca se almacena en caché.

Correo​

El correo es el tercer canal de entrega, y el único que necesita configuración por parte de un administrador. Configuración → Gestión de usuarios → Acceso y políticas → Notificaciones por correo guarda un único servidor SMTP saliente: host, puerto, seguridad de la conexión (STARTTLS, TLS implícito o ninguna para una red de confianza), credenciales opcionales, la dirección del remitente y la URL pública usada en los enlaces. Las variables de entorno SMTP_* en Variables de entorno inicializan los mismos campos para despliegues en contenedor; un valor guardado en la interfaz tiene prioridad. La contraseña se guarda cifrada y nunca se devuelve al navegador. Enviar prueba envía un mensaje a la propia dirección del administrador (o a cualquier dirección que escriba) para probar el recorrido completo antes de que los usuarios confíen en él.

Los administradores también eligen una plantilla de correo Clara u Oscura y la previsualizan antes de guardar. Clara es la opción predeterminada. El ajuste guardado se aplica a cada notificación y correo de prueba de esta instancia, incluidos los resultados en Markdown; es independiente del tema de interfaz de cada usuario. La vista previa muestra contenido de ejemplo sin contactar con SMTP, enviar correo ni poner un trabajo en cola. Solo los administradores pueden leer o cambiar el ajuste o pedir una vista previa. Los ajustes integrados mantienen legibles el texto, los enlaces, los bloques de código y los botones; no se aceptan plantillas HTML personalizadas. Los clientes de correo aún pueden ajustar los colores según su propia configuración de pantalla.

En cuanto el interruptor está activado, cada usuario elige qué llega a su bandeja en Configuración → Notificaciones → Notificaciones por correo:

  • Menciones en canales: un mensaje que te menciona en un canal, con la vista previa y un enlace al canal.
  • Resultados de automatizaciones: el resultado de cada ejecución de tus automatizaciones, con éxito o con fallo. Una ejecución de chat lleva la propia respuesta del asistente (hasta unos pocos miles de caracteres); una ejecución de Work lleva la línea de estado de la tarea; un fallo lleva el error. El enlace abre el chat o la tarea resultante.

Ambos interruptores permanecen desactivados hasta que el usuario los activa, y solo funcionan para cuentas que tienen una dirección de correo, que el titular de la cuenta define al registrarse o que un administrador añade en Usuarios. Los mensajes salen por el mismo entorno de trabajos duraderos que Web Push, con reintentos acotados ante fallos transitorios del relay, y el cliente SMTP es una pequeña implementación propia (EHLO, STARTTLS, AUTH PLAIN o LOGIN) que nunca envía credenciales por una conexión sin cifrar salvo que el modo sea explícitamente none. Cada mensaje tiene una parte de texto plano y una alternativa HTML con el aspecto del sitio web: el logotipo de Libre WebUI, una tarjeta con el contenido, un botón coral hacia el destino y un pie que remite de vuelta a Configuración → Notificaciones. Un resultado de automatización se renderiza a partir de Markdown (encabezados, listas, énfasis, código, enlaces solo a destinos http(s)); todo lo demás se escapa, y la única imagen externa es el logotipo servido desde librewebui.org. Sin seguimiento.

Restricciones​

  • Aún no se han implementado preferencias por tipo; las automatizaciones respetan su propio ajuste y abandonar un canal detiene sus notificaciones.