Aller au contenu
use-cases / wake-agent-at-3am / hero
Cron · Agent · Conteneurs

Réveiller un agent à 3h, le retirer à 4h

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é.

Lire la documentation
use-cases / wake-agent-at-3am / mechanism

Deux entrées cron, un conteneur éphémère

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.

POST cron.hoody.com/users/root/entries
Déclencheur de réveil · 02:59
// Entrée cron qui se déclenche une fois par jour et POSTe la requête de spawnPOST cron.hoody.com/users/root/entries{ schedule: "0 3 * * *", command: "curl -X POST $AGENT_URL -d @prompt.json", comment: "billing-reconcile · 3am wake"}
se déclenche à 02:59 →
POST api.hoody.com/api/v1/projects/$PID/containers
Spawn de l'agent · ai + hoody_kit
// L'agent démarre, réconcilie les factures de la veille, écrit des notes, sortPOST api.hoody.com/api/v1/projects/$PID/containers{ name: "billing-reconcile-$(date +%s)", ai: true, hoody_kit: true, autostart: false}
le conteneur sort, le second cron se déclenche à 04:01 →
DELETE api.hoody.com/api/v1/containers/$CID
Démolition · 04:01
// Ceinture et bretelles : un second cron affirme que le conteneur est partiDELETE api.hoody.com/api/v1/containers/$CID// Réponse de hoody-containers200 OK · container deleted

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.

use-cases / wake-agent-at-3am / night

À quoi ressemble vraiment la nuit

Cinq moments. L'agent est vivant pour les trois du milieu. En dehors de cette heure, la ligne dans la table containers est partie.

  1. 02:59Cron · réveil

    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é.

  2. 03:02Agent · lecture

    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.

  3. 03:31Agent · écriture

    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.

  4. 03:58Agent · sortie

    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é.

  5. 04:01Cron · retrait

    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.

use-cases / wake-agent-at-3am / powers

Pourquoi cette forme de cycle de vie marche

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.

L'inactivité ne coûte rien de plus

Le conteneur n'existe pas entre les runs

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.

Pas de ligne par exécution

La facture serveur ne change pas

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.

Pas de code de cycle de vie

Deux lignes cron, pas de daemon de glu

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.

use-cases / wake-agent-at-3am / economics

Le coût d'un agent inactif

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.

Agent toujours allumé24h × 30 jours
720h / mo

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 seconde
Réveil-et-retrait1h × 30 jours
30h / mo

Un 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.

  • LUN02:59 → 04:0162m vivant
  • MAR02:59 → 04:0060m vivant
  • MER02:59 → 03:5858m vivant
  • JEU02:59 → 04:0061m vivant
  • VEN02:59 → 04:0060m vivant
  • SAM02:59 → 03:5959m vivant
  • DIM02:59 → 04:0060m vivant
Facture serveur inchangée

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.

use-cases / wake-agent-at-3am / punchline

Un agent qui n'existe que quand il y a du travail à faire.

Heures vivant par jour1h02:59 → 04:01, puis parti
Changement de facture serveur0Tarif fixe, vivant ou inactif
Code de cycle de vie à écrire0Deux lignes cron, pas de daemon
Voir l'API spawn
use-cases / wake-agent-at-3am / replaces

Ce que cela remplace

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.

  • Conteneurs d'agent toujours allumés23 heures inactives, facturées au tarif actif
  • Pools chauds AWS LambdaPayer pour éloigner les démarrages à froid du cron
  • Tâches planifiées Modal LabsRuntime fermé, facturation opaque
  • Code maison de cycle de vie chaud-froidTrois semaines à écrire, six mois à déboguer
  • Sondage des endpoints /spawnUn second cron dont le seul boulot est de lancer le premier
  • Box GPU Hetzner toujours en marche200 $/mois pour une inférence quotidienne
use-cases / wake-agent-at-3am / cta

Un agent qui n'existe que quand il y a du travail à faire.

Lire la documentation
use-cases / wake-agent-at-3am / related

Découvrez les autres