---
title: "Aslan Browser: AI 에이전트용 macOS 네이티브 브라우저 오픈소스 공개"
published: 2026-02-20T23:31:59.000Z
canonical: https://jeff.news/article/1032
---
# Aslan Browser: AI 에이전트용 macOS 네이티브 브라우저 오픈소스 공개

WKWebView 기반 macOS 네이티브 브라우저로, 접근성 트리를 활용해 DOM 대비 10~100배 적은 토큰으로 페이지를 표현하며 Puppeteer 대비 전반적으로 수배 빠른 성능을 보여줌

## 왜 만들었나

- Puppeteer, Playwright, Selenium 등 기존 브라우저 자동화 도구는 AI 에이전트를 염두에 두고 설계되지 않았음 — Chrome 전체를 띄우고 전체 DOM을 넘겨주는 방식이라 토큰 낭비가 심함
- Aslan은 macOS 내장 WKWebView를 감싸서 **접근성 트리(Accessibility Tree)**를 기본 페이지 표현으로 제공함 → 같은 페이지를 raw DOM 대비 **10~100배 적은 토큰**으로 전달 가능

## 성능 비교

- JS eval 왕복: ~0.5ms (Puppeteer 2~5ms)
- 스크린샷: ~15ms (Puppeteer 50~150ms)
- 탭당 메모리: ~40MB (Puppeteer 80~150MB)
- 콜드 스타트: 500ms 미만 (Puppeteer 2~5초)
- 500MB짜리 Chrome 다운로드가 필요 없음

## 아키텍처

- **렌더링**: WKWebView (macOS 네이티브, Chrome 의존성 없음)
- **서버**: SwiftNIO + Unix 소켓 — TCP 대비 약 30% 빠른 로컬 IPC, 포트 충돌 없음
- **프로토콜**: NDJSON JSON-RPC 2.0 — 언어 무관하게 클라이언트 구현 가능
- **페이지 표현**: 접근성 트리에서 인터랙티브 요소만 추출, 각 요소에 `@eN` 레퍼런스 부여 → `click("@e3")` 같은 방식으로 조작

> [!TIP]
> Python SDK는 외부 의존성 제로(stdlib만 사용: socket, json, asyncio, base64)로, 300줄 미만의 코드로 전체 클라이언트가 구현되어 있음

## 주요 기능

- **Skill 시스템**: AI 에이전트에게 브라우저 사용법을 가르치는 구조화된 명령 세트 — `SKILL.md`, `SDK_REFERENCE.md`, 사이트별 지식 파일 등으로 구성됨
- **Learn 모드**: 사용자가 직접 브라우저에서 작업을 시연하면 클릭·입력·내비게이션을 기록해 플레이북으로 자동 변환함
- **세션 격리**: 에이전트별로 탭을 분리할 수 있고, 배치 작업(batch)으로 여러 요청을 한 번에 처리 가능
- **쿠키 관리**, **파일 업로드**, **멀티탭** 지원

## 코드 규모

- Swift ~2,800줄 + Python ~1,900줄, 외부 의존성은 SwiftNIO 하나뿐
- macOS 14.0+(Sonoma), Xcode 16+, Python 3.10+ 필요
- Universal 빌드(arm64 + x86_64) 제공

## 핵심 포인트

- 접근성 트리 기반 페이지 표현으로 raw DOM 대비 10~100배 토큰 절감
- JS eval ~0.5ms, 스크린샷 ~15ms, 탭당 메모리 ~40MB로 Puppeteer 대비 수배 빠르고 가벼움
- Learn 모드로 사용자 시연을 플레이북으로 자동 변환하는 Skill 시스템 제공
- Swift ~2800줄 + Python ~1900줄, 외부 의존성은 SwiftNIO 하나뿐

## 인사이트

AI 에이전트에게 필요한 것은 전체 DOM이 아니라 인터랙션 가능한 요소 목록이라는 관점에서, 접근성 트리를 1등 시민으로 채택한 설계가 인상적임
