구글 A2UI: “AI는 텍스트만 안다”고 믿으면 에이전트 UI 혁명 통째로 날리는 이유

Published on

in

구글 A2UI: “AI는 텍스트만 안다”고 믿으면 에이전트 UI 혁명 통째로 날리는 이유
📅 2026.03.16 기준 / v0.8 Stable
IT/AI

구글 A2UI: “AI는 텍스트만 안다”고 믿으면
에이전트 UI 혁명 통째로 날리는 이유

2025년 12월 구글이 공개한 A2UI는 AI 에이전트가 텍스트가 아닌 선언적 JSON으로 UI 자체를 생성하는 오픈 프로토콜입니다. 이미 Google Opal, Gemini Enterprise, Flutter GenUI가 프로덕션에 적용 중이고, 한국어 심층 분석은 아직 거의 없습니다.

v0.8
현재 안정 버전
3+
프로덕션 배포 사례
Apache 2.0
오픈소스 라이선스
0줄
실행 코드 전송량



AI 에이전트가 UI를 말하는 시대가 왔다

AI 에이전트 하면 대부분 챗봇을 떠올립니다. 사람이 질문하면 AI가 텍스트로 답하는 구조입니다. 그런데 구글은 2025년 12월 15일, 이 구조 자체를 뒤집는 프로토콜을 공개했습니다. 바로 A2UI(Agent to User Interface)입니다. (출처: Google Developers Blog, 2025.12.15)

A2UI의 핵심 아이디어는 간단합니다. 에이전트가 텍스트 대신 UI 자체를 생성해서 전달합니다. 식당 예약을 예로 들면, 지금까지는 “날짜는요?”, “시간은요?”, “몇 명이요?”를 텍스트로 주고받아야 했습니다. A2UI를 쓰면 에이전트가 날짜 선택기·시간 선택기·인원 조절 버튼이 포함된 폼을 즉시 생성해 건네줍니다. 질문 없이 클릭 몇 번으로 끝납니다.

이것이 단순한 UI 편의 개선처럼 보이지만, 실상은 에이전트와 사람이 상호작용하는 패러다임 자체의 교체입니다. 텍스트 다중 턴(Turn) 방식은 구조화된 작업(데이터 입력, 승인 워크플로우 등)에서 심각한 생산성 저하를 일으켜왔습니다. A2UI는 그 병목을 제거합니다.

▲ 목차로 돌아가기

A2UI의 핵심 — 코드가 아니라 ‘데이터’를 보낸다

선언적 JSON이 전부다

A2UI가 전송하는 것은 HTML도 JavaScript도 아닙니다. 선언적 JSON 메시지입니다. 에이전트는 “Button이라는 컴포넌트를 렌더링해달라”는 설명을 JSON으로 보낼 뿐이고, 실제로 버튼을 그리는 것은 클라이언트 앱의 몫입니다. 예시는 다음과 같습니다. (출처: a2ui.org 공식 문서, v0.8 Stable 기준)

{
"surfaceUpdate": {
"surfaceId": "booking",
"components": [
{ "id": "title",  "component": { "Text": { "text": { "literalString": "예약하기" } } } },
{ "id": "dt",     "component": { "DateTimeInput": { "value": { "path": "/booking/date" }, "enableDate": true } } },
{ "id": "btn-lbl","component": { "Text": { "text": { "literalString": "확인" } } } },
{ "id": "btn",    "component": { "Button": { "child": "btn-lbl", "action": { "name": "confirm" } } } }
]
}
}

클라이언트는 이 JSON을 받아 자신이 보유한 컴포넌트 카탈로그에서 Button, DateTimeInput 등을 찾아 네이티브 위젯으로 렌더링합니다. 웹에서는 React 또는 Angular 컴포넌트로, 모바일에서는 Flutter 위젯으로, iOS에서는 SwiftUI 뷰로 각각 표현됩니다. 동일한 JSON 한 줄이 모든 플랫폼에서 작동합니다. 이것이 A2UI의 “프레임워크 불가지론(Framework-Agnostic)” 설계 원칙입니다.

💡 공식 changelog 분석 결과 — v0.8의 컴포넌트 목록에는 레이아웃(Card·Row·Column), 입력(TextField·Button·DatePicker·Slider·Select), 표시(Text·Image·Icon), 고급(Table·Chart)이 포함됩니다. 클라이언트는 여기에 Google Map·실시간 차트 같은 커스텀 컴포넌트를 직접 추가할 수도 있어, 표준 카탈로그를 초과하는 기능도 구현 가능합니다. (출처: github.com/google/A2UI 표준 카탈로그 JSON)

LLM이 이 JSON을 생성하기 쉽도록 구조도 설계되었습니다. 기존 UI 트리는 깊게 중첩된 트리 구조이지만, A2UI는 평면 리스트(Flat Adjacency List)를 씁니다. LLM은 복잡한 중첩 구조를 생성하면 오류 확률이 높아지지만, 평면 리스트는 훨씬 안정적으로 생성합니다. 또한 전체 UI를 한 번에 보내지 않고 변경된 부분만 점진적으로 업데이트할 수 있어 스트리밍 환경에서도 실시간 응답성이 유지됩니다.

▲ 목차로 돌아가기

보안에서 더 강한 쪽은 iframe이 아니었다

원격 에이전트 UI — 기존 방식의 숨겨진 위험

다중 에이전트 환경이 되면 반드시 마주치는 문제가 있습니다. 원격 서버에 있는 에이전트가 사용자 화면에 UI를 보내야 할 때 어떻게 해야 하느냐입니다. 기존의 표준적인 답은 HTML과 JavaScript를 iframe 안에서 실행하는 것이었습니다.

❌ iframe 방식의 3가지 구조적 문제

  • 무거움 — 외부 HTML/JS 전체를 로드하고 파싱·실행해야 합니다
  • 시각적 이질감 — iframe 내부는 호스트 앱의 디자인 시스템과 무관하게 렌더링됩니다
  • UI 인젝션 위험 — 원격지에서 실행 코드가 오는 구조 자체가 취약점입니다

A2UI는 이 세 문제를 근본적으로 다른 방식으로 차단합니다. 에이전트가 보내는 것이 실행 코드가 아니라 선언적 데이터이기 때문입니다. 클라이언트는 미리 신뢰할 수 있는 컴포넌트 목록(카탈로그)을 보유하고, 에이전트는 그 카탈로그에 있는 이름만 요청할 수 있습니다. “Button”이라고 요청하면 클라이언트가 자신의 Button 컴포넌트를 그립니다. 에이전트가 임의의 코드를 심을 방법이 없습니다. (출처: Google Developers Blog, A2UI 공식 소개, 2025.12.15)

비교 항목 iframe 방식 A2UI
전송 내용 HTML/JS (실행 코드) 선언적 JSON (데이터)
UI 인젝션 위험 높음 (샌드박싱 필수) 원천 차단
호스트 앱 스타일 일치 이질감 발생 네이티브 완벽 일치
멀티 에이전트 신뢰 경계 복잡한 관리 필요 카탈로그로 명확히 정의
크로스 플랫폼 웹 중심 웹·모바일·데스크톱

이 표가 말해주는 것은 단순합니다. “원격 에이전트에게 UI를 맡길 때 더 안전한 방법은 코드 실행을 허용하지 않는 것”입니다. A2UI의 설계가 보안에서 iframe 방식을 앞서는 이유입니다. 엔터프라이즈 환경에서 외부 파트너 에이전트(Cisco·SAP·Salesforce 등)와 연동할 때 이 차이가 결정적입니다.

▲ 목차로 돌아가기

MCP Apps와 A2UI — 경쟁이 아닌 조합

둘 다 2025년 말 동시에 등장한 이유

A2UI와 비슷한 시기에 등장한 표준이 하나 더 있습니다. MCP Apps입니다. MCP(Model Context Protocol)의 확장으로, 2026년 1월 26일 리눅스 재단 산하에서 안정 버전(SEP-1865)을 획득했습니다. (출처: sunpeak.ai, 2026.02.17) 한국 커뮤니티에서는 둘을 경쟁 관계로 보는 시선이 많은데, 이것이 오해입니다.

💡 공식 생태계 비교 문서를 교차 분석한 결과 — A2UI와 MCP Apps는 UI를 제어하는 주체가 다릅니다. MCP Apps는 개발자가 미리 만든 앱을 에이전트가 호출하는 방식이고, A2UI는 에이전트가 런타임에 직접 UI를 생성하는 방식입니다. “플러그인을 만든다”와 “에이전트가 즉석에서 화면을 그린다”는 근본적으로 다른 문제를 풀고 있습니다. (출처: a2ui.org 공식 에코시스템 비교 문서)

항목 MCP Apps A2UI
UI 제작자 개발자 (빌드 타임) AI 에이전트 (런타임)
렌더링 방식 샌드박스 iframe 네이티브 컴포넌트
적합한 사례 Figma·Slack 같은 외부 제품 연동 대화 맥락에 맞는 동적 UI
크로스 플랫폼 웹 중심 웹·모바일·데스크톱
멀티 에이전트 지원 복수 MCP 서버 A2A 신뢰 경계 완전 지원

실제로 공식 A2UI 로드맵에는 “MCP 서버가 HTML 대신 A2UI 블루프린트를 제공할 수 있도록 브릿지를 추가”하는 계획이 포함되어 있습니다. (출처: a2ui.org 에코시스템 비교 문서) 이는 두 표준이 공존하며 서로를 보완할 것임을 공식적으로 인정한 것입니다. 이미 AG UI(CopilotKit 팀이 개발한 전송 계층 프로토콜)는 A2UI와 0일 차 호환성을 선언했습니다.

따라서 “A2UI만 쓰면 된다” 혹은 “MCP Apps면 충분하다”는 생각은 둘 다 맞지 않습니다. 외부 파트너 툴을 연동할 때는 MCP Apps, 에이전트가 대화 맥락에 따라 동적으로 UI를 바꿔야 할 때는 A2UI를 택하거나, 둘을 함께 운영하는 것이 현실적입니다.

▲ 목차로 돌아가기

이미 실서비스에 적용된 3가지 사례

프로덕션에서 작동 중인 증거

A2UI는 “미래의 표준 후보”가 아닙니다. 공식 발표 시점(2025.12.15)에 이미 세 개의 Google 제품에서 프로덕션으로 운영 중이었습니다. (출처: Google Developers Blog, 2025.12.15) 구체적으로 어떻게 쓰이는지 살펴봅니다.

🟦 Google Opal — 자연어로 AI 미니앱 제작

수십만 명이 사용하는 Google Opal은 “식당 예약 봇 만들어줘”라는 자연어 한 문장으로 동적 UI가 포함된 AI 앱을 생성합니다. A2UI는 Opal의 핵심 UI 생성 레이어로 동작하고 있습니다. Opal 팀 수석 엔지니어 Dimitri Glazkov는 “A2UI의 선언적 특성과 보안 설계 덕분에 빠르고 안전하게 실험할 수 있었다”고 밝혔습니다. (출처: Google Developers Blog, 2025.12.15)

🟦 Gemini Enterprise — 기업 워크플로우 자동화

기업용 Gemini 에이전트는 A2UI를 통해 데이터 입력 폼·승인 대시보드를 자동 생성합니다. 개발자가 모든 경우의 수를 미리 만들 필요 없이, 에이전트가 대화 흐름에 따라 필요한 UI를 즉석에서 구성합니다. Gemini Enterprise PM Fred Jabbour는 “A2UI가 워크플로우 자동화를 획기적으로 가속화했다”고 공개 언급했습니다. (출처: Google Developers Blog, 2025.12.15)

🟦 Flutter GenUI SDK — 크로스플랫폼 네이티브 UI

Flutter의 GenUI SDK는 A2UI를 원격 서버 에이전트와 앱 사이의 UI 선언 포맷으로 채택했습니다. 동일한 에이전트 JSON 응답이 iOS·Android·웹에서 각 플랫폼의 네이티브 위젯으로 자동 렌더링됩니다. Flutter 엔지니어링 디렉터 Vijay Menon은 “모든 플랫폼에서 고품질 네이티브 경험을 보장하는 데 A2UI가 완벽하게 맞았다”고 밝혔습니다. (출처: Google Developers Blog, 2025.12.15) 이 사례는 직접 검증 가능합니다: docs.flutter.dev/ai/genui에서 GenUI SDK 문서와 샘플 코드를 확인할 수 있습니다.

세 사례 모두 공통점이 있습니다. “개발자가 모든 UI를 미리 만들지 않아도 된다”는 것입니다. 에이전트가 대화 맥락을 이해하고 그 순간 필요한 UI를 직접 구성하는 덕분에, 개발 리소스가 UI 코드 작성보다 핵심 로직에 집중됩니다.

▲ 목차로 돌아가기

v0.8 안정 → v0.9 드래프트, 뭐가 달라지나

버전 숫자가 말해주는 성숙도의 의미

A2UI는 공개 시점에 이미 v0.8이었습니다. 보통 오픈소스 프로젝트가 처음부터 v0.1을 시작하는 것과 다릅니다. 구글은 내부에서 여러 차례의 실전 검증과 breaking change를 거친 뒤 외부 공개를 진행했기 때문입니다. v0.8은 “프로덕션 배포 가능”을 의미하고, v0.9는 현재 드래프트 상태로 구조를 더 단순화하는 방향으로 진화 중입니다. (출처: a2ui.org 공식 문서, 2026년 3월 기준)

변경 항목 v0.8 (Stable) v0.9 (Draft)
서피스 시작 메시지 beginRendering createSurface
컴포넌트 구조 중첩 객체 방식 플랫 문자열 방식
버전 필드 없음 “version”: “v0.9” 필수
카탈로그 선언 암묵적 catalogId URL로 명시

💡 공식 changelog와 실사용 비교를 교차 분석한 결과 — v0.9의 가장 중요한 변화는 createSurface 메시지에 catalogId를 URL로 명시하는 것입니다. 이는 에이전트가 “어떤 카탈로그 기준으로 UI를 그려야 하는지”를 동적으로 협상할 수 있게 합니다. 즉 v0.9가 완성되면 서로 다른 플랫폼의 에이전트와 클라이언트가 카탈로그 버전을 자동으로 조율해서 하위 호환성 문제를 줄일 수 있습니다. (출처: a2ui.org 공식 문서, v0.9 Draft)

지금 당장 A2UI를 도입하려 한다면 v0.8을 기준으로 개발하는 것이 맞습니다. v0.9는 드래프트이기 때문에 breaking change가 발생할 수 있고, 공식 reference 렌더러(Lit·Angular·Flutter)도 현재 v0.8 기준으로 제공됩니다. v0.9 변화 방향을 참고해서 설계는 유연하게 하되, 프로덕션 배포는 v0.8로 진행하는 것이 안전합니다.

▲ 목차로 돌아가기

5분 안에 A2UI 직접 실행해보기

Gemini API 키 하나면 충분하다

구글은 공식 GitHub 저장소에 식당 예약 찾기 샘플(restaurant_finder)을 포함해 즉시 실행 가능한 데모를 제공합니다. 로컬 환경에 Node.js와 Python이 설치되어 있고 Gemini API 키(ai.google.dev에서 무료 발급)가 있으면 5분 안에 직접 동작을 확인할 수 있습니다. (출처: a2ui.org 공식 Quickstart 문서)

# 1. 저장소 클론
git clone https://github.com/google/A2UI.git
# 2. API 키 설정
export GEMINI_API_KEY="your_gemini_api_key"
# 3. 백엔드 에이전트 실행 (터미널 1)
cd A2UI/samples/agent/adk/restaurant_finder
uv run .
# 4. 프론트엔드 실행 (터미널 2)
cd A2UI/samples/client/lit/shell
npm install && npm run dev
# 5. 브라우저에서 확인: http://localhost:5173

실행하면 “근처 이탈리안 레스토랑 예약해줘”라고 입력했을 때, 에이전트가 텍스트 대신 날짜·시간·인원수가 포함된 예약 폼을 즉시 생성해서 화면에 렌더링하는 장면을 볼 수 있습니다. 이것이 A2UI가 작동하는 실제 방식입니다. Flutter에서 확인하고 싶다면 docs.flutter.dev/ai/genui의 GenUI SDK 시작 가이드를 따르면 됩니다.

Google Chat용 A2UI 연동을 원한다면 Google 공식 퀵스타트(developers.google.com/workspace/add-ons/chat/quickstart-a2ui-agent)를 참고합니다. ADK, Vertex AI Agent Engine, Apps Script가 모두 연동되는 방법이 단계별로 안내되어 있으며, 2026년 3월 2일 기준으로 문서가 최신 상태입니다. (출처: Google Workspace Developers 공식 문서, 2026.03.02)

▲ 목차로 돌아가기

Q&A — 실사용자가 가장 많이 묻는 것

Q1. A2UI는 ChatGPT나 Claude에서도 쓸 수 있나요?

현재(2026.03.16 기준) A2UI는 Google 생태계(Google Chat, Opal, Gemini Enterprise, Flutter)와 CopilotKit의 AG UI 환경에서 공식 지원됩니다. ChatGPT·Claude 같은 타사 AI 호스트에서의 공식 통합은 아직 없지만, Apache 2.0 오픈소스로 공개되어 있어 커뮤니티 기여를 통한 확장이 가능합니다. OpenAI 생태계에서는 ChatKit이 유사한 역할을 담당합니다.

Q2. MCP를 이미 쓰고 있다면 A2UI로 전환해야 하나요?

전환이 아닌 추가 도입이 맞습니다. MCP는 AI 에이전트가 외부 도구·데이터에 접근하는 프로토콜이고, A2UI는 에이전트가 UI를 생성하는 포맷입니다. 역할이 다르기 때문에 경쟁이 아닙니다. 공식 로드맵에는 “MCP 서버가 HTML 대신 A2UI 블루프린트를 제공하는 브릿지” 추가 계획도 포함되어 있습니다. (출처: a2ui.org 에코시스템 문서)

Q3. v0.8과 v0.9 중 어느 버전으로 시작해야 하나요?

지금 프로젝트를 시작한다면 v0.8을 기준으로 개발하는 것을 권장합니다. v0.8은 Stable(안정) 버전으로 reference 렌더러(Lit·Angular·Flutter)가 모두 제공됩니다. v0.9는 Draft 상태로 breaking change 가능성이 있습니다. 다만 v0.9의 catalogId 기반 카탈로그 협상 방향을 고려해 초기 설계부터 카탈로그를 명시적으로 관리하면 나중에 마이그레이션이 수월합니다.

Q4. A2UI 에이전트가 카탈로그에 없는 컴포넌트를 요청하면 어떻게 됩니까?

클라이언트의 카탈로그에 없는 컴포넌트 요청은 렌더링되지 않습니다. 이것이 보안 설계의 핵심입니다. 에이전트가 임의로 새로운 컴포넌트를 만들어 보낼 수 없습니다. 개발자가 카탈로그에 등록한 컴포넌트만 화면에 나타나므로, UI 인젝션이나 예상치 못한 UI가 렌더링되는 상황을 원천 차단합니다. 커스텀 컴포넌트를 추가하려면 개발자가 명시적으로 카탈로그에 등록해야 합니다.

Q5. A2UI를 사용할 때 Gemini만 지원됩니까?

아닙니다. A2UI는 LLM에 의존하지 않는 프레임워크 독립적 프로토콜입니다. 공식 샘플은 Gemini API를 사용하지만, JSON을 생성할 수 있는 어떤 LLM도 A2UI 페이로드를 만들 수 있습니다. 이미 Reddit 개발자 커뮤니티에서는 GPT-4o, Claude를 A2UI 에이전트 백엔드로 사용하는 실험이 진행 중입니다. 다만 공식 ADK(Agent Development Kit)를 함께 쓰면 Gemini와의 통합이 가장 매끄럽습니다.

▲ 목차로 돌아가기

마치며

A2UI가 흥미로운 이유는 기술적 완성도가 아니라 문제 설정 방식에 있습니다. 기존의 AI UI 논의가 대부분 “LLM이 생성한 텍스트를 어떻게 예쁘게 보여줄까”에 집중했다면, A2UI는 방향을 완전히 바꿨습니다. “에이전트가 직접 화면을 구성한다면 어떤 포맷이 안전하고 범용적인가”라는 질문에서 출발했습니다.

결과는 선언적 JSON, 컴포넌트 카탈로그, 평면 리스트 구조라는 세 가지 선택입니다. 각각이 보안·생성 안정성·크로스 플랫폼 문제를 해결합니다. 이미 수십만 명이 쓰는 Google Opal과 기업 에이전트, Flutter 앱에서 프로덕션 검증을 마쳤습니다.

물론 A2UI가 완성된 표준은 아닙니다. v0.9는 아직 드래프트이고, React·SwiftUI·Jetpack Compose용 공식 렌더러는 커뮤니티 기여를 기다리고 있습니다. MCP와의 브릿지 통합도 로드맵 단계입니다. 하지만 “AI가 텍스트만 생성한다”는 전제가 빠르게 무너지고 있는 지금, A2UI가 그 이후를 어떻게 설계할지를 제안하고 있다는 사실 자체가 중요합니다.

▲ 목차로 돌아가기

📚 본 포스팅 참고 자료

  1. Google Developers Blog — Introducing A2UI: An open project for agent-driven interfaces (2025.12.15)
    https://developers.googleblog.com/introducing-a2ui-an-open-project-for-agent-driven-interfaces/
  2. A2UI 공식 문서 — What is A2UI? / v0.8 Stable 기준
    https://a2ui.org/introduction/what-is-a2ui/
  3. A2UI 공식 에코시스템 비교 — A2UI vs MCP Apps vs AG UI
    https://a2ui.org/introduction/agent-ui-ecosystem/
  4. Google Workspace 공식 개발자 문서 — Agent2UI(A2UI) 퀵스타트 (2026.03.02)
    https://developers.google.com/workspace/add-ons/chat/quickstart-a2ui-agent
  5. Flutter GenUI SDK 공식 문서
    https://docs.flutter.dev/ai/genui
  6. A2UI GitHub 공식 저장소 (Apache 2.0)
    https://github.com/google/A2UI

본 포스팅은 2026년 3월 16일 기준 / A2UI v0.8 Stable 기준으로 작성되었습니다. 본 포스팅 작성 이후 서비스 정책·UI·기능이 변경될 수 있습니다. 공식 자료는 반드시 a2ui.orgdevelopers.google.com에서 직접 확인하시기 바랍니다.

댓글 남기기


최신 글


아이테크 어른경제에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기