Torna agli aggiornamenti
New releaseSep 13, 2026

smolvm v1.15.0

Una macchina virtuale incorporabile, portatile e ramificabile per eseguire in sicurezza gli Agenti in locale.

Condividi

smol machines

Discord Release License npm PyPI crates.io

smolvm

microVM diramabili per agenti AI. Integra macchine virtuali leggere nel tuo software, ambienti di sviluppo portatili e sandboxing locale.

Installazione

curl -sSL https://smolmachines.com/install.sh | bash   # macOS + Linux

Windows: decomprimi la release windows-x86_64 ed esegui smolvm.exe (richiede la Windows Hypervisor Platform). Agenti di coding: esegui smolvm --help dopo l'installazione per scoprire tutti i comandi.

Avvio Rapido

smolvm machine run --net --image alpine -- uname -a          # VM usa e getta, rimossa all'uscita
smolvm machine run --net -it --image alpine -- /bin/sh       # shell interattiva

Locale

VM reali con kernel proprio, gratuite sul tuo laptop o sui tuoi server. Si avviano in meno di un secondo e la memoria è elastica, quindi l'host impegna solo ciò che il guest utilizza. Le macchine persistono tra i riavvii e qualsiasi immagine OCI funziona, incluse quelle che costruisci localmente.

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    # immagine locale, nessun registry

Dichiara una macchina in un Smolfile: immagine, risorse, porte, mount e policy di rete in un unico file versionato.

Integrabile

Pilota le macchine dal tuo codice con una sola API Machine. Gli SDK girano nel tuo processo senza daemon, in locale o su 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();

Sorgenti e documentazione: smol-machines/smol · smolmachines.com/docs/sdk

Diramabile

Salva una macchina in esecuzione a metà esecuzione, riavvolgila o diramala in copie che continuano a girare dallo stesso punto. I checkpoint catturano RAM, stato della CPU e dischi; i rami sono figli copy-on-write di una macchina viva.

smolvm machine create --net --name agent --image alpine
smolvm machine start --name agent --branchable
smolvm machine branch --from agent --name try-1                   # figlio copy-on-write live
smolvm machine checkpoint --name agent -o agent.checkpoint        # salvala, processi inclusi
smolvm machine create --name agent2 --from agent.checkpoint       # riprendi dopo o altrove

Riavvolgi a una generazione precedente con --from <checkpoint> --at '~N' (vedi machine checkpoint-log) e fermati senza perdere l'esecuzione con pause e resume. Altro in Branching e checkpoint incrementali.

Portabile

Impacchetta una macchina, comunque tu l'abbia configurata, in un singolo file .smolmachine. Pubblicala su qualsiasi registry OCI, oppure eseguila come eseguibile autonomo che si avvia in meno di 200 ms senza nulla da installare.

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

Anche i checkpoint sono portabili: ripristinane uno su un altro host o su smol cloud.

Sicuro

Ogni workload riceve una VM isolata a livello hardware con kernel proprio. La rete è disattivata per impostazione predefinita, l'egress può essere limitato a host specifici e il codice può usare una credenziale senza mai leggerla.

La sicurezza è una responsabilità condivisa. smolvm fornisce il confine: una VM e un kernel separati per ogni workload, senza nulla che raggiunga l'host se non lo consenti. Sei tu a decidere cosa attraversa quel confine. Ogni cartella che monti, porta che apri, host che autorizzi e segreto o SSH agent che inoltri diventa qualcosa che il workload può usare, quindi concedi a un workload non attendibile solo ciò di cui ha bisogno.

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

Vedi sostituzione delle credenziali e il modello di sicurezza. Usa --allow-host-pattern '*.example.com' per consentire solo i sottodomini. Il vecchio --allow-host example.com continua a consentire sia l'apex che i sottodomini. La allow list di una macchina ferma può essere modificata con smolvm machine update (--allow-host, --allow-host-pattern, --allow-cidr e le loro forme --remove-).

Come Funziona

Ogni workload gira in una VM virtualizzata a livello hardware con kernel guest proprio su Hypervisor.framework (macOS), KVM (Linux) o la Windows Hypervisor Platform (Windows). libkrun è il VMM e libkrunfw fornisce il kernel guest. Le immagini usano il formato OCI, quindi qualsiasi cosa su Docker Hub, ghcr.io o un altro registry si avvia come microVM, senza daemon Docker.

Valori predefiniti: 4 vCPU, 8 GiB di RAM. La memoria è elastica tramite virtio balloon e le vCPU inattive dormono nell'hypervisor, quindi il sovradimensionamento costa quasi nulla. Sovrascrivi con --cpus e --mem.

Confronto

Categorie