
Soixante conteneurs sur un seul serveur
Une machine bare-metal exécute des dizaines à des centaines de conteneurs Hoody. La dédupplication KSM et BTRFS rend le coût marginal quasi nul.
Votre produit fait tourner des centaines de sessions d'agents par jour. Chacune écrit sa transcription sur une URL SQLite. À 6h, une entrée cron envoie un POST à un agent superviseur avec un seul prompt : lis les transcriptions de la veille, note-les, signale les trois pires. Au moment où vous vous installez à votre bureau, le bulletin est déjà ouvert.
le job cron est le superviseur · le superviseur est aussi un agent
Une seule entrée cron à 5 champs envoie un POST au service agent avec un prompt. Le conteneur du superviseur se réveille, lit les traces SQLite de la veille, écrit ses notes dans la même base de données, puis sort. Pas d'orchestrateur, pas de service de rubriques, pas de pipeline d'eval.
# POST /api/v1/cron/users/me/entries { "schedule": "0 6 * * *", "command": "curl -X POST $AGENT/api/v1/agent/tasks \ -d @grade.json", "comment": "nightly-supervisor" }
# grade.json — the supervisor's instructions { "description": "Lis les transcriptions d'hier depuis /sqlite/sessions WHERE day = '2026-05-03'. Échantillonne 50. Note chacune sur la factualité, la justesse des outils, la dérive de ton. Écris les findings dans la table report. Signale les trois pires pour relecture humaine.", "mode": "code" }
La ligne cron décide QUAND. Le prompt décide QUOI. Le conteneur superviseur fait le travail en environ 20 minutes pendant la nuit puis disparaît. L'échantillon noté est sur disque avant que quiconque ne soit à son bureau.
Les écrans AgentOps vous montrent des logs. Les rubriques LangSmith vous donnent des scores. Un superviseur noté ferme la boucle — il lit les transcriptions, décide ce qui est mauvais, et écrit le verdict.
Pas seulement des métriques. Le superviseur ouvre chaque session, lit les appels d'outils, vérifie la vérité terrain, pèse le ton. Une grille tableur compte ; un agent superviseur juge.
Sur 400 exécutions, 397 sont correctes. Le rôle du superviseur est de faire remonter les trois qui ne le sont pas — par leur nom, avec une note d'une ligne. Vous ne faites pas défiler un dashboard, vous lisez quatre lignes.
Chaque note et chaque commentaire atterrit dans la même URL SQLite que celle utilisée par les agents. Le superviseur de demain compare. La dérive devient une requête, pas une impression.
Trois choses se passent entre 6h00 et 6h21. Aucune ne vous demande quoi que ce soit.
L'agent superviseur interroge la même URL SQLite où les workers ont écrit. SELECT * FROM sessions WHERE day = yesterday. Échantillonner 50 au hasard.
Par session : factualité, justesse des appels d'outils, dérive de ton, nombre d'hallucinations. Note en lettre + raison en une ligne. Coût : une seule tâche d'agent.
INSERT dans la table report. Marquer les trois pires pour relecture humaine. La page /grades/[date] n'est qu'un SELECT sur cette table.
À 6h21, il y a un échantillon noté sur disque et trois transcriptions signalées en file d'attente. Le correcteur ne surveille pas les agents — il tourne à un rythme régulier et les juge, comme un professeur qui corrige les devoirs pendant la nuit.
Des chiffres ancrés dans les surfaces cron + agent + SQLite. Pas des benchmarks inventés.
Cinq champs décident quand le superviseur se réveille. Changez la planification, changez la cadence — horaire, quotidienne, à la demande. La ligne est tout le planificateur.
Une tâche superviseur qui échantillonne 50 sessions, lit chacune, et écrit ses verdicts se termine généralement en moins de 20 minutes. Le conteneur sort à la fin de la tâche.
Pas d'Airflow, pas de service d'eval, pas de planificateur de DAG. L'entrée cron est une ligne dans /etc/crontab. Le verdict est une ligne dans SQLite. Il n'y a pas de troisième pièce.
Expressions cron standard à 5 champs selon l'API Hoody Cron. La durée d'une session superviseur dépend de la taille de l'échantillon et de la complexité de la rubrique. SQLite est la même URL hoody-sqlite que celle où les agents workers écrivent déjà — pas de second magasin.
Le job cron est le superviseur ; le superviseur est aussi un agent.
La pile standard de qualité d'agents : dashboards en lecture seule, revue manuelle des logs, et outils de rubriques qui notent mais n'agissent jamais. Le cron superviseur fait les trois en vingt minutes.
Arrêtez de lire les logs à 23h. Programmez un agent pour le faire pendant la nuit, et lisez son bulletin avec votre café.