Death of
ChatOps, as we’ve known it, is dying. After a decade of regex commands and unreadable log dumps in chat, Google’s open-source A2UI (Agent-to-User Interface) points to what comes next: agent-generated, secure, native user interfaces delivered exactly where you work. For SRE, DevOps, and MLOps teams, it’s the beginning of agentic interfaces—and the end of walls of text.
The wall-of-text problem in Ops
It’s 3 AM and an incident pings your on-call. You ask the bot for status and get 50 lines of unformatted JSON and a table that collapses on mobile. You try a scaling command—was it scale service checkout –x=3 or service scale checkout 3? This cognitive friction—syntax memorization, parsing noise, and zero visual context—is the last mile failure of text-only ChatOps. We have smart agents shackled to dumb outputs.
Enter A2UI: safe like data, expressive like code
A2UI is a declarative protocol: agents send a compact JSON blueprint describing intent (“a card with a title, metrics, and two buttons”), and a trusted client renders it using native components (React, Flutter, Angular, etc.). No raw HTML/JS is shipped, avoiding security pitfalls and iframe heaviness. The result: interactions that feel like product-quality apps, generated just-in-time by your agents.
Why this architecture wins for Ops
- Security: Data-only payloads keep execution inside your renderer’s sandbox; policies and RBAC apply uniformly.
- Consistency: UIs inherit your design system and accessibility defaults automatically.
- Resilience: Works across web, desktop, and mobile without brittle formatting hacks.
- Observability: Every widget and action is structured, making audit and analytics straightforward.
- Velocity: Agents ship features as JSON schemas instead of bespoke frontends.
Three killer use cases for platform teams
1) Interactive Incident Commander (SRE)
Scenario: High latency in the checkout service.
A2UI response: The agent posts an Incident Card with live SLOs, a sparkline of p95 latency, a dropdown to choose a region, and buttons for “Scale 2x” and “Roll back to v1.42,” each gated by confirmation and RBAC.
Why it matters: Cuts MTTR by placing validated actions next to the alert—no tab hunt, no syntax errors.
2) Human-in-the-loop labeling (MLOps)
Scenario: A fraud model flags a transaction at 45% confidence.
A2UI response: A Review Request card shows anonymized features, past decisions, and “Approve/Flag” options plus a confidence slider and comment box. Submissions flow to your data pipeline.
Why it matters: On-demand labeling in chat—no custom web app, no waiting on frontend cycles.
3) Self-service infrastructure (DevOps)
Scenario: A developer needs a Redis instance.
A2UI response: A Resource Request form with validated fields (tier, size, TTL, environment) and policy hints. “Request” triggers a ticket or Terraform workflow; “Estimate” previews cost.
Why it matters: Replaces static TicketOps with safe, guided, schema-validated self-service.
Under the hood: anatomy of an A2UI payload
A2UI messages are concise JSON documents that describe layout, components, data bindings, and actions. The client renderer turns this into native UI, enforcing your theme and policies. Here’s a simplified example for an SRE confirmation card:
{
"type": "card",
"id": "incident-ckout-1278",
"header": {
"title": "Checkout Latency Spike",
"subtitle": "p95 1.8s in us-central1"
},
"body": [
{ "type": "metric", "label": "Error rate", "value": "3.2%", "trend": "up" },
{ "type": "chart.sparkline", "series": [1.2,1.5,1.8,1.7,1.9] },
{
"type": "select",
"id": "region",
"label": "Region",
"options": ["us-central1", "europe-west1"],
"value": "us-central1"
}
],
"footer": {
"actions": [
{
"type": "button",
"variant": "primary",
"label": "Scale 2x",
"action": {
"name": "scale_service",
"params": { "service": "checkout", "factor": 2, "region": "{{region}}" },
"confirm": {
"title": "Confirm scale",
"message": "Scale checkout 2x in {{region}}?"
},
"requiresRole": "sre.oncall"
}
},
{
"type": "button",
"variant": "secondary",
"label": "Rollback v1.42",
"action": { "name": "rollback", "params": { "service": "checkout", "version": "1.42" } }
}
]
}
}
The agent sends the JSON; the renderer decides how a “primary” button looks, logs interactions, and routes actions to backend tools with appropriate auth.
Getting started
- Clone the repo and run the example agent (the “restaurant finder” doubles as a template for service discovery flows).
- Embed a renderer in your internal portal or chat app; point it at your agent gateway.
- Define a small component set (Card, Form, Metric, Chart, Button) and map to your design system tokens.
- Wrap actions with policy checks and require confirmations for high-impact ops.
Links:
- Repo: github.com/google/A2UI
- Docs: a2ui.org
Conclusion: the era of just-in-time UI
A2UI shifts teams from building fixed dashboards to generating the exact UI an incident or workflow demands, on demand. For platform engineers drowning in context switching, it’s a pragmatic path from “chat walls” to actionable, safe, and auditable interfaces—bringing the interface to the agent, not the other way around.
Key takeaways for Ops teams
- Text-only ChatOps is the bottleneck; agentic UIs remove the last mile of friction.
- Declarative, data-only payloads are safer and easier to govern than ad hoc HTML/JS.
- SRE, MLOps, and DevOps workflows benefit immediately: faster MTTR, better labeling, safer self-service.
- Renderers enforce consistency, accessibility, and policy—no bespoke frontends required.
- Start small: a card, a form, a couple of actions; expand as your agents learn new skills.