Contexte
Les générateurs d'images et de vidéos grand public sont devenus payants. Contrainte posée : aucun coût récurrent, utilisable depuis un téléphone, et des images de personnes présentables — sans jamais mentir sur ce qu'un moteur limité sait vraiment faire.
Ce que j'ai construit
- Console web sur Cloudflare (Worker, D1, R2) derrière Cloudflare Access, utilisable depuis un téléphone.
- Moteur cloud sur Workers AI, modèle retenu après comparaison de 48 images sur l'anatomie et le format.
- Moteur maison : ComfyUI sur une RTX 3060, exposé par un tunnel fermé par Service Auth — sans quota, sans filtre, graine honorée.
- Six recettes (vidéo libre, plan vidéo, plan du clip, personnes, visuel, libre) ; le moteur se choisit au lancement.
- Un contrat unique entre les deux moteurs : chacun déclare son déterminisme et son code d'indisponibilité, la console ne devine jamais.
- Ménage nocturne qui efface des fichiers, jamais des lignes de la base.
- Deux tâches planifiées Windows qui relancent ComfyUI et le tunnel automatiquement.
Preuves
- 141 tests (17 fichiers), relancés le 21/09.
- Mesures froid/chaud du moteur maison publiées dans le dépôt.
- Aucun chiffre de quota inventé : `reste: null` veut dire « je ne sais pas », jamais zéro.
Un incident réel, et comment je l'ai réglé
Workers AI n'honore pas la graine
- Constat
- La console promettait de pouvoir « refaire à l'identique » une génération en repassant la même graine ; mesuré sur le moteur cloud, deux générations avec la même graine donnaient deux images différentes.
- Cause
- Workers AI n'honore pas la graine transmise : une limite du service, pas un bug de la console — le moteur maison, lui, l'honore correctement.
- Correctif
- La console a cessé de promettre « refaire à l'identique » partout : chaque moteur déclare son déterminisme et son code d'indisponibilité, elle ne devine jamais et ne bascule jamais de moteur en silence.
Stack
Cloudflare Workers · D1 · R2 · Workers AI · Access · ComfyUI · LTX-Video · Python