
Sessenta contêineres em um servidor
Uma caixa bare-metal executa dezenas a centenas de contêineres Hoody. KSM e BTRFS dedup fazem o custo marginal próximo a zero.
Uma linha cron tradicional roda reconcile.sh às 2 da manhã. Uma linha cron Hoody faz POST de um prompt para hoody-agent. O agendamento é fixo. O trabalho não. Casos extremos param de ser branches que você mantém — viram contexto sobre o qual o agente raciocina.
cinco manhãs · cinco decisões diferentes · uma linha de crontab
Hoody Cron é um crontab gerenciado em todo contêiner. Hoody Agent é um agente autônomo embutido no mesmo contêiner. A entrada cron faz curl no agente. O agente lê a data, lê os dados e decide o que o dia exige. As duas superfícies são HTTP — o cron mora em /api/v1/cron/users/me/entries, o agente em /api/v1/agent/tasks. Não há código de cola entre eles.
# 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": "Reconcilie os pedidos de ontem. Remapeie se o esquema mudou. Pare e paginate o plantonista se o anomaly score > 3. Se hoje for o último dia do mês, inclua o fechamento mensal no ledger ajustado por imposto.", "mode": "code" }
Dois POSTs e pronto. A linha do crontab nunca mais muda — o único arquivo que você mantém é o prompt. Caso extremo novo? Adicione uma frase. Regra de anomalia nova? Adicione uma frase. O agendamento continua disparando; o agente descobre o que cada disparo significa.
O formato do trabalho que o agente recebe é sempre o mesmo — uma data, um conjunto de dados, um objetivo. O que muda é o que o agente decide fazer com eles.
O agente roda depois que o cron dispara. Ele consulta o calendário — fim de mês, feriado, fechamento fiscal. Faz amostragem do conjunto de dados — esquema, volume, anomaly score. Escolhe a próxima ação com esse contexto, não a partir de uma if-tree estática que você escreveu seis meses atrás.
Quando a exportação de ontem ganha uma coluna refund_reason, um script quebra e te paginate. O agente lê o esquema, mapeia para o campo legado e registra a mudança no resumo da execução. A linha do crontab nunca precisou saber.
Cada execução posta de volta o que o agente decidiu e por quê. O histórico é português corrido — "pulou: sem dados novos", "adaptou: coluna refund adicionada", "anomalia: pico de refund +412%, plantonista paginado" — não exit code 0 / exit code 1. Os logs do cron viram um diário.
Três passos — o cron dispara, o agente raciocina, a decisão acontece. O passo do meio é o que você costumava escrever em um shell script de 400 linhas com dezessete branches de caso extremo. Agora é um prompt.
Hoody Cron roda a entrada. A linha do crontab é um curl: POST /api/v1/agent/tasks com o corpo do prompt. Sem retries escritos por você, sem encanamento de logs — o serviço cron injeta a entrada no crontab do sistema e acompanha a execução.
O agente recebe a descrição, abre as ferramentas — terminal, arquivos, sqlite, navegador, exec — e escolhe um plano de ação. Pode rodar, pular, adaptar ou paginar. As escolhas mudam todo dia. As instruções não.
A execução termina. O agente posta uma linha de resumo de volta: relatórios regenerados, pulado por falta de dados novos, parado por anomalia. Você lê no celular tomando café.
O agendamento não mudou. O script não mudou. O que mudou foi se você, humano, teve que acordar para tratar. Com o agente no loop, a resposta é quase sempre não — e o histórico de execução te conta o porquê.
Hoody Cron e Hoody Agent são dois serviços no mesmo contêiner, ambos acessíveis por HTTP. Os números vêm das superfícies documentadas — não de benchmarks inventados.
Um curl no crontab, para sempre. O corpo do prompt é a única coisa que você reescreve — e isso em um arquivo JSON, não rodando crontab -e.
hoody-agent expõe a superfície completa — terminal exec, leitura/escrita de arquivos, query sqlite, automação de navegador, controle de daemon — para a tarefa do agente como chamadas HTTP simples.
Sem SDK entre o cron e o agente. POST em uma URL, leitura em outra. Os dois serviços vivem no mesmo contêiner, então a chamada é local-network rápida.
Hoody Cron suporta expressões padrão de 5 campos (* * * * *) e macros (@hourly, @daily, @weekly, @monthly, @yearly). A criação de tarefa do Hoody Agent é um POST /api/v1/agent/tasks; updates ao vivo fluem por /api/v1/agent/ws.
A entrada cron não roda o job — ela pede para um agente descobrir o job.
O conjunto de coisas que você costumava escrever dentro de reconcile.sh porque o cron só sabia rodar arquivos. Cada uma é uma branch, uma flag, uma config — nenhuma das quais o agendamento precisa saber. O agente lê o dia e decide.
Pare de manter scripts cron. Comece a manter prompts. O agendamento dispara; o agente descobre.