Kuri – Zig으로 만든 AI 에이전트용 브라우저 자동화 도구
Kuri – Zig based agent-browser alternative
TL;DR Highlight
Node.js 없이 Zig으로 만든 464KB짜리 초경량 브라우저 자동화 도구로, AI 에이전트 루프에서 토큰 비용을 줄이는 데 특화되어 있다.
Who Should Read
LLM 에이전트에 웹 브라우저 자동화를 붙이고 있는 개발자 중, Playwright/Puppeteer 같은 Node.js 기반 툴의 무거움이나 토큰 낭비가 불만인 분들.
Core Mechanics
- Kuri는 Zig으로 작성된 브라우저 자동화 도구로, Node.js 의존성이 전혀 없다. 바이너리 크기가 464KB에 불과하고 콜드 스타트가 약 3ms로 매우 빠르다.
- Chrome의 CDP(Chrome DevTools Protocol)를 직접 제어하는 방식이라 별도 런타임 없이 Chrome과 통신한다. 단, Chrome 자체는 어딘가에서 실행되고 있어야 한다.
- 핵심 설계 철학은 'QA 엔지니어용이 아닌 에이전트 루프용'이다. 페이지 상태를 읽고 → 토큰을 최소화하고 → 안정적인 참조(ref)로 클릭하고 → 다음 단계로 넘어가는 사이클에 최적화되어 있다.
- Google Flights(SIN→TPE) 기준으로 전체 에이전트 워크플로우(go→snap→click→snap→eval) 토큰 비용을 비교했을 때, Vercel의 agent-browser 대비 16% 적은 토큰을 사용했다. (kuri: 4,110토큰 vs agent-browser: 4,880토큰)
- 스냅샷 모드가 여러 가지인데, `--interactive` 모드가 에이전트 루프에 가장 효율적이다. compact 모드(4,328토큰) 대비 절반도 안 되는 1,927토큰만 사용한다.
- 반면 JSON 전체 스냅샷(`--json`)은 31,280토큰으로 compact의 7.2배나 되고, lightpanda의 semantic_tree도 26,244토큰으로 비슷하게 비싸다. lightpanda는 JavaScript를 실행하지 않아서 빈 DOM만 나오는 경우도 있다는 점이 추가 단점이다.
- A11y(접근성 트리) 스냅샷, HAR(HTTP Archive) 기록, 독립 실행형 fetcher, 인터랙티브 터미널 브라우저, 보안 테스트 기능까지 내장되어 있다.
- 벤치마크는 동일 Chrome 세션, 동일 tiktoken cl100k_base 토크나이저로 측정했으며, `./bench/token_benchmark.sh`로 직접 재현할 수 있다고 명시되어 있다.
Evidence
- 설치 스크립트(install.sh)와 bun을 통한 설치가 404 오류를 반환한다는 보고가 있었다. 아직 초기 프로젝트라 인프라 안정성이 완전하지 않은 상황인 것으로 보인다.
- README의 벤치마크가 자체 제작(self-published)이라는 점을 지적하는 댓글이 있었다. 독립적인 검증 없이 16% 토큰 절감이라는 수치를 그대로 신뢰하기 어렵다는 맥락이다.
- kuri-fetch가 '독립 실행형'이라고 광고하지만 실제로는 Chrome이 어딘가에서 반드시 실행되고 있어야 한다는 지적이 있었다. CDP를 감싼 래퍼에 불과하다는 의견으로, 진정한 standalone은 아니라는 비판이다.
- 기존에 brow.sh(텍스트 기반 브라우저)를 페이지 fetching에 사용하던 사람이 Kuri가 더 흥미로워 보인다고 언급했다. 다만 Chrome 의존성을 확인하고 나서 다소 실망한 반응이었다.
How to Apply
- LLM 에이전트가 웹 페이지를 읽어야 하는 태스크(가격 비교, 정보 수집 등)를 구현 중이라면, Playwright 대신 Kuri의 `snap --interactive` 모드를 써보면 된다. 같은 페이지를 절반 이하의 토큰으로 읽을 수 있어 API 비용이 줄어든다.
- 멀티스텝 에이전트 루프(페이지 이동 → 스냅샷 → 클릭 → 스냅샷 → 판단)를 반복하는 구조라면 토큰 절감 효과가 누적(compounding)된다. 단계가 많을수록 kuri의 이점이 커지므로, 10단계 이상의 복잡한 웹 태스크 자동화에 특히 적합하다.
- 기존 Node.js 기반 브라우저 자동화를 서버리스나 경량 컨테이너에 올리려다 바이너리 크기 문제로 포기한 경우, Kuri의 464KB 단일 바이너리를 고려해볼 수 있다. 3ms 콜드 스타트는 Lambda 같은 환경에서도 실용적인 수준이다.
- 보안 테스트 자동화가 필요한 경우 Kuri의 내장 보안 테스트 기능과 HAR 기록 기능을 활용할 수 있다. HAR 파일을 남기면 에이전트가 어떤 HTTP 요청을 했는지 추후 디버깅도 가능하다.
Code Example
snippet
# 토큰 벤치마크 직접 재현
./bench/token_benchmark.sh
# 기본 스냅샷 (compact 모드, 4,328 토큰)
kuri snap
# 에이전트 루프용 최적 모드 (1,927 토큰 — compact 대비 0.4x)
kuri snap --interactive
# JSON 전체 덤프 (31,280 토큰 — 디버깅용)
kuri snap --json
# 독립 실행형 페이지 fetcher (단, Chrome 실행 필요)
kuri-fetch https://example.comTerminology
CDPChrome DevTools Protocol의 약자로, Chrome 브라우저를 외부 프로그램이 원격으로 제어할 수 있게 해주는 프로토콜이다. Playwright, Puppeteer도 내부적으로 이걸 쓴다.
A11y snapshotAccessibility(접근성) 트리 스냅샷의 줄임말로, 브라우저가 스크린리더를 위해 만드는 페이지 구조를 텍스트로 추출한 것이다. 전체 HTML보다 훨씬 간결해서 LLM에 넘기기 좋다.
HARHTTP Archive의 약자로, 브라우저가 주고받은 모든 HTTP 요청/응답을 JSON 형태로 기록한 파일이다. 네트워크 디버깅이나 재현 테스트에 쓴다.
tiktokenOpenAI가 만든 토크나이저 라이브러리로, 텍스트가 GPT 계열 모델에서 몇 개의 토큰으로 나뉘는지 계산해준다. cl100k_base는 GPT-4에서 쓰는 토크나이저 설정이다.
cold start프로그램을 처음 실행할 때 걸리는 초기 구동 시간이다. Node.js 기반 툴은 런타임 로딩 때문에 수백ms~수초가 걸리는 반면, Kuri는 3ms라고 주장한다.
agent loopAI 에이전트가 '상황 파악 → 판단 → 행동 → 결과 확인'을 반복하는 사이클이다. 루프를 한 번 돌 때마다 토큰이 소비되므로, 토큰 효율이 높을수록 같은 비용으로 더 많은 스텝을 밟을 수 있다.