Qu'est-ce que Cradle ?
Cradle est la porte entre votre agent et ses outils — l'agent propose une action, des règles décident si elle peut s'exécuter, et la décision reste dans un journal qui ne peut pas être réécrit discrètement.
La définition
Cradle est la porte entre votre agent et ses outils. L'agent propose une action, des règles décident si elle peut s'exécuter, et la décision reste dans un journal qui ne peut pas être réécrit discrètement.
Le mécanisme porte un seul nom dans toute la documentation : la porte d'exécution (execution gate). Votre agent n'appelle pas les outils directement. Il soumet une proposition typée ; la porte l'évalue sans modèle dans la boucle ; le résultat est ajouté à un journal chaîné par hachage.
Trois propriétés en découlent, dans cet ordre :
- Governed. La règle vit hors de l'agent et porte une version — on voit
laquelle a autorisé l'appel. Adossé à
policy.ts,registry.ts,approvals.ts. - Sovereign. Votre matériel, votre réseau. Modèles et données n'en sortent
pas. Adossé à Docker, aux modèles GGUF locaux, à
node-llama-cpp. - Auditable. Un journal en ajout seul, chaîné par hachage, vérifié en
lançant une commande. Adossé à
audit.tsetverifyAuditChain().
Cette page sépare ce qui fonctionne aujourd'hui de l'architecture retenue. La distinction compte : l'architecture est une décision, pas la description de tous les chemins de code existants.
Ce qui fonctionne aujourd'hui
Deux mécanismes existent dans le code. Ils gouvernent des choses différentes et ne sont pas reliés entre eux.
La porte d'exécution — les actions sur les systèmes
src/core/runtime/ décide si un appel d'outil peut avoir lieu :
Proposition de l'agent typée, soumise au lieu d'un appel direct
→ porte déterministe contrat, enregistrement de l'outil, portées requises,
classe d'effet de bord (pur → irréversible),
idempotence
→ approbation humaine pour l'irréversible : délimitée, expirante,
à usage unique, jamais auto-accordée
→ exécution un outil non enregistré n'est pas appelable
→ entrée d'audit proposition, décision, observation — chaîne SHA-256Accessible aujourd'hui via la boucle d'appel d'outils de l'agent et le client
de bureau. Non exposée en HTTP : src/server/ ne référence pas
gateway.ts, donc un agent externe ne peut pas soumettre de proposition au
serveur.
Filtrage de risque à deux niveaux — les réponses aux humains
src/core/triage/ décide si un brouillon de réponse peut partir :
Message entrant
→ Risque L1 (règles déterministes) → indicateurs PII / injection / danger
→ Risque L2 (classifieur LLM) → { category, risk, confidence, skills }
→ Routeur → choisit l'agent par rôle et compétences
→ RAG → ancre le brouillon dans votre base
→ Agent → rédige une réponse avec citations
→ Décision :
green → réponse automatique
yellow / red → boîte opérateur → approuver / modifier / rejeterCe chemin ne passe pas par la porte d'exécution : orchestrator.ts
n'appelle pas gateway.ts.
Vérification
Le moteur de vérification existe — registre, vérificateurs adossés aux outils,
compensation, transitions d'état. Aucun vérificateur n'est livré avec les
packs métier (verifiers: [] dans les deux). Une post-condition sans
vérificateur enregistré se résout en inconclusive, jamais en pass. Le
mécanisme est construit, le contenu ne l'est pas. « Prouver ce qui s'est
réellement passé » ne fait pas encore partie du produit.
L'architecture retenue
Cradle est un runtime neuro-symbolique : le modèle raisonne en probabilités, le runtime gouverne par des règles explicites, et ces règles sont exprimées sur un vocabulaire d'exécution plutôt que dans la prose d'un prompt. C'est une décision sur la direction du produit, documentée intégralement dans runtime neuro-symbolique, où chaque section est étiquetée « actuel » ou « cible ».
Ce que ce document n'affirme pas : que le filtre de risque consulte aujourd'hui le vocabulaire d'exécution. Il ne le fait pas — les deux mécanismes ci-dessus sont séparés. L'affirmation deviendra vraie quand le chemin existera, pas avant.
Les pièces
| Pièce | Ce que c'est | Rôle |
|---|---|---|
| Cradle (application de bureau) | Le client Electron | La console : configurer les connecteurs, relire et approuver. N'exécute pas l'inférence. |
Cradle Server / cradle-cli | cradle-server headless + CLI léger | Détient données et connecteurs, exécute l'inférence. |
| SmartNotes | Une application distincte | Une intégration, pas une partie de Cradle : dépôt séparé, joint par MCP via smartnotes-local. |
Canaux existants : Telegram, un widget web intégrable, une API HTTP, et MCP dans les deux sens — Cradle peut consommer vos serveurs MCP et se faire consommer comme tel.
Pour aller plus loin
- Vous débutez ? Installez l'application de bureau.
- Une machine GPU ? Suivez le guide serveur GPU.
- Le modèle mental ? Lisez l'aperçu de l'architecture.
- La conception cible complète ? Lisez runtime neuro-symbolique.
- Les notes vocales ? Lisez la documentation SmartNotes.