클라우드플레어, AI 에이전트용 브라우저 엔진 Kitesurf 오픈소스 공개
클라우드플레어가 Kitesurf를 Apache 2.0으로 GitHub에 공개했다. Workers 위에서만 동작하는 AI 에이전트용 무상태 브라우저로, 브라우저 컨테이너 없이 HTML 파싱, CSS 적용, JavaScript 실행, 스크린샷 렌더링을 하며 CDP를 지원해 Puppeteer로 연결할 수 있다.
클라우드플레어, AI 에이전트용 무상태 브라우저 엔진 Kitesurf 오픈소스 공개
클라우드플레어는 공식 블로그에서 Kitesurf를 Apache 2.0 라이선스로 GitHub에 공개했다고 밝혔습니다. Kitesurf는 Cloudflare Workers 위에서만 동작하는, AI 에이전트용 무상태 브라우저입니다. 글의 저자는 Celso Martinho, Rui Figueira, Bernardo Pereira, Luís Duarte입니다. 공식 글은 이것을 에이전트용 경량 브라우저 엔진으로 설명하며, 검증된 완전한 멀티테넌트 격리 샌드박스 프레임워크라고는 말하지 않습니다.
지켜진 약속
클라우드플레어는 8월에 Kitesurf를 소개했고, 9월에는 WebMCP 지원과 새 API, 향상된 호환성을 담은 후속 글을 냈습니다. 두 번 모두 개발자가 자신의 Cloudflare 계정에서 자체 브라우저 엔진을 돌릴 수 있도록 오픈소스로 공개하겠다고 약속했습니다. 이번 공개로 그 약속이 지켜졌습니다. 코드를 읽고, 로컬에서 실행하고, 수정하고, 자신의 인스턴스를 Cloudflare Workers에 배포할 수 있습니다.
Kitesurf란 무엇인가
공식 설명은 구체적입니다. Kitesurf는 Cloudflare Workers 위에서만 실행되며, HTML을 파싱하고, CSS를 적용하고, 페이지의 JavaScript를 실행하고, 스크린샷을 렌더링합니다. 브라우저 컨테이너는 쓰지 않습니다. Chrome DevTools Protocol, 즉 CDP를 지원하므로 Puppeteer 같은 클라이언트가 연결할 수 있습니다.
핵심 목표는 AI 에이전트에게 가볍고 효율적인 브라우저를 주는 것입니다. 웹사이트를 불러오고, JavaScript를 실행하고, 페이지와 상호작용하면서도 Chromium 같은 완전한 브라우저보다 CPU와 메모리를 덜 쓰고, 클라우드플레어의 전 세계 Workers 네트워크에서 수요에 따라 확장되기를 바랍니다.
저장소에 들어 있는 것
Kitesurf는 클라우드플레어의 개발자 플랫폼과 API 위에, WebAssembly로 컴파일된 Rust 오픈소스 패키지들을 얹어 만들었습니다. Blitz는 HTML 파싱, DOM, 레이아웃, 그리기를 맡고, Stylo는 CSS 파싱, 캐스케이드, 계산된 스타일을 맡습니다. Boa는 WebAssembly 안에서 JavaScript를 실행하지만, Dynamic Workers에서 실행할 수 없을 때에만 쓰는 최후의 수단입니다. Linebender 라이브러리는 텍스트 배치와 2D 그래픽을 다루고, Krilla는 PDF 출력을 만듭니다. 이 프로젝트들은 각자의 라이선스를 유지하며, 저장소의 NOTICE 파일에 제3자 고지가 적혀 있습니다.
구조는 세 부분입니다. Engine은 브라우저 세션과 클라이언트 연결을 관리하고, PageScript는 페이지와 그 JavaScript를 실행하며, PageRenderer는 결과를 그립니다. 엔진, Rust 코어, DOM 심, 렌더러, Kitesurf 명령줄 도구 같은 패키지는 저장소의 packages 디렉터리 아래 별도 폴더에 있어서 각 부분이 어떻게 맞물리는지 살펴볼 수 있습니다.
로컬에서 실행하기
먼저 저장소의 빌드 요구 사항을 확인하고, 클론한 뒤 pnpm으로 의존성을 설치하고 pnpm run dev로 엔진을 시작합니다. 첫 빌드는 Rust 코어와 의존성을 컴파일하므로 시간이 걸리며, 이후 빌드는 캐시를 재사용합니다. 그러면 wrangler가 127.0.0.1:8787에서 로컬 개발 서버를 엽니다. 이 주소를 Chrome DevTools에서 열어 페이지를 시험하거나 프로그램에서 쓸 수 있습니다. 글에는 Node.js 스크립트로 puppeteer-core를 로컬 devtools/browser WebSocket 엔드포인트에 연결하고, 페이지를 열어 스크린샷을 저장하는 예가 있습니다. AI 하네스를 로컬 CDP 포트로 향하게 해서 에이전트가 Kitesurf를 완전히 제어하게 하는 방법도 권합니다.
내 계정에 배포하기
로컬 수정과 테스트가 끝나면 엔진을 자신의 Cloudflare 계정에 배포해, 클라우드플레어가 제공하는 관리형 Browser Run API 대신 쓸 수 있습니다. Kitesurf가 Dynamic Workers로 페이지마다 격리된 Workers를 만들기 때문에 Workers 유료 요금제가 필요합니다. 저장소 루트에서 pnpm run deploy를 실행하면 됩니다.
기여 방법과 현재 상태
다른 클라우드플레어 오픈소스와 마찬가지로 포크와 기여를 환영합니다. 다만 팀은 Kitesurf가 활발히 개발 중이라고 분명히 밝힙니다. 지금의 중점은 Web Platform Tests 진행 상황으로 확인할 수 있는 호환성 향상, 그리고 신뢰성과 효율입니다. 기여하려면 먼저 기여 가이드를 읽고, 최소 재현 예시나 접근 방안을 담아 이슈를 열고, 풀 리퀘스트를 열기 전에 메인테이너의 승인을 받아야 합니다. 범위가 분명하고 테스트와 근거가 있는 수정은 큰 재작성보다 검토하기 쉽습니다. 기여가 반드시 코드일 필요는 없습니다. 렌더링 오류를 재현하는 작은 페이지, 실패하는 자동화 흐름, 문서 정정도 도움이 됩니다.
염두에 둘 점
Apache 2.0은 관대한 라이선스이지만, Kitesurf가 의존하는 Blitz, Stylo, Boa 같은 구성 요소는 각자의 라이선스를 유지합니다. 기업은 도입 전에 NOTICE 파일을 확인해야 합니다. 배포에는 Workers 유료 요금제가 필요하므로, 개인 개발자는 실험하기 전에 비용을 확인하는 것이 좋습니다. 프로젝트가 빠르게 움직이고 있어 인터페이스와 동작이 바뀔 수 있으며, 중요한 업무 흐름에는 회귀 테스트가 필요합니다. 또 Kitesurf는 페이지의 JavaScript를 우선 Dynamic Workers에서 실행하고 꼭 필요할 때만 WebAssembly의 Boa로 넘어가므로, 페이지마다 실행 경로가 다를 수 있습니다. 문제를 추적할 때 기억해 둘 만합니다.
앞으로
팀은 클라우드플레어 블로그와 변경 기록, 그리고 표준 호환성을 보여 주는 Web Platform Tests 결과와 벤치마크가 공개되는 공식 랜딩 페이지를 안내합니다. Discord에서의 교류도 권합니다. 저자들은 에이전트를 위한 브라우저를 만들고 있으며 개선에 힘을 보태 주기를 바란다고 글을 맺습니다.
Sources
FAQ
Kitesurf란 무엇인가요?
클라우드플레어가 공개한 AI 에이전트용 무상태 브라우저로, Cloudflare Workers 위에서만 동작합니다. 브라우저 컨테이너 없이 HTML을 파싱하고, CSS를 적용하고, 페이지의 JavaScript를 실행하고, 스크린샷을 렌더링하며 CDP도 지원합니다.
로컬 실행과 배포는 어떻게 하나요?
GitHub 저장소를 클론하고 pnpm으로 의존성을 설치한 뒤 pnpm run dev를 실행하면 127.0.0.1:8787에서 로컬 서버가 시작되고 Puppeteer가 연결할 수 있습니다. 내 계정에는 pnpm run deploy로 배포하며, Dynamic Workers 때문에 Workers 유료 요금제가 필요합니다.
지금 운영 환경에서 써도 되나요?
클라우드플레어는 프로젝트가 활발히 개발 중이며 호환성, 신뢰성, 효율을 높이는 데 집중하고 있다고 밝혔고, 진행 상황은 Web Platform Tests에서 볼 수 있습니다. 대상 사이트에서 직접 검증하고, 중요한 흐름에는 회귀 테스트를 두고, 제3자 라이선스 고지를 확인하세요.