
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.
Frappez une URL qui n'existe pas. Un script exec wildcard attrape l'appel, demande à un LLM d'écrire le gestionnaire, l'exécute dans un bac à sable V8, et répond. L'appel suivant est natif — la route existe maintenant.
Hoody Exec permet à un seul fichier TypeScript de servir toute route HTTP, y compris un capture-tout. Avec ai true, le script dispose également d'un handle de modèle injecté. Composez ces deux et la requête elle-même devient le déclencheur pour écrire le gestionnaire.
GET /api/...Tout chemin sous le capture-tout frappe un seul script.
[...slug].tsmetadata.parameters.slug porte les segments de chemin.
generateText([ model ])ai true injecte le modèle. Le défaut est gemini-2.5-flash-lite.
isolate.evalChaque script tourne dans son propre isolate V8, conçu pour le code de confiance.
fs.write to scripts/NL'appel suivant frappe le fichier sauvegardé directement. Pas de LLM, vitesse native.
// @mode serverless
// @ai true
// @ai-model anthropic/claude-sonnet-4.5
const path = '/' + (metadata.parameters.slug ?? []).join('/');
const body = req.body ?? []'';
// Already saved? Hand off to the cached route.
const saved = await fs.exists('scripts/1/api' + path + '.ts');
if (saved) return fetch(path, [ method: metadata.method, body ]);
// Otherwise: ask for a handler, sandbox it, save it.
const [ text: handler ] = await generateText([
model,
system: 'Return a JS handler body. No imports. Return JSON.',
prompt: `URL $[metadata.method] $[path]\nQuery $[JSON.stringify(metadata.query)]\nBody $[JSON.stringify(body)]`,
]);
const result = await isolate.eval(handler, [ req, res, fetch ]);
await fs.write('scripts/1/api' + path + '.ts', '// @mode serverless\n' + handler);
return result;Deux commentaires magiques et une récupération arrière dans la route. Le wildcard se trouve à scripts/1/api/[...slug].ts. Le fichier sauvegardé atterrit un répertoire plus haut. Les deux parlent HTTP, donc le script peut appeler ses propres voisins lors de la génération.
Le mécanisme se lit de trois manières différentes selon qui vous êtes. Elles se tissent dans le même argument.
L'outil admin, le script d'intégration, le rapport que vous aviez l'intention de câbler. Frappez l'URL quand vous en avez besoin. Le gestionnaire s'affiche. Sauvegardé au moment où vous rechargez.
Votre agent a besoin d'une route qui n'existe pas. Ailleurs, il écrirait du code, déploierait, attendrait, puis appellerait. Ici, il appelle. L'API arrive au moment où la réponse arrive.
Et si chaque endpoint que vous ayez jamais expédié n'était que la trace des URLs que vous aviez réellement appelées ? La documentation s'effondre dans le journal d'accès. Les spécifications s'effondrent dans le trafic.
La documentation devient le journal d'accès.
Les modèles que les développeurs utilisent quand ils ont besoin d'ajouter rapidement un endpoint. Chacun facture les frais de scaffolding par route. Le wildcard les paie une fois.
La documentation n'est plus un plan. C'est la trace des URLs que vous avez appelées.