◆ PUBLIC SDK

첫 번째 Dash
만들어보세요

Dash는 위젯이 아닙니다. Dynamic Space 위에서 자율적으로 사고하고, 판단하고, 행동하는 AI 모듈입니다. 5개의 레이어로 구성된 선언적 스키마 하나로 나만의 Dash를 정의할 수 있습니다.

💡 Dash란 무엇인가?

Dash는 The Universe의 핵심 구성 단위입니다. 각 Dash는 자체적인 AI 두뇌(Skill Layer)를 가지며, 사용자의 의도를 이해하고, 다른 Dash와 협업하며, 상황에 맞게 스스로 진화합니다. 기존의 정적 위젯과는 근본적으로 다른 — 자율 AI 에이전트입니다.

🛠
선언적 정의
JSON 스키마 하나로 Dash의 모든 동작을 선언
🤖
자율 AI
Skill Layer가 LLM 기반 추론과 행동을 수행
🔌
프로토콜 통신
Pub/Sub 토픽으로 Dash 간 실시간 협업

Dash 5-Layer 구조

모든 Dash는 5개의 독립적인 레이어로 구성됩니다. 각 레이어는 관심사를 분리하여 유연한 조합과 독립적 진화를 가능하게 합니다.

L1 Meta ID, 버전, 카테고리, 권한 — Dash의 신원 정보
L2 Trigger 활성화 조건 (시간, 위치, 센서, 의도, 이벤트)
L3 Skin UI 렌더링 — 카드, 오버레이, 풀스크린 모드
L4 Skill AI 두뇌 — LLM 추론, API 호출, 데이터 처리
L5 Protocol Dash 간 통신 — Pub/Sub 토픽, 메시지 계약

전체 스키마 명세는 JSON Schema와 템플릿 문서를 참고하세요.

DASH-schema-v1.json
DASH-template.html

API 레퍼런스

Dash 개발에 필요한 핵심 인터페이스들입니다. 모든 API는 Kotlin으로 작성되며 코루틴 기반 비동기 처리를 지원합니다.

DashSkill Interface

Kotlin
interface DashSkill {

    /** Dash가 로드될 때 1회 호출 */
    suspend fun onInit(ctx: DashSkillContext)

    /** 트리거 조건 충족 시 실행되는 핵심 로직 */
    suspend fun onInvoke(
        intent: DashIntent,
        ctx: DashSkillContext
    ): DashResult

    /** Dash 언로드 시 정리 작업 */
    suspend fun onDestroy()
}

DashSkin Interface

Kotlin
interface DashSkin {

    /** UI 모드: CARD, OVERLAY, FULLSCREEN */
    val mode: SkinMode

    /** Compose UI를 렌더링 */
    @Composable
    fun Render(
        state: DashState,
        onAction: (DashAction) -> Unit
    )
}

DashSkillContext (Sandbox)

Kotlin
class DashSkillContext(
    val dashId: String,
    val permissions: Set<Permission>,
    val storage: DashStorage,
    val network: SandboxedHttpClient,
    val protocol: ProtocolBus
) {
    /** 다른 Dash에게 메시지 발행 */
    suspend fun publish(topic: String, payload: Any)

    /** 특정 토픽 구독 */
    fun subscribe(topic: String): Flow<ProtocolMessage>

    /** LLM 추론 요청 */
    suspend fun infer(prompt: String): LLMResponse
}

Protocol Topic Validation

프로토콜 토픽은 계층적 네이밍 규칙을 따릅니다. 모든 토픽은 dash.{category}.{action} 형식이며, Orchestrator가 유효성을 검증합니다.

Kotlin
// 유효한 토픽 예시
val weatherTopic = "dash.weather.update"
val calendarTopic = "dash.calendar.event.created"

// 토픽 검증
ProtocolValidator.validate(topic) // throws InvalidTopicException

DASH.md 표준

DASH.md는 Dash의 능력을 자연어로 기술하는 표준 문서입니다. OpenClaw 연구에서 영감을 받아 설계되었으며, Orchestrator가 이 문서를 읽고 Dash의 역할과 한계를 이해합니다.

📖 왜 자연어인가?

LLM 기반 Orchestrator는 자연어를 가장 잘 이해합니다. DASH.md는 Dash가 "무엇을 할 수 있는지", "어떤 상황에서 호출되어야 하는지", "어떤 제약이 있는지"를 사람과 AI 모두가 이해할 수 있는 형식으로 기술합니다.

DASH.md Format
# Weather Dash

## Identity
실시간 날씨 정보를 제공하는 Dash입니다.
위치 기반 예보, 기상 특보, 자외선 지수를 지원합니다.

## Capabilities
- 현재 날씨 조회 (온도, 습도, 체감온도)
- 시간별/주간 예보 제공
- 기상 특보 알림 발행

## Triggers
- 사용자가 날씨를 물어볼 때
- 매일 아침 7시 (일일 브리핑)
- 기상 특보 발령 시

## Protocols
- publish: dash.weather.update
- subscribe: dash.location.changed

## Constraints
- 네트워크 접근 필요 (Tier 1)
- API 호출 제한: 60회/분

.dpk 패키지 가이드

.dpk(Dash Package)는 Dash를 배포하기 위한 표준 패키지 포맷입니다. ZIP 기반 아카이브에 서명과 격리 정책이 포함됩니다.

패키지 구조

.dpk 내부 구조
weather-dash.dpk
├── manifest.json       # 메타데이터 + 서명 해시
├── DASH.md              # 자연어 능력 기술
├── dash-schema.json    # 5-Layer 선언
├── skill/              # Skill Layer 구현
│   └── WeatherSkill.kt
├── skin/               # Skin Layer 리소스
│   └── WeatherSkin.kt
└── signature.ed25519   # EdDSA 서명

보안 모델

요소설명
EdDSA 서명Ed25519 기반 패키지 무결성 및 개발자 인증
ClassLoader 격리각 Dash는 독립된 ClassLoader에서 실행, 상호 간섭 불가
4-Tier 권한접근 수준에 따른 세분화된 권한 관리

4-Tier 권한 모델

T0
Sandboxed
로컬 연산만 허용
T1
Network
허용된 API 접근
T2
System
센서 + 알림 접근
T3
Privileged
시스템 수준 통합
DPK-FORMAT.html 전체 명세

샘플 Dash

Weather Dash 예제를 통해 5-Layer 구조가 실제로 어떻게 동작하는지 확인하세요.

🅞 Weather Dash

실시간 날씨 정보를 제공하는 기본 Dash 예제입니다. 위치 기반 트리거, 카드형 UI, OpenWeatherMap API 연동, 프로토콜 발행까지 — Dash의 전체 라이프사이클을 보여줍니다.

Weather Dash Schema (요약)
{
  "meta": {
    "id": "com.universe.weather",
    "version": "1.0.0",
    "tier": 1
  },
  "trigger": {
    "schedule": "0 7 * * *",
    "intent": ["weather", "forecast"],
    "event": "dash.location.changed"
  },
  "skin": {
    "mode": "card",
    "designSystem": "universe"
  },
  "skill": {
    "entry": "skill/WeatherSkill.kt",
    "llm": true
  },
  "protocol": {
    "publish": ["dash.weather.update"],
    "subscribe": ["dash.location.changed"]
  }
}
Weather Dash 전체 가이드

디자인 시스템

Dash의 Skin Layer는 3가지 디자인 시스템 중 하나를 선택하여 렌더링됩니다. 각 시스템은 플랫폼과 사용자 환경에 최적화되어 있습니다.

Universe Design
Cosmic 테마 기반 The Universe 자체 디자인 시스템. 글래스모피즘, 네뷸라 그라데이션, 다크 퍼스트.
📱
Samsung OneUI
Galaxy 디바이스에 최적화된 OneUI 가이드라인. 한 손 조작, 대형 헤더, 부드러운 애니메이션.
Apple HIG
iOS/macOS Human Interface Guidelines 준수. SF Symbols, 네이티브 컨트롤, 접근성 우선.
🎨 Cosmic Design for Dash

Dash 개발자를 위한 Cosmic Design 가이드: 글래스 카드, 네뷸라 배경, 그라데이션 텍스트, 미세한 글로우 효과. designSystem: "universe"를 선언하면 자동으로 Cosmic 토큰이 주입됩니다.

Vibe Coding

코드를 작성하지 않고도 Dash를 만들 수 있습니다. 자연어로 원하는 Dash를 설명하면 AI가 5-Layer 스키마를 자동 생성합니다.

✨ 자연어로 Dash를 만드세요

"매일 아침 오늘의 날씨와 일정을 요약해서 카드로 보여주는 Dash를 만들어줘"

동작 원리

단계프로세스
1. 의도 해석자연어 입력에서 트리거, UI 모드, 필요 API를 추출
2. 스키마 생성5-Layer JSON 스키마를 자동 생성하고 검증
3. Skill 코드 생성LLM이 Kotlin Skill 구현 코드를 생성
4. DASH.md 작성자연어 능력 기술서를 자동 생성
5. 패키징.dpk로 패키징하여 바로 배포 가능

Vibe Coding은 프로토타이핑에 최적화되어 있습니다. 생성된 코드를 직접 수정하여 고도화할 수 있습니다.

Dash Store

만든 Dash를 Dash Store에 출시하고 수익을 창출하세요. Smart Split 모델로 공정한 수익 분배를 보장합니다.

출시 프로세스

단계내용
1. 빌드.dpk 패키지 빌드 및 EdDSA 서명
2. 검증자동화된 보안 검사, 권한 감사, 성능 테스트
3. 심사AI 기반 1차 심사 + 인간 리뷰 (Tier 2 이상)
4. 출시Dash Store 등록 및 검색 인덱싱

Smart Split 수익 분배

💰 Smart Split

Smart Split은 Dash의 실제 사용량과 품질에 기반한 동적 수익 분배 모델입니다. 단순 다운로드 수가 아니라, 활성 사용 시간, 사용자 만족도, 생태계 기여도를 종합적으로 평가하여 개발자에게 공정한 보상을 제공합니다.

지표설명비중
활성 사용일일/주간 활성 사용 세션 수40%
만족도사용자 평점 및 유지율30%
생태계 기여다른 Dash와의 프로토콜 연동 빈도20%
품질충돌률, 응답 시간, 리소스 효율10%