
Sesenta contenedores en un servidor
Un servidor bare-metal ejecuta decenas a cientos de contenedores Hoody. KSM y dedup BTRFS hacen que el costo marginal sea casi cero.
Una línea cron tradicional ejecuta reconcile.sh a las 2 de la mañana. Una línea cron de Hoody hace POST de un prompt a hoody-agent. La programación es fija. El trabajo no. Los casos extremos dejan de ser ramas que mantienes — se convierten en contexto sobre el que razona el agente.
cinco mañanas · cinco decisiones distintas · una sola línea de crontab
Hoody Cron es un crontab gestionado en cada contenedor. Hoody Agent es un agente autónomo integrado en el mismo contenedor. La entrada cron hace curl al agente. El agente lee la fecha, lee los datos y decide lo que el día requiere. Las dos superficies son HTTP — el cron vive en /api/v1/cron/users/me/entries, el agente en /api/v1/agent/tasks. No hay código pegamento entre ellos.
# POST /api/v1/cron/users/me/entries { "schedule": "0 7 * * *", "command": "curl -X POST $AGENT/api/v1/agent/tasks \ -d @prompt.json", "comment": "morning-reports" }
# prompt.json — the body of the POST { "description": "Reconcilia los pedidos de ayer. Remapea si el esquema cambió. Párate y avisa al de guardia si la puntuación de anomalía > 3. Si hoy es el último día del mes, incluye el cierre mensual sobre el libro mayor ajustado por impuestos.", "mode": "code" }
Dos POSTs y has acabado. La línea del crontab no vuelve a cambiar — el único archivo que mantienes es el prompt. ¿Nuevo caso extremo? Añade una frase. ¿Nueva regla de anomalía? Añade una frase. La programación sigue disparándose; el agente averigua qué significa cada disparo.
La forma del trabajo que recibe el agente siempre es la misma — una fecha, un dataset, un objetivo. Lo que cambia es lo que el agente decide hacer al respecto.
El agente corre después de que dispare el cron. Mira el calendario — fin de mes, festivo, cierre fiscal. Muestrea el dataset — esquema, volumen, puntuación de anomalía. Elige la siguiente acción con ese contexto, no desde un árbol if estático que escribiste hace seis meses.
Cuando el export de ayer añade una columna refund_reason, un script se rompe y te avisa. El agente lee el esquema, lo mapea al campo legado y lo anota en el resumen de la ejecución. La línea del crontab nunca tuvo que enterarse.
Cada ejecución devuelve por escrito qué decidió el agente y por qué. El historial es texto en español — «omitido: sin datos nuevos», «adaptado: se añadió la columna refund», «anomalía: pico de reembolsos +412%, avisado al de guardia» — no exit code 0 / exit code 1. Los logs del cron se convierten en un diario.
Tres pasos — el cron dispara, el agente razona, la decisión aterriza. El paso intermedio es el que solías escribir tú en un script de shell de 400 líneas con diecisiete ramas para casos extremos. Ahora es un prompt.
Hoody Cron ejecuta la entrada. La línea del crontab es un curl: POST /api/v1/agent/tasks con el cuerpo del prompt. Sin reintentos escritos por ti, sin plumbing de logging — el servicio de cron inyecta la entrada en el crontab del sistema y lleva el seguimiento de la ejecución.
El agente recibe la descripción, abre sus herramientas — terminal, archivos, sqlite, navegador, exec — y elige un plan de acción. Puede ejecutar, omitir, adaptarse o avisar. Las decisiones cambian a diario. Las instrucciones no.
La ejecución termina. El agente publica una línea de resumen: informes regenerados, omitido por falta de datos nuevos, parado por anomalía. Lo lees en el móvil con el desayuno.
La programación no cambió. El script no cambió. Lo que cambió es si tú, humano, tenías que despertarte para gestionarlo. Con el agente en el bucle, la respuesta es casi siempre que no — y el historial de ejecuciones te dice por qué.
Hoody Cron y Hoody Agent son dos servicios en el mismo contenedor, ambos accesibles por HTTP. Las cifras vienen de las superficies documentadas — no de benchmarks inventados.
Un curl en el crontab, para siempre. El cuerpo del prompt es lo único que reescribes — y lo haces en un archivo JSON, no ejecutando crontab -e.
hoody-agent expone la superficie completa — exec de terminal, lectura/escritura de archivos, consultas sqlite, automatización de navegador, control de daemons — a la tarea del agente como llamadas HTTP planas.
Sin SDK entre el cron y el agente. Haz POST a una URL, lee otra. Los dos servicios viven en el mismo contenedor, así que la llamada va por red local rápida.
Hoody Cron soporta expresiones estándar de 5 campos (* * * * *) y macros (@hourly, @daily, @weekly, @monthly, @yearly). La creación de tareas en Hoody Agent es un POST /api/v1/agent/tasks; las actualizaciones en vivo van por streaming en /api/v1/agent/ws.
La entrada cron no ejecuta el job — le pide a un agente que averigüe el job.
El conjunto de cosas que solías escribir dentro de reconcile.sh porque cron solo sabía ejecutar archivos. Cada una es una rama, un flag, una config — nada de lo cual la programación necesita saber. El agente lee el día y decide.
Deja de mantener scripts cron. Empieza a mantener prompts. La programación dispara; el agente lo resuelve.