Retour aux mises à jour
New releaseOct 17, 2026

smolvm v1.30.1

Une machine virtuelle intégrable, portable et ramifiable pour exécuter des Agents en toute sécurité en local.

Partager

smol machines

Discord Release License npm PyPI crates.io

smolvm

MicroVM ramifiables pour agents IA. Intégrez des machines virtuelles légères dans vos logiciels, des environnements de développement portables et du bac à sable local.

Installation

brew install smol-machines/tap/smolvm                  # macOS (Homebrew)
curl -sSL https://smolmachines.com/install.sh | bash   # macOS + Linux

Windows : décompressez la release windows-x86_64 et exécutez smolvm.exe (nécessite la Windows Hypervisor Platform). Agents de codage : exécutez smolvm --help après l'installation pour découvrir toutes les commandes.

La documentation destinée aux humains et aux agents se trouve dans docs/, un dossier par tâche : un README.md contenant les faits et un SKILL.md qu'un agent peut suivre, avec ses scripts, à côté de la page de référence de chaque fonctionnalité.

Démarrage rapide

smolvm machine run --net --image alpine -- uname -a          # one-off VM, removed on exit
smolvm machine run --net -it --image alpine -- /bin/sh       # interactive shell

Local

De vraies VM avec leur propre noyau, gratuites sur votre ordinateur portable ou vos propres serveurs. Elles démarrent en moins d'une seconde, et la mémoire est élastique, de sorte que l'hôte ne réserve que ce que l'invité utilise. Les machines persistent à travers les redémarrages, et n'importe quelle image OCI fonctionne, y compris celles que vous construisez localement.

smolvm machine create --net --name dev && smolvm machine start --name dev
smolvm machine exec --name dev -- apk add git
docker save myapp | smolvm machine run --image - -- ./app    # local image, no registry

Déclarez une machine dans un Smolfile : image, ressources, ports, montages et politique réseau dans un seul fichier versionné.

Intégrable

Pilotez des machines depuis votre propre code avec une seule API Machine. Les SDK s'exécutent dans votre processus sans démon, en local ou sur smol cloud.

npm install smolmachines     # Node / TypeScript
pip install smolmachines     # Python
cargo add smolmachines       # Rust
import { Machine } from 'smolmachines';

const m = await Machine.create({ image: 'python:3.12-alpine', network: true });
const r = await m.exec(['python3', '-c', 'print(2 ** 10)']);
console.log(r.stdout); // 1024
await m.delete();

Source et docs : smol-machines/smol · smolmachines.com/docs/sdk

Branchable

Sauvegardez une machine en cours d'exécution en pleine exécution, rembobinez-la, ou créez-en des branches sous forme de copies qui continuent de s'exécuter à partir du même point. Les points de contrôle capturent la RAM, l'état du CPU et les disques ; les branches sont des enfants copy-on-write d'une machine active.

smolvm machine create --net --name agent --image alpine
smolvm machine start --name agent --branchable
smolvm machine branch --from agent --name try-1                   # live copy-on-write child
smolvm machine checkpoint --name agent -o agent.checkpoint        # save it, processes and all
smolvm machine create --name agent2 --from agent.checkpoint       # resume later or elsewhere

Revenez à une génération antérieure avec --from <checkpoint> --at '~N' (voir machine checkpoint-log), et arrêtez-vous sans perdre l'exécution avec pause and resume. Un checkpoint pris sur un Mac arm64 reprend sur Linux arm64, voir Moving a running machine from a Mac to Linux. Plus dans Branching et incremental checkpoints.

Portable

Empaquetez une machine, quelle que soit sa configuration, dans un seul fichier .smolmachine. Poussez-le vers n'importe quel registre OCI, ou exécutez-le comme un exécutable autonome qui démarre en moins de 200 ms sans rien à installer.

smolvm machine stop --name dev && smolvm pack create --from-vm dev -o dev
smolvm pack push --file dev.smolmachine ghcr.io/you/dev:v1
smolvm pack create --image python:3.12-alpine -o ./python312
./python312 run -- python3 --version

Les points de contrôle sont également portables : restaurez-en un sur un autre hôte ou sur smol cloud.

Sécurité

Chaque charge de travail dispose d'une VM isolée au niveau matériel avec son propre noyau. Le réseau est désactivé par défaut, la sortie peut être limitée à des hôtes nommés, et le code peut utiliser un identifiant sans jamais le lire.

La sécurité est une responsabilité partagée. smolvm fournit la frontière : une VM et un noyau distincts pour chaque charge de travail, rien n'atteignant l'hôte sauf si vous l'autorisez. C'est vous qui décidez ce qui franchit cette frontière. Chaque dossier que vous montez, port que vous ouvrez, hôte que vous autorisez, et secret ou agent SSH que vous transmettez devient quelque chose que la charge de travail peut utiliser ; ne donnez donc à une charge de travail non fiable que ce dont elle a besoin.

smolvm machine run --net --image alpine --allow-host registry.npmjs.org -- wget -qO- https://google.com   # blocked
smolvm machine run --net --image alpine --allow-host-pattern registry.npmjs.org -- wget -qO- https://registry.npmjs.org   # exact host only
NOTION_API_KEY=secret_… smolvm machine run --net --image alpine \
  --credential [email protected] -- sh -c 'echo $NOTION_API_KEY'   # a placeholder

Voir substitution des identifiants et le modèle de sécurité. Utilisez --allow-host-pattern '*.example.com' pour autoriser uniquement les sous-domaines ; --allow-host example.com autorise le domaine apex et ses sous-domaines. smolvm machine update ajoute (--allow-host, --allow-host-pattern, --allow-cidr) et supprime (--remove-allow-host, un hôte ou un motif tel qu'il a été ajouté ; --remove-allow-cidr) des entrées, y compris sur une machine en cours d'exécution démarrée avec une liste d'autorisation : une autorisation s'applique à la prochaine connexion ou résolution, et les adresses apprises d'un hôte supprimé disparaissent avec lui.

Comment ça marche

Catégories