
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.
Vous avez lancé un agent de quarante minutes avant de quitter le bureau. Maintenant vous êtes dans le train. L'agent diffuse sa trace vers un chemin pipe ; vous faites curl sur la même URL depuis votre téléphone et regardez les messages d'état défiler. Quand la boucle se termine, hoody-notifications vous fait vibrer. Deux URLs et une vibration — pas de SDK, pas de tableau de bord, pas de polling.
Tail en direct au-dessus, notification push en dessous — même téléphone, même agent. La trace est le monologue en cours que vous regardez du coin de l'œil ; la notification est le point final. Vous n'avez pas à choisir lequel câbler : les deux viennent de l'agent, les deux atterrissent sur l'appareil déjà dans votre poche.
La boucle de votre agent envoie chaque événement vers un chemin avec PUT. Depuis le train, vous faites GET sur le même chemin dans une application terminal. Les lignes arrivent au fur et à mesure — pas de rafraîchissement de cinq secondes, pas de timestamp "dernière mise à jour". Vous jetez un œil à l'écran, voyez que l'agent est vivant, et rangez le téléphone.
Quand la boucle externe se termine, le dernier appel de l'agent atteint hoody-notifications avec un résumé d'une ligne. Votre téléphone vibre. Vous ne déverrouillez pas — vous lisez la bannière, et vous savez que l'exécution est terminée avant même d'entrer dans la prochaine station.
Hoody Pipe transporte le tail en direct ; hoody-notifications transporte la vibration. L'agent les traite comme n'importe quel autre appel HTTP — un PUT et un POST, pas de SDK entre les deux.
L'agent tourne sur un serveur que vous avez configuré avant de partir. Pendant que vous bougez, votre téléphone est le seul client dans la boucle. L'agent fait tout le travail ; le téléphone fait toute l'observation.
À l'intérieur de la boucle, chaque événement — think, tool_use, result — est redirigé vers un seul chemin. Le pipe diffuse vers quiconque est en train de lire ; si personne ne lit encore, le chemin reste ouvert pendant cinq minutes maximum.
PUT https://agent-pipe.…hoody.com/api/v1/pipe/agent-traceOuvrez un terminal sur le téléphone. curl -N le chemin. La trace s'affiche au fur et à mesure — pas de plomberie SSE, pas de broker, pas d'application à installer. Fermez l'onglet quand vous ne voulez plus regarder.
$ curl -N https://agent-pipe.…hoody.com/api/v1/pipe/agent-traceQuand la boucle externe retourne, l'agent poste un résumé d'une ligne vers hoody-notifications. Votre téléphone reçoit la push système depuis là — même vibration qu'un rappel de calendrier, pas d'application requise.
POST /notify ["summary":"billing-reconcile-7","body":"completed in 41:08"]Deux chemins HTTP et un troisième pour la vibration. L'agent ne sait pas que votre téléphone existe ; il parle simplement HTTP. Le téléphone ne connaît pas le conteneur de l'agent ; il ouvre simplement une URL.
Vous ne lisez pas chaque mot. Vous scannez trois tokens : une pensée, un appel, un résultat. S'ils bougent, l'agent est vivant. S'ils s'arrêtent, vous vérifiez l'heure sur le prochain push.
Pourquoi l'agent a choisi cet outil, ce qu'il attend en retour, où il pourrait bifurquer. Lire ces lignes dans un train, c'est lire l'esprit de l'agent en temps réel — une ligne par étape de raisonnement.
[think] reconcile invoices for julLa fonction exacte et les arguments que l'agent a décidé d'invoquer. Une ligne par appel, dans l'ordre où ils ont été lancés. Pas d'abstraction SDK, pas d'identifiant opaque — juste la requête au niveau du câble.
[tool_use] sql.exec("SELECT …")Comptes de lignes, durées, codes de statut — les choses sur lesquelles la prochaine ligne [think] va raisonner. Quand la boucle externe se termine, le résultat final atterrit sur le câble et hoody-notifications fait vibrer le téléphone dans votre poche.
[result] 412 rows · 88 msVotre téléphone est la barre de statut de l'agent.
Pas de tableau de bord. Pas d'application. Pas de SDK livré sur l'appareil. L'agent tourne sur un serveur, le statut vit sur votre téléphone, et la seule chose entre les deux est HTTP. Vous pouvez changer de train, changer d'opérateur, perdre le signal pendant deux arrêts — quand vous vous reconnectez, la prochaine ligne [result] continue de s'afficher.
Surveiller un agent à longue durée d'exécution a historiquement signifié un SaaS, un onglet de tableau de bord, ou un webhook + bot personnalisé. Rien de tout cela ne survit à la question "et si je faisais juste curl depuis mon téléphone ?".
Pipez la trace, postez la vibration. Votre téléphone est la barre de statut de l'agent — pas d'application requise.