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.ts et verifyAuditChain().

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-256

Accessible 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 / rejeter

Ce 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èceCe que c'estRôle
Cradle (application de bureau)Le client ElectronLa console : configurer les connecteurs, relire et approuver. N'exécute pas l'inférence.
Cradle Server / cradle-clicradle-server headless + CLI légerDétient données et connecteurs, exécute l'inférence.
SmartNotesUne application distincteUne 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