Cette page t'a-t-elle aidé ?
Cette page t'a-t-elle aidé ?
Concepts
Quatre concepts à comprendre avant d'intégrer Gilbert. Vingt minutes de lecture aujourd'hui, des heures épargnées en debug demain.
Dernière mise à jour : 15 mai 2026
Un workspace est l'unité racine de Gilbert : une équipe, un client, une org. Tout ce qui se passe dans Gilbert se rattache à un workspace : intégrations OAuth, agents embed, repos liés, routines, connexions MCP, chat history.
Le workspace apparaît dans :
iss de vos JWT SSO (c'est lui, pas un attribut data-* du snippet embed, qui rattache l'iframe à votre workspace)product_context qui route vos endpoints webhooks (voir Webhooks)gilbert.workspaces en base, avec FK workspace_id sur toutes les tables scopéesIsolation forte : un workspace ne voit jamais les données d'un autre. Un trigger Postgres crée automatiquement un workspace « personnel » à chaque signup, donc aucun user n'existe sans workspace.
Le product_context est un label preset hérité des premières versions : il indique le contexte produit d'un agent embed (solve-web, solve-learn, solve-holding, etc.) pour appliquer des allowlists de tools par défaut.
Aujourd'hui, c'est le workspace qui scope réellement les agents, les routines et les intégrations. Le product_context reste comme fallback de configuration et label d'identification, mais ce n'est plus le pivot du routing.
Gilbert reconnaît trois identités possibles. Choisir le bon mode conditionne la sécurité et l'UX :
| Mode | Quand | Identité |
|---|---|---|
| guest | Page publique, prospect anonyme | Cookie guest (TTL 24h) |
| JWT SSO | User loggué dans votre app, embed | Token signé HS256, TTL court |
| cookie | User loggué directement sur gilbert.solveholding.com | Session Supabase |
Un dossier regroupe toutes les conversations, fichiers et states associés à un user (ou à un guest token) sur un product_context donné. Il persiste entre sessions.
Identifiant stable : dossier_id. Vous pouvez pré-sélectionner un dossier à l'ouverture de l'iframe via le param ?dossier=… : utile si vous gérez plusieurs contextes parallèles pour un même user.
POST /api/chat avec le JWT (ou le cookie session)text-delta, tool-call, finish)create_quote), il dispatche un webhook signé vers votre backendfinishSuite logique : voir API (format stream) et Webhooks (vérification signature, retry).