A2UI expliqué : ce que fait (et ne fait pas) le protocole agent-vers-interface utilisateur
A2UI est un protocole déclaratif JSON qui permet aux agents IA de décrire les interfaces à restituer par un client. Comment cela fonctionne, quels moteurs de rendu existent et ce qu'il ne fait pas.
À retenir
A2UI (Agent to UI) est un protocole JSON ouvert et déclaratif créé par Google. Un agent IA envoie une description d'une interface et un client la restitue avec ses propres composants natifs au lieu d'exécuter le code de l'agent. Il s'agit d'un moyen de déplacer la structure et les données de l'interface utilisateur au-delà d'une limite de confiance, et non d'un système d'animation, d'une bibliothèque de composants ou d'un moteur de rendu fini. ExodeUI n'est pas un moteur de rendu A2UI et n'est pas affilié à Google.
Qu'est-ce que A2UI ?
A2UI est un protocole pour les interfaces pilotées par agent. Au lieu de renvoyer un mur de texte ou d'exécuter du code généré, un agent IA envoie un flux de messages JSON décrivant une interface utilisateur : quelle surface créer, quels composants elle contient et quelles données les remplissent. Le client reçoit ces messages et restitue le résultat avec des composants auxquels il fait déjà confiance. A2UI a été créé par Google et est sous licence Apache 2.0, avec les contributions de CopilotKit et de la communauté open source. En octobre 2026, la spécification de production actuelle était la v0.9.1 et la v1.0 était une version candidate.
Le problème que A2UI essaie de résoudre
Les agents sont doués pour produire une réponse utile et mauvais pour la fournir sous forme d'interface. Une réponse textuelle ne peut pas afficher un tableau comparatif, un bon de commande ou un tableau de bord. La génération arbitraire de HTML ou JavaScript résout le problème de présentation et crée un problème de sécurité, car le client exécute maintenant du code qu'il n'a pas écrit. A2UI emprunte une troisième voie : l'agent décrit l'interface utilisateur dans un format contraint et le client décide comment la restituer. L'agent ne peut utiliser que les composants approuvés par le client et le résultat est constitué de données plutôt que de code exécutable.
Comment est construite une surface A2UI
Le protocole utilise un petit ensemble de types de messages. Le schéma exact change d'une version à l'autre, vérifiez donc la spécification avant d'en implémenter une, mais la forme est stable.
- createSurface : indique au moteur de rendu de créer une nouvelle surface, qui est une région de l'interface que l'agent peut mettre à jour
- updateComponents : ajoute ou modifie les définitions de composants sur cette surface
- updateDataModel : modifie les données affichées par les composants, sans renvoyer la structure
- deleteSurface : supprime une surface lorsqu'elle n'est plus nécessaire
Rendus et transports
A2UI est indépendant du transport. La spécification décrit les messages, pas la manière dont ils voyagent. Le projet répertorie les implémentations de moteur de rendu pour Angular, Flutter, Lit, React et Markdown, ainsi que les liaisons de transport pour AG-UI, A2A et MCP, avec WebSockets, SSE et REST également utilisables. C'est cette flexibilité qui est importante : la même réponse d'agent peut être rendue par un client Web, une application mobile ou une application de bureau, chacun utilisant son propre système de conception.
Ce que A2UI ne fait pas
A2UI est facile à lire. Il ne fournit pas de bibliothèque de composants que vous pouvez déposer dans une application, et il ne restitue rien par lui-même : vous avez besoin d'un moteur de rendu et d'un catalogue de composants contrôlés par le client. Cela ne décide pas de la manière dont l’interface utilisateur se déplace. Il ne remplace pas MCP, qui expose les outils et les données à un modèle, ni AG-UI, qui transporte les événements d'interaction entre un agent et un frontend. Et cela ne supprime pas la nécessité d’une révision technique : les interfaces générées doivent toujours gérer le chargement, les états vides et d’erreur, les autorisations et l’accessibilité.
A2UI contre AG-UI contre MCP
Ces trois éléments sont souvent mentionnés ensemble car ils résolvent différentes couches du même problème. Un raccourci utile : A2UI décrit l'interface, AG-UI transporte l'interaction et MCP donne à l'agent les outils et les données. La propre documentation de A2UI décrit AG-UI comme une liaison de transport pour A2UI, et A2UI peut également voyager via MCP. Ce sont des normes complémentaires et non concurrentes. Si vous choisissez une intégration, partez de ce que votre client peut restituer et du transport qu'il prend déjà en charge, et non du protocole le plus dynamique.
Où l’animation et l’interaction s’intègrent
A2UI décrit la structure et les données. Le mouvement est une préoccupation du client : le moteur de rendu décide si une surface apparaît instantanément, apparaît en fondu ou passe d'un état précédent. C'est une bonne nouvelle pour les équipes produit, car cela conserve le système d'animation dans le client où il peut respecter le système de conception et les paramètres d'accessibilité. Cela signifie également qu'une implémentation de A2UI n'est pas automatiquement animée. Si une interface générée nécessite une pression sur un bouton, une transition d'état ou une réaction de mascotte, le client doit fournir ce comportement. ExodeUI peut lire un mouvement interactif dans un client et dispose d'un serveur MCP pour les outils de codage d'IA, mais ce n'est pas un moteur de rendu A2UI et ne doit pas être décrit comme tel.
Extrait d’implémentation en production
// Simplified shape of an A2UI message stream (schema differs by version).
{ "createSurface": { "surfaceId": "cart" } }
{ "updateComponents": { "surfaceId": "cart", "components": [ /* ... */ ] } }
{ "updateDataModel": { "surfaceId": "cart", "data": { /* ... */ } } }
{ "deleteSurface": { "surfaceId": "cart" } }Principes clés à retenir
- A2UI est un protocole JSON pour les interfaces décrites par agent, créé par Google et sous licence Apache 2.0.
- Le client effectue le rendu avec ses propres composants ; l'agent n'exécute pas de code d'interface utilisateur arbitraire
- Il définit les messages et laisse le rendu, le transport et le mouvement au client
- Ce n'est pas un système d'animation ou une bibliothèque de composants déroulante
- ExodeUI n'est pas un moteur de rendu A2UI et n'a aucune affiliation avec Google