
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.
Une tâche nocturne qui scanne les exceptions de facturation de la veille, regroupe les doublons et rédige une note de triage. Elle n'a besoin d'exister qu'environ une heure par jour. Deux entrées cron font monter un conteneur d'agent neuf à 02:59 et le démolissent à 04:01. Les 23 autres heures, il ne tourne pas, n'est pas chaud, n'est pas facturé.
Un agent. Une heure par nuit. Inactif les vingt-trois autres. La facture du serveur à tarif fixe ne change pas non plus.
Pas de pool chaud, pas de service scheduler, pas de daemon de glu qui sonde le travail. Une entrée hoody-cron POSTe à l'URL de spawn de hoody-agent à 02:59. L'agent fait son run et sort. Un second cron à 04:01 appelle DELETE pour s'assurer que le conteneur est bien parti. C'est toute la machine.
Deux lignes cron dans une base de données. Une image d'agent. Le conteneur n'existe que pour le travail, puis cesse d'exister. Pas de pool chaud, pas de primitive de tâche planifiée, pas de daemon de cycle de vie à opérer vous-même.
Cinq moments. L'agent est vivant pour les trois du milieu. En dehors de cette heure, la ligne dans la table containers est partie.
L'entrée cron billing-reconcile-wake se déclenche. Elle POSTe à api.hoody.com avec ai: true et hoody_kit: true. Un conteneur neuf monte avec un système de fichiers propre et le prompt de l'agent chargé.
L'agent lit la table billing-exceptions de la veille via Hoody SQLite et demande à un LLM de regrouper les lignes par code de raison — soit via la Hoody AI Gateway (coût du fournisseur + 5%, prélevé sur votre AI Balance) soit via votre propre clé BYO dirigée vers Anthropic / OpenAI / votre fournisseur. Pas de montages de file-share. Juste des URL.
Il écrit une note de triage par groupe vers la même URL SQLite, puis envoie une notification avec le résumé du jour. Temps total écoulé jusqu'ici : environ trente minutes.
Le processus de l'agent retourne 0 et le conteneur sort de lui-même. Hoody-containers le marque arrêté. À partir de cette seconde, plus rien de l'agent ne tourne, n'est chaud ou n'est facturé.
Une seconde entrée cron déclenche un DELETE sur l'id du conteneur. Si l'agent est déjà sorti, c'est un no-op 200 OK. S'il était bloqué, le conteneur est démoli quand même. Idempotent et sans surveillance.
Cinq timestamps, deux lignes cron, un conteneur qui vit soixante-deux minutes. La nuit se déroule toute seule, et vous apprenez qu'elle s'est déroulée en lisant la note de triage le matin.
Un worker toujours allumé est la mauvaise forme pour une tâche qui tourne une fois par jour. Sur Hoody le substrat est à tarif fixe — le gain ne vient pas d'une facturation à la seconde, c'est pas de pool chaud, pas de service scheduler, pas de daemon de glu à exploiter.
Pas de pool chaud assis en mémoire. Pas de service « tâche planifiée » qui retient un état. La ligne dans la table containers est partie pendant vingt-trois heures par jour. Le serveur à tarif fixe que vous louez déjà exécute le travail ; les heures inactives ne génèrent pas une ligne séparée.
Hoody facture la boîte, pas le runtime. Un agent nocturne de 60 minutes et un worker toujours allumé se retrouvent tous les deux sur la même facture de serveur à tarif fixe. Le gain n'est pas « ne payer que ce que vous utilisez » — c'est ne pas payer deux fois pour les frais généraux de pool chaud que vous ne désirez pas.
Vous n'écrivez pas un Lambda de réveil, un worker « démarre le conteneur » ou un watchdog qui le retire. Hoody-cron POSTe. Hoody-containers spawne. L'agent sort. Un second cron POSTe DELETE. C'est toute la surface.
La plupart des plateformes d'agent gardent le worker chaud vingt-quatre heures sur vingt-quatre pour qu'il soit prêt en moins d'une seconde. Pour une tâche batch de 3h du matin, c'est exactement le mauvais arbitrage. Un démarrage à froid en quelques secondes convient quand le planning est le vôtre.
Un conteneur d'agent toujours allumé, ou un siège de pool chaud réservé à un agent qui tourne une fois par jour, est vivant 720 heures par mois. 719 de ces heures, il ne fait rien.
L'inactivité est la ligne facturée sur les plateformes à la secondeUn conteneur éphémère monté par une entrée cron existe pendant une heure par nuit. Trente heures par mois, au total. Le processus de l'agent retourne 0 et la ligne dans la table containers est partie.
Hoody facture le serveur, pas le runtime. La colonne « vivant » montre quand l'agent existait chaque nuit — le même serveur à tarif fixe tourne qu'il soit présent ou non. La tarification commence à 29 $ / mois et varie selon les spécifications, la région et la durée de location.
Un agent qui n'existe que quand il y a du travail à faire.
Les patterns qui paient pour qu'un agent existe 24h/24. Sur Hoody, l'agent s'exécute dans le serveur à tarif fixe que vous louez déjà — pas de pool chaud, pas de service scheduler, pas de mesure à la seconde.
Un agent qui n'existe que quand il y a du travail à faire.