Recibe un aviso cuando termine tu entrenamiento o build

Henry AGI
6 min de lecturaJun 2026
Recibe un aviso cuando termine tu entrenamiento o build

Ejecuta tu proceso bajo LidRun y te avisa en el momento exacto en que termina — con el código de salida y cuánto tardó — así te enteras de que un job en tu Mac terminó en lugar de quedarte vigilando una ventana de Terminal. El push al teléfono (ntfy.sh o Pushover) es gratis; Telegram, Discord, Slack y un webhook personalizado son parte de Pro. Si prefieres no instalar nada, macOS ya trae algunos comandos que pueden avisarte cuando termina un comando de shell — esta guía cubre ambos caminos: la forma nativa y gratuita, y exactamente cómo funcionan de punta a punta los canales de LidRun.

Por qué sigues revisando la terminal

macOS no tiene una forma integrada de decir "avísame cuando esto termine". Terminal.app puede hacer parpadear su ícono en el Dock cuando un comando de shell en segundo plano termina (Preferences → Profiles → Shell → "Notify when process completes"), pero eso solo sirve si estás sentado frente al Mac para verlo — no llega a tu teléfono, y no dice nada sobre si el comando realmente tuvo éxito. Un ollama pull, un cargo build, un ciclo de entrenamiento, o una sesión de Claude Code / Codex corriendo sin supervisión, de lo contrario termina en silencio total.

Así que o te quedas revisando una y otra vez, o te alejas y adivinas: si vuelves muy temprano, sigues esperando; si vuelves muy tarde, perdiste tiempo que pudiste usar en lo siguiente. Las apps genéricas para mantener el Mac despierto — Amphetamine, Caffeine, KeepingYouAwake, Lungo — resuelven bien la primera mitad del problema, evitando que el Mac entre en reposo, pero ninguna vigila un comando específico ni te dice cuándo termina. Eso es un trabajo distinto al de un simple interruptor en la barra de menú.

La solución es un solo mensaje en el instante en que el proceso termina, que diga si realmente tuvo éxito. El resto de esta guía cubre dos formas de lograrlo: armarlo tú mismo con lo que ya tiene tu Mac, o dejar que LidRun lo haga.

La forma nativa y gratuita de recibir un aviso

macOS trae lo suficiente para armar una versión básica de esto sin instalar nada. say "build finished" dice una frase en voz alta — sirve si estás en el cuarto de al lado. osascript -e 'display notification "Build finished, exit 0" with title "Terminal"' publica un banner real de Notification Center, del mismo tipo que produce cualquier app. Encadena cualquiera de los dos a un comando con ; (se ejecuta pase lo que pase) o && (se ejecuta solo si tuvo éxito): npm run build && osascript -e 'display notification "Build finished" with title "npm"'.

Para algo con un poco más de pulido, terminal-notifier (brew install terminal-notifier) es la herramienta gratuita estándar para esto — terminal-notifier -title "Build" -message "Finished" publica el mismo tipo de banner con una API de línea de comandos más agradable. Eso sí, ninguna de las tres llega a tu teléfono; son solo Notification Center, en el Mac frente al que estás sentado.

La parte que la gente suele pasar por alto: ni say, ni osascript, ni terminal-notifier mantienen el Mac despierto. Si la pantalla se apaga y entra el reposo por inactividad antes de que termine el job, macOS puede pausar todo el proceso — el build se detiene, y el comando de notificación al final de la cadena nunca se ejecuta. caffeinate -i puesto delante de un comando evita el reposo por inactividad justo durante el tiempo que corre ese comando, que es la pieza que las herramientas de notificación no dan por sí solas.

Juntando todo, esa es la receta completa, nativa y gratuita — mantenerse despierto durante el job, y luego avisar cuando termina:

caffeinate -i npm run build; osascript -e 'display notification "Build finished" with title "npm"'

Guía relacionadaEjecuta un comando largo y deja que tu Mac duerma cuando termine

Dónde se rompe la cadena hecha a mano

En la práctica, hay tres cosas que fallan con caffeinate más un comando de notificación. Primero, caffeinate es un bloqueo de reposo ciego — no tiene idea de cuál es tu estado de batería o de temperatura, y mantendrá un MacBook despierto a cualquier nivel de carga o temperatura mientras dure el comando que envuelve. Eso está bien para un build de cinco minutos en el escritorio; en una corrida larga y sin supervisión, es una forma real de terminar con la batería agotada o un apagado por temperatura, sobre todo con las rejillas de ventilación tapadas bajo un soporte de laptop o dentro de una mochila. Mantener el Mac ventilado sigue siendo tu responsabilidad de todos modos — ninguna notificación, de ninguna herramienta, enfría el chasis.

Segundo, osascript, terminal-notifier y say solo llegan al Mac en el que estás. Si te alejaste, no ves el banner hasta que por casualidad vuelvas a mirar la pantalla — que es exactamente el problema que querías resolver.

Tercero, cerrar la tapa detiene toda la cadena. A menos que hayas corrido por separado pmset disablesleep 1 — que necesita autenticación de administrador y es un interruptor más pesado y permanente que tienes que acordarte de volver a poner en 0, no algo limitado a un solo comando — cerrar la tapa suspende el Mac, el job, y con ellos el comando de notificación.

La versión gratuita de LidRun: un comando envuelto más una llamada notify

Ese es el vacío que llena LidRun, y el nivel gratuito ya cubre la versión básica. La regla es simple: agente o comando corriendo → mantenerse despierto; comando terminado, o algo se vuelve inseguro → liberar y dejar que el Mac entre en reposo. La receta gratuita por CLI:

lidrun -- npm run build; lidrun notify "Build finished" "exit $?"

lidrun -- <command> envuelve el comando en una aserción de mantener-despierto durante toda su vida útil — es autocontenido, y no hace falta que la app de LidRun esté corriendo para esa parte. Vale la pena ser precisos: por sí solo, ese wrap es un simple bloqueo de reposo como caffeinate, sin conciencia de batería ni temperatura incorporada, y se libera en el momento en que el proceso hijo termina. lidrun notify "<title>" "<body>" es la pieza que agrega una notificación real, y esa sí necesita que la app de LidRun esté corriendo en la barra de menú — publica un banner local y, si activaste el push al teléfono en Notifications & Alerts, lo envía a tu teléfono vía ntfy.sh (gratis, basado en temas — instalas la app ntfy, te suscribes a un tema que elijas, y LidRun publica en él) o Pushover (una app de pago único, no una suscripción). Ambos comandos son gratis — no requieren nivel Pro.

El piso de seguridad base de LidRun — detenerse automáticamente cuando la batería baja a cerca del 4%, o ceder bajo presión térmica sostenida — pertenece a los propios modos de la app: Keep Awake, Timer y Run & Watch a Command, todos corriendo bajo la máquina de estados de LidRun en lugar de una simple aserción IOKit. Si quieres que el job mismo esté vigilado con esa red de seguridad, no solo envuelto, eso es lo que Keep Awake/Timer gratis o Run & Watch de Pro te dan por encima del wrap crudo por CLI — no es un bloqueo de reposo ciego que sigue corriendo sin importar qué le esté pasando al Mac.

Telegram, Discord, Slack y un webhook — la capa Pro

Si quieres que las alertas salgan del Mac por completo — que caigan en un canal que tu equipo ya vigila, o lleguen a una app que no tienes que instalar — ahí entran las integraciones Pro de LidRun: Telegram, Discord, Slack y un webhook genérico, todo configurado desde la ventana Notifications & Alerts de la barra de menú. El push al teléfono de arriba sigue siendo gratis de todos modos; estas cuatro son del mismo nivel que desbloquea Run & Watch a Command, el modo Closed-Lid y Smart Rules.

Telegram, sin crear tu propio bot: abre el bot compartido de LidRun en Telegram (@Libruntest_bot, o el botón "Open the LidRun bot" en la app) y toca Start, luego abre @userinfobot para obtener tu propio Chat ID numérico, y pega ese Chat ID en LidRun. Esa es toda la configuración — sin token de bot, sin BotFather. Un campo avanzado te permite usar tu propio bot en su lugar; déjalo en blanco para usar el compartido.

Discord y Slack funcionan igual desde el lado de LidRun: crea una URL de webhook entrante desde la configuración de integraciones del canal (Discord: channel settings → Integrations → Webhooks → New Webhook; Slack: la app Incoming Webhooks de tu workspace) y pega la URL. Los mensajes de Discord se publican como {"content": "..."}; los de Slack como {"text": "..."} — el mismo JSON que describe la documentación de webhooks de cada servicio, así que no hay nada específico de LidRun que aprender.

El webhook genérico es para todo lo demás — Zapier, IFTTT, Home Assistant, tu propio endpoint. LidRun hace POST de esto a la URL que proporciones:

{"title": "Task finished ✅", "body": "npm run build (exit 0) after 2m 14s", "event": "session_finished", "app": "LidRun"}

event es una clave corta pensada para máquinas que puedes usar para enrutar — session_finished y all_tasks_finished para trabajo terminado, thermal_critical y sleep_failed para el lado de seguridad.

El envío es del tipo 'dispara y olvida' con un reintento: si un canal rechaza el mensaje, LidRun espera 5 segundos e intenta una vez más, y luego registra el fallo en lugar de reintentar indefinidamente. Cada solicitud expira a los 15 segundos. Usa "Send test" junto a cada canal antes de una corrida real, para que un Chat ID o una URL de webhook mal puestos no se traguen en silencio tu primera alerta.

Qué es lo que realmente dispara una alerta

Vale la pena conocer dos grandes tipos de evento. El primero es un comando terminado. Run & Watch a Command (Pro, dentro de la app) corre tu comando, mantiene el keep-awake mientras dura, y al salir dispara una alerta que ya trae el código de salida y la duración — "Task finished" o "Task failed", no solo "se detuvo". Auto Mode (Pro) hace lo mismo con toda una lista de procesos vigilados y avisa una vez que todo en ella terminó, pero solo mientras realmente estás ausente — tapa cerrada, o inactividad de unos minutos — así que no agrega un banner cada vez que estás sentado frente al escritorio.

El segundo es un evento de seguridad, y tiene dos niveles. El piso de seguridad base de LidRun — liberar el keep-awake porque el Mac llegó a una temperatura crítica o la batería tocó su umbral de emergencia, o LidRun no logrando restaurar el reposo normal después del modo Closed-Lid — llega a tu teléfono bajo el interruptor gratuito "Critical safety alerts", sin importar la licencia. Watchdog (Pro) agrega encima una detección más específica: un agente que parece atascado esperando por ti, una conexión de red caída, y las mismas condiciones críticas de temperatura/batería detectadas antes, pero reportadas con más detalle.

Una sola regla ata todo esto: el push al teléfono, un banner local más ntfy o Pushover, es gratis para cada evento que LidRun pueda generar. Telegram, Discord, Slack y el webhook son la capa Pro encima, que distribuye esos mismos eventos a más lugares.

Si además activas "Away notifications" (gratis), cerrar la tapa con algo corriendo envía un mensaje corto que dice qué está corriendo y qué hará LidRun respecto a la batería y el calor, y luego un breve resumen cuando vuelves a abrir la tapa — un mensaje por momento, no un flujo constante de actualizaciones.

Pruébalo en vez de pelear con el reposo de tapa cerrada

LidRun mantiene tu trabajo en marcha con la tapa cerrada, con protección de batería y temperatura integrada.

Descargar para macOS

¿Ya tienes LidRun? Lee la guía de configuración →

¿Nuevo en LidRun? Consulta los precios →

Preguntas frecuentes

¿Tengo que crear mi propio bot de Telegram?

No. Abre el bot compartido de LidRun (@Libruntest_bot) en Telegram, toca Start, y luego pega el Chat ID numérico que te da @userinfobot en la ventana Notifications & Alerts de LidRun. No hay ningún token de bot que generar ni nada que registrar con BotFather. Un campo avanzado te permite usar tu propio bot en su lugar — déjalo en blanco para usar el compartido.

¿Qué es gratis y qué necesita Pro?

El push al teléfono — un banner local más ntfy.sh o Pushover — es gratis, y cubre los avisos de tarea terminada, el piso de seguridad base de LidRun (batería baja, sobrecalentamiento) y las notificaciones de ausencia. Telegram, Discord, Slack y el webhook personalizado son Pro, junto con Run & Watch a Command (el modo que arma automáticamente la alerta con código de salida y duración), Auto Mode y Watchdog.

¿Cómo es el payload del webhook?

El webhook genérico hace POST de este JSON: {"title": "...", "body": "...", "event": "...", "app": "LidRun"}, donde event es una clave corta pensada para máquinas, como session_finished, que puedes usar para enrutar. Discord recibe {"content": "..."} y Slack recibe {"text": "..."} — la forma estándar que describe la documentación de webhooks entrantes de cada servicio.

¿La alerta me dirá si mi comando tuvo éxito?

Sí, para Run & Watch a Command (Pro): el título dice "Task finished" o "Task failed", y el cuerpo incluye el código de salida y cuánto duró. El wrap gratuito por CLI lidrun -- <command> no arma ese mensaje automáticamente — encadénalo con lidrun notify "title" "exit $?" para obtener la misma información gratis.

¿LidRun reintenta una notificación fallida?

Para envíos a Telegram/Discord/Slack/webhook: una vez. Si un canal rechaza el mensaje, LidRun espera 5 segundos e intenta de nuevo, y luego registra el fallo en lugar de reintentar indefinidamente. Los banners locales y el push al teléfono por ntfy/Pushover son una sola solicitud de tipo dispara-y-olvida, y no se reintentan de la misma forma.

¿Puedo obtener un aviso similar sin instalar nada?

Sí. caffeinate -i your-command; osascript -e 'display notification "Done" with title "Job"' evita que el Mac entre en reposo por inactividad mientras corre el comando, y luego publica un banner de Notification Center cuando termina. Es solo local — no llegará a tu teléfono si te alejaste, y no tiene forma de saber si tu estado de batería o temperatura es seguro para seguir exigiendo.

¿LidRun también me avisa sobre eventos de seguridad?

Sí. Cuando el piso de seguridad base de LidRun libera el keep-awake — por temperatura crítica, o batería cerca de su umbral de emergencia — eso llega a tu teléfono bajo el interruptor gratuito "Critical safety alerts", independiente de los avisos de tarea terminada. Watchdog (Pro) agrega encima alertas más específicas, como un agente que parece atascado esperando por ti o una conexión de red caída.

¿Tienes curiosidad por saber si LidRun es para ti?

Deja que ChatGPT, Claude o Perplexity lo investiguen — haz clic abajo y mira qué opina la IA sobre LidRun.