moli est un navigateur headless open source, écrit en Rust, conçu pour les agents IA qui lisent, extraient et automatisent des pages web. Il part d’une idée simple : la plupart des tâches demandent la structure d’une page, pas son rendu visuel, donc la mise en page n’est calculée que sur demande. Un seul binaire parle trois protocoles d’automatisation, sans ChromeDriver à installer.
En bref
- Navigateur headless en Rust, sous licence Apache 2.0 ou MIT au choix
- Extraction d’une page en HTML, Markdown, JSON ou arbre sémantique depuis la ligne de commande
- Un seul binaire pour CDP, WebDriver Classic et WebDriver BiDi, avec Playwright en connexion directe
- Captures PNG et PDF seulement avec l’option –layout
- Dans ses propres tests, 73 MiB de mémoire médiane contre 773 MiB pour Chrome Headless

Qu’est-ce que moli, un navigateur pour agent IA
moli est un navigateur headless, c’est-à-dire sans fenêtre, publié par lexmount. Il sert à un agent IA à récupérer et extraire des pages web, à chercher sur le web et à automatiser des tâches dans un navigateur. Le projet est écrit en Rust (88 % du code d’après GitHub) et fonctionne sous Linux, macOS et Windows.
Ce n’est pas une enveloppe autour de Chromium : le README le décrit comme un noyau de navigateur autonome. Il s’appuie sur des briques existantes, comme V8 pour exécuter le JavaScript ou Servo/Stylo pour les styles CSS. Le projet est aussi le navigateur open source de Lexmount, dont le service Lexmount Browser est la version cloud gérée ; le README précise que le navigateur open source s’utilise très bien sans ce service.
Comment fonctionne moli : la structure d’abord, les pixels à la demande
Selon le README, une tâche d’automatisation a surtout besoin de la structure de la page, pas d’un rendu visuel maintenu en permanence. moli lit donc directement l’état du DOM et des styles. Extraire du HTML ou du Markdown, interroger le DOM, exécuter du JavaScript ou inspecter le réseau ne déclenche ni mise en page ni dessin.
Quand une demande exige de la géométrie, par exemple la taille d’un élément ou un clic à des coordonnées, moli calcule une mise en page et ne garde que la plus récente. Une capture d’écran reconstruit toujours la mise en page à partir de l’état courant, produit une image, puis jette ce qui a servi au dessin. Le moteur n’entretient ni arbre de mise en page mis à jour au fil de l’eau, ni compositeur GPU, ni fenêtre persistante.
- Par défaut : géométrie simulée mais déterministe, sans vraie mise en page
- Avec –layout : vraie mise en page, clics par coordonnées, captures, flux d’images pour DevTools
- Avec –resource : récupération des images, polices, sons et vidéos ; des options séparées existent pour chaque famille

Extraire une page en Markdown avec moli
La commande moli fetch charge une page et la restitue dans le format choisi : HTML, Markdown, JSON ou arbre sémantique, une version compacte de la page pensée pour être lue par un modèle. Le README prévoit aussi des attentes sur un sélecteur, un script ou une réponse réseau, ainsi que le traçage du réseau.
Pour obtenir le Markdown d’une page :
moli fetch \
--dump markdown \
--wait-until done \
https://example.com
Installer moli
Le README propose de confier l’installation à ton agent IA, avec des instructions qui pointent vers les skills du dépôt, ou d’installer directement le binaire précompilé. Sous Linux et macOS, une seule commande suffit :
curl --proto '=https' --tlsv1.2 -fsSL \
https://github.com/lexmount/moli/releases/latest/download/moli-installer.sh | sh
Remplacer ChromeDriver : serveur d’automatisation et captures d’écran
La commande moli serve démarre un serveur d’automatisation. Le même point d’accès parle CDP, WebDriver Classic et WebDriver BiDi, avec un seul noyau. Le README précise qu’aucun ChromeDriver, geckodriver ni navigateur séparé n’est à installer. Playwright se connecte directement en CDP.
Pour les captures d’écran, il faut activer la mise en page : moli fetch --layout --dump screenshot produit un PNG de la zone visible, screenshot_full la page entière, et pdf un document paginé.
Voici les trois modes du serveur, puis la connexion de Playwright :
moli serve
moli serve --layout
moli serve --layout --resource
const browser = await chromium.connectOverCDP("http://127.0.0.1:9222");
Où en est moli : chiffres et versions
Sur GitHub, au relevé du 3 octobre 2026, le dépôt compte 5583 étoiles, 211 forks, 245 tickets et demandes de fusion ouverts et 16 contributeurs. Il a été créé le 10 août 2026, et la dernière version publiée date du 30 septembre 2026. Les notes des dernières versions listent surtout des corrections : protocole CDP, navigation et historique, requêtes fetch et XHR, sécurité (CSP, CORS), DOM et formulaires.
Les mesures du README viennent des auteurs. Sur un test de 192 URLs publiques, moli obtient 103 pages utiles, contre 101 pour Chrome Headless, avec une mémoire médiane de 73 MiB contre 773 MiB. Dans le comparatif Lexbench-Headless-Browser, moli arrive derrière Chrome, moteur de référence, et devant Kitesurf, Lightpanda et Obscura. Il y utilise environ 15 % du temps processeur et 13 % de la mémoire maximale de Chrome. Ces résultats n’ont pas été reproduits ici.
Limites et licence à connaître avant de se lancer
Le README décrit moli comme prêt pour la production dans les scénarios de navigateur d’agent définis par sa documentation, et toujours en développement actif. Il fixe aussi ses limites : pas de navigateur avec interface, pas de parité au pixel près avec Chrome, pas de Canvas, WebGL ou lecture de médias haute fidélité. Tous les modes de capture ou d’impression de Chrome ne sont pas implémentés, et un chemin de protocole non géré renvoie une erreur explicite.
Côté licence, le code s’utilise sous Apache 2.0 ou sous MIT, au choix, sauf mention contraire pour certains fichiers ou composants tiers. La source ne précise aucun prix : le projet est open source.
Quelques repères
- Navigateur headless : Un navigateur headless fonctionne sans fenêtre ni écran. Un programme le pilote pour charger des pages, lire leur contenu ou simuler des actions.
- DOM : Le DOM est la représentation d’une page web sous forme d’arbre d’éléments. Les programmes peuvent le lire et le modifier.
- Mise en page : La mise en page consiste à calculer la taille et la position de chaque élément d’une page. Elle précède le dessin à l’écran et demande du temps de calcul.
Questions fréquentes
moli est-il gratuit et open source ?
Oui, moli est open source. Son code s’utilise sous licence Apache 2.0 ou MIT, au choix, sauf mention contraire pour certains composants tiers. La source ne mentionne aucun prix.
Faut-il installer ChromeDriver pour utiliser moli ?
Non. Selon le README, moli ne demande ni ChromeDriver, ni geckodriver, ni installation d’un autre navigateur, car un seul binaire parle CDP, WebDriver Classic et WebDriver BiDi.
Comment extraire une page web en Markdown avec moli ?
Avec la commande moli fetch et l’option --dump markdown, suivie de l’adresse de la page. On peut ajouter --wait-until done pour laisser la page finir de se charger.
moli peut-il faire des captures d’écran d’une page web ?
Oui, à condition d’activer l’option --layout. Elle permet un PNG de la zone visible, un PNG de la page entière ou un PDF, mais tous les modes de capture de Chrome ne sont pas couverts.
À retenir
moli est un navigateur headless en Rust qui lit d’abord la structure des pages et ne calcule la mise en page, les captures et les PDF que lorsque --layout l’active. Il se pilote en ligne de commande ou par CDP, WebDriver Classic et WebDriver BiDi, sous licence Apache 2.0 ou MIT, avec des limites annoncées sur le rendu fidèle à Chrome.






