Back-end
Sous le capot : un back-end bâti pour la confiance.
L’essentiel de la valeur d’Open BrAIn est invisible : isolation des données, versions immuables, décisions signées, reprises sans doublon. Voici comment les briques s’assemblent.
Les clients ne passent que par les API publiques. Le client de l’assistant n’expose aucune méthode d’approbation ni de publication. Le cadre en pointillé désigne un composant optionnel.
Deux cœurs, un même contrat
Une référence lisible, un moteur natif rapide.
Cœur de référence (Python)
Il définit le comportement attendu : 94 opérations HTTP décrites par un contrat versionné, chacune exposée comme outil MCP. Il couvre les imports de fichiers, la synthèse bornée et la sélection de passages par modèle.
Livré
Cœur natif (Rust)
Il reprend le même contrat et le même schéma de données, et ajoute 78 opérations natives : espaces de travail, tâches, missions d’agents, graphe immuable, dossiers de revue.
Livré sur données synthétiques Remplacement en production à décider
Données
Chaque organisation dans sa bulle, chaque version figée.
PostgreSQL porte les identités, les droits, les propositions, le journal et l’historique des conversations. Chaque organisation est strictement isolée des autres, quel que soit le chemin d’accès.
Le graphe de connaissances du cœur natif conserve chaque version publiée. Une version est figée et n’est servie qu’une fois complète ; une panne en cours de publication ne laisse ni doublon ni état incohérent.
Livré Coût à froid et mémoire du graphe en qualification
MCP exhaustif
Tout ce que fait l’interface, un assistant peut le faire, dans les règles.
Le serveur MCP (Model Context Protocol) expose chaque opération HTTP comme un outil, en passant par la même authentification, les mêmes droits et les mêmes validations. Rien n’est contourné. Il fournit aussi des ressources et des guides de parcours pour les assistants : consulter et citer, signaler une erreur, suivre un signalement, traiter une tâche, proposer une correction, examiner un domaine, mesurer son assistant.
Même porte d’entrée
Un outil MCP appelle la même route que l’interface. Pas de chemin de traverse pour les modèles.
Actions sensibles confirmées
Approuver ou publier par MCP exige une confirmation explicite du responsable, qu’aucun modèle ne peut produire.
Compatible avec tout LLM
Aucun modèle imposé : l’assistant de l’utilisateur se connecte avec ses propres droits.
Robustesse
Conçu pour les pannes, pas seulement pour les démonstrations.
| Garde-fou | Effet | État |
|---|---|---|
| Clés d’idempotence | Une commande rejouée après une coupure ne s’exécute pas deux fois ; la même clé avec un autre contenu est refusée. | Livré |
| Délais par opération | 20 s par défaut, 60 s pour la synthèse, 120 s pour la publication. Au-delà, l’issue est déclarée incertaine et se vérifie dans le reçu. | Livré |
| Limites de transport | Tailles maximales explicites pour les messages, les fichiers, les sources et les réponses, et des erreurs distinctes pour chaque cas. | Livré |
| Analyse de fichiers isolée | Temps, processeur, mémoire et décompression bornés : un document piégé ne fait pas tomber le service. | Livré |
| Restauration coordonnée | Sauvegarde conjointe de la base et du graphe, restaurée sur des cibles neuves avec identifiants et droits intacts. Une archive altérée est refusée. | Livré sur synthétique |
| Rotation des clés d’identité | Les clés du fournisseur d’identité changent sans redémarrage, et une clé inconnue est refusée. | Livré Fournisseur réel à qualifier |
| Disponibilité | Haute disponibilité, objectifs de reprise et sauvegarde à chaud. | En conception |
Pile technique
Des briques éprouvées, des versions épinglées.
Back-end
Python 3.12 · FastAPI · SQLAlchemy
Rust · Axum · sqlx · tokio
Données
PostgreSQL 17 · migrations Alembic
Une base de graphe versionnée pour les versions publiées
Protocoles
HTTP/JSON avec contrat OpenAPI
MCP Streamable HTTP · OIDC · JWKS
Front-end
React 18 · TypeScript · Vite
Vitest · Playwright
Les licences de toutes les dépendances sont vérifiées automatiquement : 421 paquets Python et Node, 348 crates Rust.