Cloudflare ouvre le code de Kitesurf, son navigateur pour agents
Cloudflare a publié le 13 novembre le code de Kitesurf, le navigateur pour agents IA qu’elle présentait en août, sous licence Apache 2.0. Le moteur tourne entièrement sur Workers, sans Chrome ni conteneur, et se pilote avec les outils habituels du protocole DevTools, Puppeteer en tête. Chacun peut désormais le lancer en local ou le déployer sur son propre compte Cloudflare.
Un navigateur sans navigateur
Kitesurf analyse le HTML, applique le CSS, exécute le JavaScript des pages et produit des captures d’écran, le tout sur le réseau Workers. Il parle le Chrome DevTools Protocol (CDP), ce qui permet de brancher des clients existants. Cloudflare le décrit comme un navigateur « sans état » : l’objectif affiché est de donner aux agents un outil plus léger qu’un navigateur complet comme Chromium, moins gourmand en CPU et en mémoire, et qui monte en charge à la demande sur le réseau mondial de Workers.
Reste à savoir de quoi il est fait. D’après le blog de Cloudflare, le moteur s’appuie sur des bibliothèques Rust compilées en WebAssembly : Blitz pour l’analyse HTML, le DOM, la mise en page et le rendu, Stylo pour le CSS, les bibliothèques Linebender pour le texte et le graphisme 2D, Krilla pour la sortie PDF. Boa, un interpréteur JavaScript tournant lui aussi en WebAssembly, n’intervient qu’en dernier recours, quand le script ne peut pas s’exécuter dans un Dynamic Worker. Ces projets gardent leurs licences respectives.
L’architecture tient en trois blocs : l’Engine gère les sessions et les connexions des clients, PageScript fait tourner la page et son JavaScript, PageRenderer dessine le résultat. Le moteur, le cœur Rust, les adaptations du DOM, le moteur de rendu et la ligne de commande vivent dans des dossiers séparés du répertoire « packages ».

Le lancer chez soi
En local, le chemin est court sur le papier. Après avoir cloné le dépôt, pnpm install --frozen-lockfile puis pnpm run dev démarrent le moteur sur http://127.0.0.1:8787, avec une adresse /health pour vérifier qu’il répond. Le port se change via la variable KITESURF_PORT. Dans les faits, il faut d’abord réunir les prérequis listés sur GitHub : Bazelisk, Node.js 22 ou plus récent, pnpm 9.15.4, GNU tar sur macOS, et Rust seulement pour modifier les correctifs de bibliothèques embarqués. Bazel télécharge lui-même ses chaînes d’outils, et la première compilation du cœur Rust prend du temps, prévient Cloudflare. Les suivantes réutilisent le cache.
Côté client, rien d’exotique : avec puppeteer-core, on se connecte à ws://127.0.0.1:8787/devtools/browser, on ouvre une page, on navigue, on prend une capture. Cloudflare suggère aussi de pointer directement un agent sur le port CDP local.
La page d’accueil du moteur propose un formulaire pour inspecter une URL dans les DevTools de Chrome. Par défaut, l’interface vient de l’hébergement de Google et ne fonctionne qu’avec une instance locale. Pour l’embarquer, il faut compiler avec l’option --config=devtools, qui télécharge environ 250 Mo. Une instance déployée utilise toujours cette copie. Cloudflare prévient aussi que Kitesurf fournit un point d’accès CDP, pas une implémentation complète de Chrome : certaines fonctions des DevTools manquent encore.
Déployer sur Workers, avec un garde-fou à ajouter
Pour passer en production, pnpm run deploy suffit, à lancer depuis la racine du dépôt. Il faut toutefois un abonnement Workers Paid, car Kitesurf crée des Workers isolés pour chaque page grâce aux Dynamic Workers. Cloudflare présente cette option comme une alternative aux API gérées de Browser Run, son service hébergé.
Point d’attention : Kitesurf n’intègre aucune authentification. Le changelog de Cloudflare recommande de protéger son déploiement avec Cloudflare Access ou une autre couche équivalente. Un navigateur qu’on ne verrouille pas et qui va chercher des pages à la demande n’est pas un service à laisser ouvert. Le même changelog annonce par ailleurs des plafonds de dépense pour Workers et Durable Objects, configurables dans le tableau de bord, qui peuvent bloquer l’usage ou simplement envoyer une alerte par e-mail. Utile pour qui veut tester sans surprise sur la facture, même si Cloudflare précise que la dépense enregistrée peut dépasser la limite, le décompte prenant du temps.
Un projet jeune
Le dépôt GitHub qualifie Kitesurf de moteur « expérimental », et Cloudflare le dit « en développement intensif ». Les efforts portent sur la compatibilité avec les standards du web, mesurée par les Web Platform Tests, la fidélité du rendu et les performances. L’équipe accepte les contributions, mais avec une capacité de relecture limitée : il faut ouvrir un ticket avec un cas minimal, puis obtenir l’aval d’un mainteneur avant toute pull request. Un correctif ciblé avec des tests passera plus facilement qu’une grosse refonte.
Phoronix, qui relaie l’annonce, souligne que Cloudflare tient ainsi la promesse faite lors de la présentation du projet, plus tôt dans l’année. Reste à voir ce que donneront les prochaines mesures de compatibilité : ce sont elles qui diront si un moteur assemblé à partir de briques Rust peut remplacer Chromium pour des agents confrontés au web réel.
Sources
- GitHub – cloudflare/kitesurf: Kitesurf is an experimental browser engine that runs on Cloudflare Workers., github.com
- Changelogs, developers.cloudflare.com
- Kitesurf is now open source, Cloudflare, 13 novembre 2026
- Cloudflare Open Sources Kitesurf: Their Web Browser For AI Agents, Phoronix, 13 novembre 2026



