Tu agente informó de éxito.
No produjo nada.

Los agentes programados fallan en silencio. Una ejecución que nunca arrancó, un bucle que se tragó un error de herramienta y salió con 0, una llamada al modelo que nunca volvió. SteadyCron vigila el resultado en lugar del código de salida, y te avisa cuando deja de llegar un resultado real.

Sin tarjeta. Un monitor de agente gratis, con todas las reglas.

Cómo se vio la ejecución

02:00  ejecución programada iniciada
02:04  proceso terminó con 0
02:04  ✓ marcada como correcta

# out/digest.md → 0 bytes
# tokens gastados: 84.300
# ¿alguien avisado? no

Lo que de verdad necesitabas saber

02:00  /start          ejecución empezó
02:04  informe: items=0
02:04  regla: empty_result → fallo

→ #ops-slack  nightly-digest falló
  última ejecución buena: ayer 02:03

Para un agente desatendido, el silencio parece éxito

Los frameworks de agentes están hechos para seguir adelante. Una llamada a herramienta falla, el modelo se disculpa y continúa, el bucle termina limpio sin haber escrito nada. El proceso sale con 0 porque terminó, no porque se hiciera el trabajo.

Correr desatendido era justamente el objetivo, así que nadie lee la salida. El planificador no informará de un calendario muerto, el proveedor no informará de un presupuesto agotado, y el agente no informará de su propia ejecución vacía.

La distinción que importa

Un agente que informa de que todo va bien con cero rendimiento no está sano — está asintomático.
El modo de fallo por el que existe esta página
  • Código de salida 0 sin artefacto — el fallo de agente más común, y el que cualquier comprobación de disponibilidad aprueba.
  • La ejecución no arrancó en absoluto: un workflow desactivado, una máquina dormida, un evento de calendario descartado.
  • Una llamada al modelo sin tiempo de espera bloquea la ejecución durante horas, y las siguientes se acumulan detrás.
  • Límites de tasa, presupuesto agotado o una clave de API rotada acaban con la ejecución de hoy — y con la de mañana.
  • Un ID de modelo obsoleto o una respuesta remodelada rompe tu parsing en el calendario del proveedor, no en el tuyo.

Detectados por una expectativa de calendario, no por una traza

Las herramientas de trazado registran lo que hizo una ejecución. Ninguna puede registrar una ejecución que nunca ocurrió — no hay traza que emitir. Eso requiere algo que observe desde fuera y con reloj.

nightly-digest NUNCA CORRIÓ

La ejecución nunca ocurrió

GitHub Actions desactivó el workflow tras 60 días sin actividad en el repositorio. Nadie lo notó durante tres días, porque una ejecución que no arranca no produce log, ni error, ni traza.

esperada a las 02:00 a diario
último éxito hace 3 días
retraso 72 h

Solo una expectativa de calendario externa detecta una ausencia. Es el fallo que tu stack de observabilidad no puede ver estructuralmente.

ticket-triage VACÍA

Corrió, y no produjo nada

La herramienta de búsqueda falló, el modelo se disculpó, el bucle terminó. Cuatro minutos de tokens gastados y cero filas escritas — reportado como éxito, porque el proceso terminó sin lanzar excepción.

completada 02:04
duración 3 m 51 s
filas escritas 0

Tu ejecución reporta el número; la regla de resultado vacío convierte un cero en fallo y en alerta. No tienes que implementar la comprobación.

embedding-refresh COLGADA

Se colgó en una llamada al modelo

Muchos SDK vienen sin tiempo de espera en las peticiones. Una conexión atascada y la ejecución nunca termina. El ping /start llegó; /success nunca.

/start recibido 09:00:12
duración máx. 30 min
/success recibido nunca

La detección de ejecuciones colgadas convierte una llamada atascada en una alerta en un plazo que tú fijas, en vez de una ejecución que nunca acaba.

Cinco líneas, donde sea que corra tu agente

Pingea al arrancar, y pingea éxito solo después de comprobar que la salida existe. Esa segunda mitad es todo el truco — es lo que convierte una ejecución vacía en una alerta.

# Anthropic runs the schedule — but a routine that gets skipped, or
# finishes with nothing, tells nobody. Connect SteadyCron's MCP server
# and the agent reports its own runs with a tool call.

MCP server:  https://api.steadycron.com/mcp
Auth:        Bearer <your SteadyCron API key>

# Then, in the routine's prompt:

Call report_run_start with jobKey "nightly-digest" before you begin.
This is required — report_run is refused if no run is open.

Do the work. Write the result to out/digest.md.

When you are done, count what you actually produced and call report_run
with that count. If you produced nothing, report 0 — do not omit the
field, and do not round up.

    report_run { jobKey: "nightly-digest", itemsProduced: 42,
                 model: "claude-opus-5", tokensIn: 18400, tokensOut: 2100 }

# SteadyCron turns a 0 into a failed run and an alert. No curl to get
# wrong, and a tool call is far harder for the model to skip than a
# sentence in the prompt.

Los fundamentos de los pings, el periodo de gracia y la detección de ejecuciones colgadas en Monitorización heartbeat. La guía detallada por plataforma existe por ahora solo en inglés.

Una pregunta estrecha, respondida con fiabilidad

SteadyCron no es una herramienta de trazado de LLM y no pretende serlo. Vigila la ejecución, no el razonamiento.

Lo que hace

  • Avisa cuando una ejecución programada nunca ocurrió — el único fallo que una traza no puede registrar.
  • Avisa cuando una ejecución acaba sin haber producido nada. Comprobamos el número que reporta tu ejecución: no tienes que implementarlo tú.
  • Avisa cuando una ejecución supera tu límite de coste — por ejecución o en el mes.
  • Avisa cuando el número de pasos o llamadas a herramientas indica un bucle.
  • Avisa cuando una ejecución arranca y nunca termina, frente a una duración máxima que tú fijas.
  • Sigue el coste de cada agente, con total del mes en curso por monitor.
  • Domina el ruido — periodos de gracia, umbrales de fallos consecutivos, horas silenciosas, autorresolución.

Lo que no hace

  • Trazas detalladas de cada llamada al modelo y cada invocación de herramienta.
  • Gestión de prompts, datasets o evaluación con LLM como juez.
  • Puntuar la calidad de las respuestas, ni detectar alucinaciones.
  • Decirte por qué el modelo tomó una decisión concreta.

Para eso usa una herramienta de trazado — Langfuse, LangSmith y compañía lo hacen bien. Pon la URL de la traza en la carga del ping y tu alerta enlazará directo con la ejecución. SteadyCron responde las preguntas que ellas no pueden: ¿corrió, terminó, produjo algo — y cuánto costó?

Las ejecuciones de agentes son los logs más sensibles que tienes

Un script de backup registra «completado». Una ejecución de agente lleva prompts, documentos recuperados, argumentos de herramientas y cualquier dato de cliente que pasara por la ventana de contexto — y estás a punto de enviar un resumen de todo eso a un proveedor de monitorización.

SteadyCron corre en servidores Hetzner en Alemania, operados por una entidad jurídica alemana, bajo un DPA de autoservicio que puedes leer y firmar sin llamada comercial. Y tú eliges qué va en el ping: adjunta un recuento de filas, no las filas.

  • Hetzner, Alemania
  • Entidad jurídica alemana
  • DPA de autoservicio
  • Lista pública de subencargados
Alojamiento en la UE y residencia de datos

Apunta un monitor a la ejecución de esta noche

Crea un monitor heartbeat, indica el calendario que tu agente debe cumplir, y añade el ping. Si el resultado de mañana no llega, lo sabrás antes de que alguien pregunte.

  • Plan gratuito, sin tarjeta
  • 1 monitor de agente gratis
  • Alojado en la UE
  • De pago desde 10 €/mes