La thèse
Et si l'orchestration d'agents était de la configuration, pas du code ?
Trois prémisses partagées avec d'autres frameworks. Trois inversées par Studio.
01
Un pipeline est un fichier YAML
Déclare les stages et les groupes. Chaque stage référence un agent (config runtime) et un contrat (JSON schema + contraintes). Modifiable sans environnement de programmation, ligne par ligne.
02
Le moteur exécute via la boucle RALPH
Exécuter → valider → avancer si le contrat passe, retry avec feedback enrichi si ça échoue. Aucun stage n'avance tant que son contrat n'est pas satisfait.
03
Lancez-le 10 fois, obtenez 10 sorties correctes
C'est pourquoi les contrats et les retries existent. Anti-théâtre par construction — l'agent ne peut pas sauter les étapes que le contrat exige.
Trade-offs
Trade-offs explicites.
Pas accidentels.
LangGraph, CrewAI, Autogen partagent une prémisse : l'orchestration d'agents est du code. Studio prend la prémisse inverse et l'assume.
| Framework | Surface | Validation | Parallélisme | Licence |
|---|---|---|---|---|
| LangGraph | Code Python | Manuelle | Natif | MIT |
| CrewAI | Code Python | Manuelle | Natif | MIT |
| Autogen | Code Python | Manuelle | Natif | CC BY 4.0 |
| studio: | Config YAML | Par contrat | Déclaratif | AGPL-3.0 |
Si votre besoin correspond aux trois premiers, pas besoin d'écrire Studio. Sinon, vous écrivez un fichier YAML consultable ligne par ligne, modifiable sans environnement de programmation.
Pourquoi Studio existe
Trois patterns.
Tout est déclaratif. Vous décrivez ce que vous voulez en YAML, le moteur gère l'orchestration. Wiki Creator et Little Chef s'appuient dessus en production.
Pattern 01
Groupes de génération et validation
Un stage produit, un autre critique. Si le critique rejette, le groupe redémarre avec le feedback accumulé. Max N itérations. Anti-théâtre appliqué à la créativité.
Pattern 02
Groupes parallèles
Fan-out / fan-in déclaré en YAML. Les stages tournent en concurrence. Le moteur gère async/await et le merge.
Pattern 03
Vérification des appels d'outils
Le runner suit les appels d'outils. Si le contrat exige repo_manager.write_file minimum 1 et que l'agent n'en appelle aucun, le stage échoue. Anti-théâtre.
Architecture
Sept packages, un monorepo. Chacun tient dans une fenêtre de contexte.
Le graphe de dépendances est l'architecture.
@studio/contracts
Types et interfaces partagés. Zéro dépendances.
@studio/anonymizer
Détection et anonymisation de données personnelles avant les appels LLM.
@studio/ralph
Exécuter, valider, retry. Exécuteur générique.
@studio/runner
Appels LLM, runtime de plugins d'outils, multi-fournisseur.
@studio/engine
Orchestration de pipelines, machine d'état, persistance.
@studio/api
API REST HTTP (Fastify) + streaming SSE.
@studio/cli
Interface terminal pour les pipelines Studio.
Construit sur Studio
Deux domaines. Zéro code d'orchestration.
Wiki Creator
Extrait entités, relations, génère des pages wiki depuis des livres EPUB. Pipelines NLP + LLM.
Little Chef
Planificateur de repas. Recherche des cuisines, développe des recettes avec profil nutritionnel, génère des listes de courses.
Pourquoi un commons
Pourquoi un commons, pas une startup.
Studio aurait pu être une startup. La forme du produit s'y prête. Le choix inverse est délibéré. Un kernel d'orchestration d'agents IA, capturé par une entreprise, devient le goulot d'étranglement de tout ce qui le traverse. Studio est conçu pour ne pas pouvoir être capturé.
Lire la charteTrois mécanismes structurels
Licence AGPL-3.0
Toute modification utilisée en production doit être publiée sous la même licence.
Fondation à but non lucratif (en cours)
Le kernel est destiné à appartenir à une fondation à but non lucratif, non transférable. Le retrait progressif de la fondatrice est un objectif explicite.
Trois couches strictement séparées
Kernel open source (commons) · Support core (hébergement, maintenance) · Produits propulsés par Studio (commerciaux ou open source). Aucune entité commerciale n'a autorité sur le kernel.
Le kernel est un commons par conception. La licence est le mécanisme qui le maintient.