Principe de fonctionnement
LaunchVideo repose sur le modèle anthropic/claude-opus-5.5. Le modèle génère le script d’une vidéo sous forme de code HTML/JS, puis un agent serverless l’interprète pour produire un fichier MP4. Chaque production dure environ quatre minutes et consomme près de 100 000 tokens (≈90 k d’entrée, 15 k de sortie), dont la majorité correspond au code HTML du film.
Architecture serveurless
L’ensemble du processus s’exécute dans une microVM fournie par OpenComputer. La VM utilise Amazon Linux 2023 sur architecture arm64, avec 4 vCPU et 8 GB de RAM, exécutant Node 22. Aucun serveur dédié, aucune file d’attente et aucun framework supplémentaire ne sont requis ; l’agent est déployé via la commande opencomputer deploy et fonctionne comme un fichier autonome.
Processus de rendu vidéo
Trois outils sont définis dans l’agent : web_fetch récupère le texte, le titre, les balises et les couleurs d’une page ; check_scene charge le film et signale les erreurs JavaScript ainsi que le texte visible ; render_video lance Chromium en mode headless via Playwright, capture les images JPEG et les transmet à libx264 (CRF 18) pour encoder un flux 1920×1080 @ 30 fps. Le moteur de rendu remplace les horloges du navigateur (requestAnimationFrame, timers, Date, Web Animations) par un virtual clock, garantissant que chaque image est déterministe et que le rendu est reproductible.
Déploiement, stockage et limites
Le token d’upload Vercel Blob, limité à un chemin et à trois heures, assure que l’agent ne conserve aucune donnée sensible. Le MP4 final est exposé via une URL Blob publique. Le contrôle du flux se fait par une API de session : création, envoi d’un tour, puis polling d’événements (tool.started, tool.completed, turn.completed). Le code source, disponible dans le dépôt diggerhq/shipvideo, montre l’agent minimaliste :
import { useInput, useModel, useTool } from "@opencomputer/agent";
import { checkScene, renderVideo } from "./tools/scene.js";
import { webFetch } from "./tools/web.js";
export default function Agent() {
const input = useInput();
useModel("anthropic/claude-opus-5.5");
useTool(webFetch);
useTool(checkScene);
useTool(renderVideo);
return `You are a motion designer who writes code. ...`;
}
Le principal point de friction réside dans le temps d’installation initiale de Chromium et ffmpeg (≈1 minute) à chaque exécution, ainsi que dans la consommation de tokens qui peut devenir coûteuse pour des vidéos plus longues. L’absence de modèle vidéo dédié signifie que la qualité visuelle dépend entièrement du rendu HTML/JS, limitant les effets avancés.