Un noyau Linux dans un onglet de navigateur : plongée dans l'architecture de BrowserPod

Leaning Technologies a publié une analyse technique approfondie de BrowserPod, un environnement sandboxé fonctionnant entièrement côté client dans le navigateur grâce à WebAssembly. La particularité de cet outil est d'intégrer un noyau conçu spécifiquement pour l'environnement d'exécution du navigateur, tout en restant compatible avec de nombreuses applications initialement développées pour Linux.

Fonctions fondamentales d'un noyau revisitée pour le Web

L'équipe de développement établit des parallèles directs entre les mécanismes classiques d'un système d'exploitation et l'architecture de BrowserPod. Le noyau WebAssembly remplit quatre grandes fonctions : l'accès et l'abstraction du matériel, la coordination de l'accès aux ressources, l'isolation des applications et l'exécution concurrente.

Dans un système d'exploitation traditionnel, le noyau contient des pilotes capables de dialoguer avec les composants matériels de l'appareil. BrowserPod transpose ce principe dans le navigateur : le noyau WebAssembly expose une interface abstraite aux applications, éliminant la nécessité pour chaque programme d'intégrer une logique spécifique au matériel.

Pour la coordination des accès, le noyau gère les files d'attente des demandes, par exemple pour la lecture et l'écriture sur le disque, et optimise les schémas d'accès en exploitant la localité des données. L'isolation des applications est assurée par un mécanisme analogue à la mémoire virtuelle : chaque processus possède son propre espace d'adressage et ne peut pas accéder à la mémoire d'un autre processus. Une défaillance dans un processus n'affecte donc pas les autres.

L'exécution concurrente repose sur les Workers. Un Worker est créé pour chaque processus ou thread du système. Les processus multithread utilisent plusieurs Workers partageant la même mémoire. Chaque programme est représenté par un binaire WebAssembly unique — on pourrait ainsi parler de bash.wasm ou de blender.wasm, même si BrowserPod n'applique pas d'extension de fichier par souci de cohérence avec les conventions Linux.

Un noyau conçu pour faire fonctionner des systèmes logiciels entiers

L'objectif affiché par les développeurs est de dépasser l'état de l'art actuel de WebAssembly comme cible de compilation. Compiler un programme unique, potentiellement multithread, et l'exécuter dans le navigateur est relativement aisé avec les chaînes d'outils existantes. Ce qui manquait, selon Leaning Technologies, est une solution permettant d'exécuter des systèmes logiciels complets : un ensemble de programmes qui coopèrent et interagissent pour offrir une expérience utilisateur complète.

Un exemple cité est la commande npm install && npm run dev. Cette commande représente en réalité une orchestration complexe de multiples processus : des interpréteurs de commandes (shell), des instances de Node.js, des scripts d'installation, etc. Toutes ces étapes doivent pouvoir accéder à une vue cohérente et persistante des fichiers et des autres ressources système, sans se gêner mutuellement. BrowserPod relève ce défi.

Appels système et intégration

Toutes les applications sont liées entre elles par le noyau WebAssembly de BrowserPod, qui fournit des appels système nommés de manière standard, comme __syscall_readv. Ces appels sont importés dans l'instance WebAssembly des applications, permettant ainsi une interaction transparente entre les programmes et le noyau.

Applications et développements récents

BrowserPod a atteint la version 2.0, un jalon qui le rend assez stable pour exécuter Claude Code et d'autres interfaces en ligne de commande (CLI) agentiques entièrement dans le navigateur. Un projet nommé BrowserCode illustre ces capacités : il s'agit d'un environnement de développement intégré léger fonctionnant sur BrowserPod.

Limitations et perspectives

Le billet technique aborde également les limitations actuelles et les plans futurs, sans entrer dans le détail dans ce compte rendu. L'architecture semble ouverte à des évolutions, notamment pour améliorer les sous-systèmes de disque et de réseau.

Un regard sur les fondements théoriques

En amont de la présentation technique, les développeurs rappellent que les concepts de programmation de bas niveau sont souvent mal compris, en particulier par les développeurs habitués à des formes de codage plus abstraites. Ils jugent utile de rappeler les fonctions essentielles d'un noyau de système d'exploitation avant de plonger dans les détails de BrowserPod.

Cette approche pédagogique vise à rendre accessible une technologie qui pourrait préfigurer une nouvelle manière d'exécuter des applications lourdes et complexes directement depuis un navigateur, sans serveur backend ni installation locale.