Cloudflare, Kitesurf 브라우저 공개
- •Cloudflare가 Browser Run 베타에서 Workers 기반 agent-first 브라우저 Kitesurf를 무료로 공개했다
- •Kitesurf는 WPT 테스트 약 215,000+개를 통과했으며 매주 수백 개 통과 테스트를 추가한다
- •벤치마크에서 Chromium보다 메모리와 CPU를 3-7x 적게 썼고 wall time은 약 1.7x 느렸다
Cloudflare가 Cloudflare Workers에서 완전히 실행되는 agent-first 브라우저 Kitesurf를 발표했다. Kitesurf는 Browser Run을 통해 베타 기간 무료로 제공된다. Cloudflare는 Workers가 성숙한 웹어셈블리, Dynamic Workers, SQLite 기반 Durable Objects, worker-to-worker RPC, service bindings, 더 높은 NodeJS 호환성, 더 높은 한도를 갖추면서 12 weeks ago 수년 전 내부 질문이던 브라우저 구축 논의를 다시 시작했다고 밝혔다. 동시에 AI agents가 사람의 브라우징보다 자동화에 맞춘 브라우저 수요를 만들었다고 설명했다.
Cloudflare는 Chromium식 브라우저 엔진이 사람을 위해 만들어졌고, 많은 AI models에는 필요 없는 메모리와 연산 부담을 지닌다고 밝혔다. 이에 Kitesurf는 tabs, themes, browser extensions, device synchronization, pixel-perfect 60-fps scrolling 같은 우선순위를 제거하고 token count, context windows, scalability, performance, costs를 중시한다. 또한 agent browsers는 prompt injection과 tool safety를 우선순위로 다루는 다른 threat model을 가진다고 밝혔다.
Kitesurf는 AI automation용 Rust headless engine인 obscura에서 영감을 받아 출발했다. obscura는 “no Chrome, no Node.js, no dependencies”로 설명된다. Cloudflare는 처음에 AI agent의 도움으로 이를 Workers에 포팅하려 했고, 이후 겨우 작동하는 proof of concept에서 Web Platform Tests, integration tests, 실제 웹사이트 대상 visual regression tests를 쓰는 production-oriented browser로 옮겨갔다. Cloudflare는 WPT가 W3C standards conformance를 측정하며, 추가 Puppeteer tests는 multistep website interactions에서 Chromium과 Kitesurf의 동작 및 rendered outputs를 비교한다고 설명했다.
Cloudflare는 Kitesurf를 Engine, PageScript, PageRenderer라는 3개 주요 구성요소로 만들었다. Engine은 Chrome DevTools Protocol WebSocket과 HTTP REST APIs를 처리하고, 내부 testing landing page를 제공하며, 각 session state를 저장한다. 다른 구성요소는 stateless다. PageScript는 Dynamic Workers를 사용해 각 next page나 out-of-process iframe마다 long-lived isolate를 만들고, parsed HTML, CSS, JavaScript로 채운 clean globalThis와 DOM document object를 제공한다. PageRenderer는 PageScript에서 scene을 받고, Static Assets에서 internal fonts와 images를 가져오며, page를 image buffer로 rasterize한 뒤 JPEG/PNG 또는 PDF output을 Engine에 반환한다.
Kitesurf는 images, fonts, CSS, JavaScript, Wasm files 같은 external assets를 fetch할 수 있는 유일한 구성요소로 SandboxOutbound worker에 의존한다. Cloudflare는 Dynamic Workers가 이 network boundary를 강제한다고 밝혔다. SandboxOutbound는 CORS를 적용하고 browser-shaped headers를 주입하며, responses를 필터링하고 각 page의 cookies를 자체 jar에 보관하며 policy failures에는 403을 반환한다. Cloudflare는 가능한 곳에 Rust를 쓰고 wasm-bindgen을 통해 직접 웹어셈블리로 컴파일한다. Workers가 아직 native eval을 지원하지 않기 때문에, occasional evals 처리를 위해 Rust로 작성된 ECMAScript engine인 Boa JS도 사용한다.
Cloudflare는 Kitesurf가 WPT tests 약 215,000+개를 통과했고 매주 수백 개의 passing tests를 추가하고 있다고 밝혔다. 14-URL corpus에서 진행한 5차례 Browser Run quick-action runs에서 Kitesurf는 screenshots에 380 ms CPU를 사용해 Chromium의 1,173 ms보다 낮았고, HTML extraction에는 229 ms CPU를 써 Chromium의 877 ms보다 낮았다. Memory use는 screenshots에서 57.8 MiB 대 271.0 MiB, HTML extraction에서 39.4 MiB 대 273.7 MiB였다. Wall time은 더 느렸다. screenshots는 1,148 ms 대 637 ms, HTML extraction은 820 ms 대 472 ms였다. Cloudflare는 Kitesurf가 Chromium보다 memory와 CPU를 3-7x 적게 쓰지만, warmed JIT behavior와 Kitesurf의 현재 rasterization 및 JPEG/PNG encoding costs 때문에 Chromium이 wall time에서 약 1.7x 빠르다고 밝혔다.