Présentation
devvm propose de lancer une machine virtuelle dédiée à chaque répertoire de code. L’utilisateur ouvre un terminal, se place dans le dossier du projet puis exécute
devvm. Le programme affiche la configuration proposée, demande confirmation et crée la VM ou permet de la personnaliser. Une fois la VM démarrée, le prompt indique (devvm) et l’agent de codage peut être lancé directement à l’intérieur.Architecture et isolation
Le système repose sur Lima, qui utilise le framework de virtualisation d’Apple sous macOS et QEMU sous Linux. Les images de base sont construites une première fois, puis dupliquées pour chaque nouveau projet, ce qui limite le temps de démarrage à quelques secondes. Chaque VM monte le répertoire du projet au même chemin, mais l’accès au reste du système de fichiers est restreint à un répertoire en lecture‑seule, à l’exception du magasin de paramètres de devvm. Sur macOS, les hooks et la configuration de .git sont verrouillés, empêchant toute modification depuis la VM.
Le réseau est segmenté par « tiers » : par défaut, une liste blanche d’hôtes est autorisée via un proxy local. L’utilisateur peut choisir les niveaux internet, open ou none. Les ports exposés dans la VM sont automatiquement redirigés vers le même port sur l’hôte, ce qui rend les serveurs de développement accessibles sans configuration supplémentaire.
Gestion des toolchains et agents
devvm sélectionne automatiquement les toolchains (Docker, Nix, desktop) nécessaires aux fichiers du projet. L’option --tools permet d’ajouter des toolchains supplémentaires. Les agents de codage – Claude Code, Codex et opencode – s’exécutent dans la VM, isolant leurs éventuelles compromissions. Les secrets de ces agents (tokens, identifiants) restent sur la machine hôte : la VM reçoit des placeholders et le proxy de devvm injecte les valeurs réelles lors des requêtes sortantes.
Les couches personnalisées (layers) sont des scripts d’installation intégrés dans l’image. Par exemple,
devvm layer new mailpit crée une couche qui démarre le service Mailpit, puis devvm --layers mailpit applique cette couche à toute nouvelle VM. Le paramètre --from accepte une image de conteneur externe (node:24, image interne d’équipe) comme base, et le support du fichier devcontainer.json permet de reproduire la configuration d’un devcontainer existant.Déploiement et limites
devvm fonctionne sur macOS et Linux, architectures arm64 et x86_64. L’installation se fait via Homebrew, qui ajoute Lima et, sous Linux, QEMU ainsi que l’accès à /dev/kvm. La documentation indique les limites connues, notamment l’absence de protection .git sur les hôtes Linux. Le projet est publié sous licence MIT, ce qui facilite l’audit et l’adaptation interne.