À propos du projet

smolvm vous permet de gérer et d'exécuter des machines virtuelles Linux personnalisées localement en utilisant la virtualisation matérielle (Hypervisor.framework sur macOS, KVM sur Linux, Windows Hypervisor Platform sur Windows). Il est construit sur libkrun en tant que VMM et libkrunfw pour le noyau invité, chaque charge de travail bénéficiant de sa propre VM et de son propre noyau invité pour un isolement fort. Les fonctionnalités clés incluent : - MicroVM rapides et multiplateformes avec des démarrages à froid inférieurs à 200 ms, une mémoire élastique via virtio balloon, et des threads vCPU inactifs qui dorment dans l'hyperviseur. - Smolfile : un fichier de déclaration TOML (similaire à un Dockerfile mais pour une VM entière) spécifiant l'image, les ressources, la politique réseau, les montages, les ports et les commandes de configuration. Les clés inconnues sont rejetées lors de la création. - Branchement de VM : des forks copy-on-write en direct d'une machine en cours d'exécution qui reprennent avec les processus, la mémoire et le disque de la source. Prend en charge le branchement par lots avec fan-out, la signalisation worker-ready et les réservations de pools maintenues. - Artefacts portables : emballez une VM arrêtée dans un seul fichier .smolmachine qui peut être poussé vers n'importe quel registre OCI et réhydraté sur n'importe quelle plateforme prise en charge sans aucune dépendance. - Bac à sable : le réseau est désactivé par défaut ; le trafic sortant peut être verrouillé sur des hôtes autorisés spécifiques. Le système de fichiers, le réseau et les informations d'identification de l'hôte sont séparés par une frontière d'hyperviseur. - Transfert d'agent SSH : l'invité peut utiliser les clés SSH de l'hôte pour git et SSH sans que le matériel de clé privée soit copié dans la VM. - Images conteneur locales : démarrez à partir d'archives docker save / podman save, de pipes stdin ou de répertoires rootfs décompressés sans démon Docker. - Machines de développement persistantes : créez, arrêtez, démarrez et exécutez des commandes dans des machines avec des paquets installés survivant aux redémarrages. Les montages de répertoires hôtes propagent les événements inotify pour le rechargement à chaud. - Intégration Kubernetes : fournit un containerd shim v2 pour que les pods s'exécutent en tant que microVM via une RuntimeClass. - Accélération GPU : expose le GPU hôte via virtio-gpu / Venus (Vulkan-over-virtio) sur macOS et Linux. La délégation d'appels CUDA (--cuda) transmet les appels CUDA via vsock au pilote NVIDIA hôte sans passage GPU. - Point de contrôle : enregistrez l'état de la VM en tant qu'artefact .smolcheckpoint durable pour une restauration ultérieure. Une crate Rust (smolvm-checkpoint) fournit un stockage incrémental et une exportation portable sans dépendre de l'environnement d'exécution de la VM. Les ressources par défaut sont de 4 vCPU et 8 GiB de RAM, remplaçables via des indicateurs ou un Smolfile. Le modèle de sécurité considère le root invité comme non fiable, avec des capacités explicitement transmises (montages, réseau, ports, agent SSH) faisant partie de l'autorité de la charge de travail. Le projet est sous licence Apache-2.0.