Ir al contenido
kit / notifications / hero
NotificationsHoody Notifications

Notificaciones de escritorio vía HTTP.

Envía notificaciones de escritorio Linux a cualquier display de contenedor con una sola HTTP POST. El servidor de notificaciones llama a notify-send en el display X11 de tu contenedor: dispara, consulta el historial o transmite en vivo.

notify · hoody-n

# Enviar una notificación al display 0

curl -X POST ".../notify"

-d '["display":"0","summary":"Build Complete","urgency":"normal"]'

# Respuesta

["message":"Notification sent successfully","success":true]

kit / notifications / lifecycle
Cómo funciona

Tres pasos. Una llamada HTTP cada uno.

Cada notificación sigue el mismo ciclo de vida: dispárala, consulta el historial o transmítela en vivo, luego descártala cuando hayas terminado.

01

Disparar

POST /notify envía una llamada a notify-send al display X11 de destino. Suministra display, summary y opcionalmente urgency, body, expire_time o icon.

notifications — trigger

# Fire a notification

POST /notify

 

{"display":"0",

"summary":"Build Complete",

"urgency":"normal"}

 

'{'"success":true'}'

02

Consultar o transmitir

GET /[display] recupera el historial de notificaciones con filtros opcionales de limit, since, username y session. Conéctate vía WebSocket a /stream?displays=0 para actualizaciones en tiempo real.

notifications — fetch

curl ".../0?limit=50"

 

# Or open a WebSocket

new WebSocket(

"wss://.../stream?displays=0"

)

03

Descartar

POST /dismiss marca IDs de notificación como descartadas: se filtran en respuestas GET posteriores. DELETE /dismiss borra el estado de descartado, haciéndolas visibles de nuevo.

notifications — dismiss

# Dismiss by ID

POST /dismiss

{"displayId":"0",

"notificationIds":[10,11,12]}

 

# Clear dismissed state

DELETE /dismiss?displayId=0

kit / notifications / urgency
Niveles de urgencia

low. normal. critical.

Tres niveles de urgencia se mapean directamente al comportamiento de notify-send. Elige el correcto y el daemon de notificaciones hace el resto.

low

Se descarta rápidamente. Pon expire_time: 3000 para tareas en segundo plano, telemetría o pings informativos que no deben interrumpir el trabajo.

"urgency": "low",

"expire_time": 3000

normal

Estándar. Por defecto cuando se omite urgency. El daemon de notificaciones la muestra en el timeout configurado y la descarta automáticamente.

"urgency": "normal"

// default — omit to use this

critical

Persistente: requiere descarte manual. Pon expire_time: 0 para fallos del sistema, errores de build o cualquier cosa que necesite acción inmediata.

"urgency": "critical",

"expire_time": 0

kit / notifications / channels
Canales

Consulta el historial o transmite en vivo.

Dos canales de lectura para necesidades diferentes: REST para logs de auditoría y consultas puntuales, WebSocket para dashboards y monitores en tiempo real.

GETGET /[display]Consultar
WSWS /streamTransmitir

Obtiene el historial de notificaciones de un display. Filtra por limit, marca de tiempo since, username o session ID. Úsalo para logs de auditoría, consultas puntuales y procesamiento en lote.

fetch history

# get last 50 for display 0

curl ".../0?limit=50"

# time-filtered

curl ".../0?since=1749025000000"

Array JSON de objetos de notificación con id, summary, urgency, timestamp y icon_url.

Suscríbete a uno o más displays con displays=0,:1,2 o displays=all. Recibe mensajes push en cuanto llegan. Úsalo para dashboards y monitorización en tiempo real.

stream live

# open a WebSocket

const ws = new WebSocket(

"wss://.../stream?displays=0"

)

# on message

ws.onmessage = (e) => {

const msg = JSON.parse(e.data)

// msg.type === 'notification'

}

[ type: "notification", data: [ id, summary, urgency, timestamp ] ] enviado con cada nueva notificación.

kit / notifications / usecases
Casos de uso

Desde pipelines CI/CD hasta trabajos ML.

En cualquier lugar donde un proceso de larga duración necesite señalar completado o fallo, una HTTP POST es todo lo que se necesita.

Alertas CI/CD

Las builds de larga duración completan. HTTP POST dispara una notificación en el display del contenedor, visible en cualquier sesión de display activa.

Monitorización del sistema

Las alertas del servidor se enrutan a una notificación de escritorio en el display X11 del contenedor, visible en cualquier sesión de display activa.

Tareas de larga duración

Exportaciones de datos, renderizado de vídeo, entrenamiento de modelos ML, finalización de copias de seguridad: notifica cuando termina sin necesidad de sondeo.

Flujos de trabajo automatizados

Los trabajos cron, tareas programadas y scripts de automatización notifican al display del contenedor al completar o fallar.

kit / notifications / api
API REFERENCE

8 Endpoints. One Notification Server.

Trigger, fetch, stream, and dismiss desktop notifications — plus icons and health monitoring — all over plain HTTP.

Trigger

{count, plural, =1 {# endpoint} other {# endpoints}'}

POST .../api/v1/notifications/notify → {"success":true}

POST
/api/v1/notifications/notifySend a native desktop notification to a target display via notify-send

Fetch & Stream

{count, plural, =1 {# endpoint} other {# endpoints}'}

GET .../api/v1/notifications/{display}?limit=50&since=...

GET
/api/v1/notifications/{display}Retrieve notification history for one or more displays
WS
/api/v1/notifications/stream?displays=0,:1Real-time WebSocket stream — push updates as notifications arrive
POST
/api/v1/notifications/dismissMark notification IDs as dismissed; filtered from subsequent GET responses
DELETE
/api/v1/notifications/dismissClear dismissed state — restore notifications to visible

Icons

{count, plural, =1 {# endpoint} other {# endpoints}'}

GET .../api/v1/notifications/icons/{iconId} → image/png

GET
/api/v1/notifications/icons/{iconId}Fetch notification icon (JPEG, PNG, or SVG) by unique icon ID

Health & Metrics

{count, plural, =1 {# endpoint} other {# endpoints}'}

GET .../api/v1/notifications/health → {"status":"UP"}

GET
/api/v1/notifications/healthEnhanced health check — filesystem, WebSocket, and memory status
GET
/api/v1/notifications/metricsPrometheus-compatible metrics for notifications sent, failed, and CPU/memory
kit / notifications / cta

Las notificaciones están a una HTTP POST de distancia.

Cualquier script, servicio o automatización que pueda hacer una solicitud HTTP puede enviar una notificación de escritorio al display de tu contenedor.

Leer la documentación