Skip to content
leeyc blog Search
← Back to blog

A2UI & AGUI

2025년 12월 기준 최신 정보를 반영한 에이전트 UI 기술 비교 가이드입니다.


1. 개요

AI 에이전트가 텍스트 응답을 넘어 풍부한 UI를 직접 생성하고 제어해야 하는 시대가 되었습니다.
기존의 정적 인터페이스는 에이전트의 동적인 특성을 따라갈 수 없었고, 여기서 새로운 세 가지 기술이 탄생했습니다.

기술핵심 역할
SDUI서버가 UI 레이아웃을 결정하고 클라이언트에 전달 (전통적 패턴)
A2UIAI 에이전트가 선언형 JSON으로 UI 컴포넌트를 기술하는 사양(Spec)
AG-UI에이전트 백엔드 ↔ 프론트엔드를 연결하는 실시간 양방향 통신 프로토콜

2. A2UI (Agent-to-UI)

2.1 개념

A2UI는 Google이 2025년 12월 오픈소스로 공개한 에이전트 생성 UI 표준 사양(Specification) 입니다.
AI 에이전트가 텍스트 대신 선언형 JSON 형식으로 UI 컴포넌트를 기술하면, 클라이언트가 자신의 네이티브 컴포넌트로 렌더링합니다.

“에이전트는 HTML이나 JavaScript를 출력하지 않습니다. 대신 UI의 의도를 기술하는 A2UI 응답(JSON payload)을 출력합니다.” — Google A2UI 공식 문서

2.2 핵심 설계 원칙

🔒 보안 우선 (Security First)

🤖 LLM 친화적 구조 (LLM-Friendly)

🌐 프레임워크 독립적 (Framework-Agnostic)

2.3 동작 흐름

[AI 에이전트 (Gemini / 기타 LLM)]
        ↓  JSON 페이로드 생성
[A2UI Response (JSON)]
  - 컴포넌트 목록: type, properties, data model
        ↓  전송 (A2A Protocol / AG-UI / REST API)
[클라이언트 A2UI 렌더러]
  - JSON 파싱 및 컴포넌트 권한 검증
  - 카탈로그 내 컴포넌트 확인
  - 추상 컴포넌트 → 네이티브 구현으로 변환

[사용자 화면에 네이티브 UI 렌더링]

2.4 A2UI JSON 예시

{
  "components": [
    {
      "id": "reservation-form",
      "type": "card",
      "children": ["date-picker", "time-selector", "submit-btn"]
    },
    {
      "id": "date-picker",
      "type": "date-field",
      "label": "예약 날짜",
      "required": true
    },
    {
      "id": "time-selector",
      "type": "select",
      "label": "예약 시간",
      "options": ["17:00", "17:30", "18:00", "20:30", "21:00"]
    },
    {
      "id": "submit-btn",
      "type": "button",
      "label": "예약하기",
      "action": "submit"
    }
  ]
}

클라이언트는 type: "date-field"를 Material Design Input, Chakra UI 필드 등 자신의 네이티브 컴포넌트로 매핑합니다.

2.5 지원 플랫폼 및 생태계

항목내용
라이선스Apache 2.0
제작사Google (CopilotKit 커뮤니티 협력)
현재 버전v0.8 (Public Preview), v0.9 (Draft)
클라이언트 렌더러Angular, Flutter, Lit, Web Components, Markdown
전송 프로토콜A2A Protocol, AG-UI, REST API
GitHubgithub.com/google/A2UI

2.6 활용 사례


3. AG-UI (Agent-User Interaction Protocol)

3.1 개념

AG-UI는 CopilotKit이 2025년 5월 공개한 에이전트 백엔드와 프론트엔드 사이의 범용 양방향 통신 프로토콜입니다.
A2UI가 UI를 _어떻게 기술하는가_의 사양이라면, AG-UI는 에이전트와 UI 사이의 _실시간 통신을 어떻게 처리하는가_의 프로토콜입니다.

“AG-UI는 에이전트를 백그라운드 프로세스에서 진정한 협업자로 변환하는 연결 레이어입니다.” — AG-UI 공식 문서

3.2 핵심 특징

⚡ 이벤트 기반 실시간 스트리밍

🔄 양방향 상태 동기화 (Shared State)

🎛️ Human-in-the-Loop 지원

3.3 주요 이벤트 타입

이벤트 타입설명
RUN_STARTED에이전트가 작업 시작
RUN_FINISHED에이전트 작업 완료
TEXT_MESSAGE_START새 메시지 시작
TEXT_MESSAGE_CONTENT스트리밍 텍스트 내용
TOOL_CALL_START외부 API/함수 호출 시작
TOOL_CALL_RESULT도구 호출 결과
STATE_DELTA상태 부분 업데이트 (diff)

3.4 동작 흐름

[프론트엔드 (React 등)]
        ↓  HTTP POST (사용자 프롬프트 + 현재 상태)
[AG-UI 엔드포인트]
        ↓  SSE 이벤트 스트림
[에이전트 백엔드 (LangGraph / CrewAI / Google ADK 등)]
        ↓  JSON 이벤트 스트림 반환
        ↓  TEXT_MESSAGE_CONTENT, STATE_DELTA, TOOL_CALL_START...
[프론트엔드 — 실시간 렌더링]

3.5 지원 생태계

항목내용
제작사CopilotKit
라이선스오픈소스
SDKTypeScript, Python, Kotlin, Go, Java, Rust
1st-party 통합LangGraph, CrewAI, Mastra, PydanticAI, Agno, LlamaIndex
플랫폼 지원Microsoft Agent Framework, Google ADK, AWS Strands Agents
npm 다운로드@ag-ui/core — 주간 178,751회 (2025.12 기준)
문서docs.ag-ui.com

3.6 코드 예시 (React)

import { useAGUI } from '@copilotkit/react'

const MyAgentComponent = () => {
  const { agent, ui } = useAGUI()

  return (
    <div>
      {/* 에이전트 메시지 실시간 스트리밍 */}
      {agent.messages.map(msg => (
        <div key={msg.id}>{msg.content}</div>
      ))}
      
      {/* 에이전트가 생성한 UI (A2UI 컴포넌트) */}
      {ui.components && <A2UIRenderer components={ui.components} />}
    </div>
  )
}

4. A2UI + AG-UI 함께 사용하기

A2UI와 AG-UI는 경쟁 기술이 아니라 상호 보완적 기술입니다.

[AI 에이전트]

    │  1. A2UI JSON 생성 (UI 컴포넌트 기술)

[A2UI Response (JSON Payload)]

    │  2. AG-UI가 에이전트 → 프론트엔드로 전송

[AG-UI 이벤트 스트림]

    │  3. 프론트엔드가 A2UI를 네이티브 컴포넌트로 렌더링

[사용자 화면 — 네이티브 UI]

    │  4. 사용자 인터랙션이 AG-UI를 통해 에이전트로 전달
    └─────────────────────────────────→ [에이전트]
역할담당 기술
UI가 어떻게 생겼는가 (What)A2UI
UI가 어떻게 전달되는가 (How)AG-UI

실전 예시 스택:
Google ADK (에이전트) + A2UI (UI 생성 포맷) + AG-UI (통신) + CopilotKit (프론트엔드 렌더링)


5. SDUI (Server-Driven UI)

5.1 개념

SDUI는 2010년대부터 Airbnb, Netflix, Uber 등이 도입한 서버가 UI 레이아웃을 결정하고 클라이언트에 전달하는 아키텍처 패턴입니다.
앱 스토어 업데이트 없이 UI를 변경하고, 다양한 플랫폼에서 일관된 UI를 유지하기 위해 개발되었습니다.

5.2 핵심 특징

5.3 SDUI 구조

[백엔드 서버]
  - 비즈니스 로직
  - UI 레이아웃 결정
  - JSON 스키마 반환
        ↓  JSON (컴포넌트 트리)
[클라이언트 앱]
  - 미리 등록된 컴포넌트 라이브러리
  - JSON → 네이티브 컴포넌트 매핑
  - 렌더링

5.4 도입 사례

기업활용 방식
AirbnbMagma 시스템 — 모바일 앱 스토어 출시 없이 레이아웃 변경, A/B 테스트
Netflix홈화면 레이아웃을 서버에서 동적 제어, 신규 콘텐츠 프로모션
Uber지역별/이벤트별 UI 변경
Flipkart대규모 세일 이벤트(Big Billion Days) 시 앱 배포 없이 UI 변경

6. A2UI vs AG-UI vs SDUI 비교

6.1 핵심 차이점 요약

구분SDUIA2UIAG-UI
정의서버 주도 UI 아키텍처 패턴에이전트 생성 UI 선언형 사양에이전트-UI 실시간 통신 프로토콜
등장 배경모바일 앱 배포 주기 단축AI 에이전트의 안전한 UI 생성에이전트와 프론트엔드 표준 연결
UI 생성 주체개발자가 작성한 서버 로직LLM (AI 에이전트)해당 없음 (전송 계층)
UI 기술 방식JSON 컴포넌트 트리선언형 JSON (LLM 친화적)이벤트 스트림 (JSON)
통신 방식단방향 (서버 → 클라이언트)단방향 (에이전트 → 클라이언트)양방향 실시간 스트리밍
보안 모델서버 신뢰 기반컴포넌트 카탈로그 기반 화이트리스트경계 보안 (가드레일, 감사 로그)
실시간성요청-응답증분 스트리밍 지원이벤트 기반 실시간
상태 동기화없음 (일반적으로)없음양방향 상태 동기화
주요 사용처모바일 앱 배포 최적화AI 에이전트 UI 생성AI 앱 에이전트 통신
프레임워크플랫폼 종속적프레임워크 독립적프레임워크 독립적

6.2 UI 생성 방식 비교

SDUI
  개발자 → [서버 로직] → JSON 스키마 → [클라이언트] → 렌더링
  (미리 결정된 레이아웃, 예측 가능)

A2UI
  LLM → [A2UI JSON] → [클라이언트 렌더러] → 네이티브 UI
  (대화 맥락에 따라 동적 생성, 예측 불가)

AG-UI (독립적 사용 시)
  에이전트 백엔드 ←→ [이벤트 스트림] ←→ 프론트엔드
  (텍스트/도구 호출/상태 전달에 집중)

6.3 보안 모델 비교

구분SDUIA2UIAG-UI
신뢰 경계서버 = 신뢰됨컴포넌트 카탈로그 = 신뢰됨, 에이전트 = 제한됨경계에서 가드레일 적용
코드 실행클라이언트 측 없음실행 코드 전혀 없음 (순수 데이터)이벤트 기반, 코드 실행 없음
UI 인젝션낮은 위험명시적으로 방지프롬프트 인젝션 방지 내장

6.4 진화 관점에서의 관계

SDUI (2010~)
  └─ 서버가 UI를 결정하는 패턴 확립
  └─ 한계: 사람이 로직을 작성해야 함, AI 친화적이지 않음

          ↓ AI 에이전트 시대 도래

A2UI (2025~)
  └─ SDUI의 진화: LLM이 UI를 동적 생성
  └─ LLM 친화적 포맷, 보안 강화, 크로스플랫폼 네이티브

AG-UI (2025~)
  └─ A2UI를 포함한 모든 에이전트 통신을 표준화
  └─ 에이전트 ↔ UI의 실시간 양방향 연결 레이어

7. 언제 무엇을 선택할까?

✅ SDUI를 선택하는 경우

✅ A2UI를 선택하는 경우

✅ AG-UI를 선택하는 경우

✅ A2UI + AG-UI를 함께 사용하는 경우


8. 참고 자료



← Previous Agent Harness Next → LangChain