Kuri – Zig로 만든 AI 에이전트용 브라우저 자동화 도구
Kuri – Zig based agent-browser alternative
TL;DR Highlight
Zig 단일 바이너리로 에이전트용 브라우저 제어, 토큰 7~12% 절감
Who Should Read
브라우저 에이전트를 돌리는데 Playwright·Node 의존성과 페이지 스냅샷 토큰 비용이 부담스러운 백엔드 개발자
Core Mechanics
- Playwright 없이 Zig 바이너리 하나
- Node.js 런타임 없이 단일 바이너리로 동작한다고 한다.
- kuri 바이너리는 1.04 MiB, kuri-agent는 615 KiB다(Apple M4 Pro, ReleaseFast 빌드 기준).
- 네 가지 모드로 나뉜다
- kuri는 CDP(Chrome DevTools Protocol, 크롬을 원격 조종하는 프로토콜) 서버다.
- kuri-fetch는 Chrome 없이 QuickJS로 페이지를 가져오는 fetcher다.
- kuri-browse는 터미널 브라우저, kuri-agent는 스크립트용 CLI다.
- 스냅샷 포맷이 짧아서 토큰이 줄었다
- ref를 [ref=e0](9자) 대신 @e0(3자)로 쓰고 줄마다 붙는 '-' 접두어도 뺐다.
- agent-browser 대비 Hacker News는 12%, Google Flights SIN→TPE는 7% 적은 토큰이다(chars/4 근사치).
- /page/state는 관찰 비용이 44배 가볍다
- 같은 Google Flights 페이지에서 /page/state는 48토큰, 전체 스냅샷은 2,124토큰이다.
- URL, 제목, 스크롤 %, 폼·링크 개수 정도만 돌려준다.
- POST /batch로 왕복을 줄인다
- 명령 N개를 HTTP 호출 한 번에 보내 N-1번의 왕복과 LLM 턴을 없앤다.
- 토큰 수는 그대로이고 HTTP 호출만 5번에서 1번으로 준다.
- libretto와의 비교는 장단이 갈린다
- 호출 지연은 kuri가 4–117 ms, libretto가 1,344–1,500 ms다(같은 Chrome·탭, tiktoken o200k_base 기준).
- 큰 리스트 기본 스냅샷은 kuri 4,424토큰, libretto 813토큰으로 kuri가 불리하다.
- 반복 실행은 libretto가 Playwright 스크립트로 컴파일해 0토큰 재실행이 가능하다.
Community Reactions
- 스냅샷 diff로 9번 클릭이 49배 싸졌다
- 9번 클릭 feed 시나리오가 매번 전체 재스냅샷이면 44,285토큰이다.
- 잘라낸(limit) 기본 스냅샷에 diff를 쓰면 898토큰이고 libretto는 939토큰이다.
- 댓글: brow.sh를 페이지 가져오기에 쓰던 사용자는 흥미롭다면서도 결국 Chrome DevTools 래퍼 아니냐고 물었다
- kuri-fetch가 독립형이라 해도 어딘가에서 Chrome이 돌아야 하는 것 아니냐는 의문이다.
- 댓글: bun과 sh 설치 스크립트가 404가 난다는 제보가 있었다
- 설치 명령이 그대로 동작하지 않을 수 있다는 경험이다.
- 댓글: README의 벤치마크가 자체 측정이라는 지적이 있었다
- Vercel agent-browser 대비 Google Flights 작업의 워크플로 토큰이 16% 낮다는 주장이라는 의견이다.
How to Apply
- /page/state로 관찰 단계 바꾸기
- 에이전트 루프에서 매 스텝 전체 스냅샷을 받는 부분을 찾아라.
- 클릭 후 확인용 호출만 /page/state(약 48토큰)로 바꿔서 토큰 차이를 재라.
- 스냅샷을 interactive+compact로 요청하기
- /snapshot?filter=interactive&format=compact로 호출해 클릭 가능한 요소만 받아라.
- 현재 쓰는 도구의 스냅샷 토큰과 같은 페이지에서 직접 비교하라.
- 긴 리스트 페이지는 limit 지정하기
- /snapshot?limit=N으로 반복 항목을 잘라라.
- 필요한 부분은 scope=@ref로 다시 가져와라.
- 도입 전에 자기 환경에서 벤치마크 다시 돌리기
- README가 같은 환경에서 재측정 후 인용하라고 안내한다.
- 우리 서비스의 실제 페이지 3개로 토큰과 지연을 기존 도구와 비교하라.
Try It
# 셸에서 실행. Kuri 설치 후 Hacker News를 열고 스냅샷과 page/state 크기를 비교한다 (Chrome 필요)
curl -fsSL https://kuri.trilok.ai/download | sh
kuri &
sleep 3
BASE=http://127.0.0.1:8080
SESSION=demo
curl -s -H "X-Kuri-Session: $SESSION" "$BASE/tab/new?url=https%3A%2F%2Fnews.ycombinator.com"
echo "--- snapshot chars:"
curl -s -H "X-Kuri-Session: $SESSION" "$BASE/snapshot?filter=interactive&format=compact" | wc -c
echo "--- page/state chars:"
curl -s -H "X-Kuri-Session: $SESSION" "$BASE/page/state" | wc -cTerminology
관련 논문
WhatsApp 도움말 페이지에 숨겨진 LLM 지시문: 규제기관을 추천하지 말라
WhatsApp 도움말에 화면엔 안 보이는 AI 지시문 102개가 숨어 있었다
같은 시뮬레이션, 다른 근거: 도구 출력을 파일로 넘기면 LLM 에이전트 정확도가 어디서 깎이나
긴 툴 출력을 파일로 넘기자 GPT-5.1은 정확도 11.3%p 하락, 정식 출력 지정하니 회복
가짜 뉴스가 진짜 폭락을: LLM 트레이딩 에이전트 대상 정보 주입 공격
가짜 헤드라인 한 줄로 LLM 트레이딩 에이전트 62%를 조종했다(프롬프트 주입은 14%)
Harness Engineering 101: LLM은 뇌, harness는 몸
에이전트는 JSON 배열을 관리하는 루프이고, 16개 챕터로 직접 만들어 본다
Harness²: 에이전트 harness를 스스로 고쳐 쓰는 재귀 최적화 프레임워크
모델은 고정하고 harness를 재귀로 고쳤더니 벤치마크 점수가 최대 11.8%p 올랐다
Ask HN: 이해 못 하는 AI 작성 코드를 배포할 때 어떻게 하나
설계는 내가, 구현은 LLM이: 이해 못 하는 코드를 다루는 개발자들의 방법
해고된 Savannah 경찰관, ICE 요원 남편에게 Flock 계정 공유
경찰관이 Flock 계정을 남편(ICE 요원)에게 공유했고, 감사에서 983건 검색이 드러나 해고됐다
tmux와 Claude Code: 세션, send-keys, 그리고 한계선
tmux로 Claude Code 여러 개를 돌리면 편하지만 에이전트 4개쯤에서 한계가 온다