Volver a actualizaciones
Nuevo releaseSep 13, 2026

smolvm v1.15.0

Una máquina virtual embebible, portátil y ramificable para ejecutar Agentes de forma segura localmente.

Compartir

smol machines

Discord Release License npm PyPI crates.io

smolvm

microVMs ramificables para agentes de IA. Incrusta máquinas virtuales ligeras en tu software, entornos de desarrollo portátiles y sandboxing local.

Instalación

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

Windows: descomprime el release windows-x86_64 y ejecuta smolvm.exe (necesita la Windows Hypervisor Platform). Agentes de programación: ejecuta smolvm --help tras instalar para descubrir todos los comandos.

Inicio Rápido

smolvm machine run --net --image alpine -- uname -a          # VM puntual, eliminada al salir
smolvm machine run --net -it --image alpine -- /bin/sh       # shell interactivo

Local

VMs reales con su propio kernel, gratis en tu portátil o en tus propios servidores. Arrancan en menos de un segundo, y la memoria es elástica, así que el host solo compromete lo que usa el invitado. Las máquinas persisten entre reinicios, y cualquier imagen OCI funciona, incluidas las que construyes 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    # imagen local, sin registry

Declara una máquina en un Smolfile: imagen, recursos, puertos, montajes y política de red en un único archivo versionado.

Embebible

Controla máquinas desde tu propio código con una única API Machine. Los SDKs se ejecutan en tu proceso sin daemon, localmente o en 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();

Código fuente y documentación: smol-machines/smol · smolmachines.com/docs/sdk

Ramificable

Guarda una máquina en ejecución a mitad de ejecución, rebobínala, o ramifícala en copias que siguen ejecutándose desde el mismo punto. Los checkpoints capturan la RAM, el estado de la CPU y los discos; las ramas son hijos copy-on-write de una máquina en vivo.

smolvm machine create --net --name agent --image alpine
smolvm machine start --name agent --branchable
smolvm machine branch --from agent --name try-1                   # hijo copy-on-write en vivo
smolvm machine checkpoint --name agent -o agent.checkpoint        # guárdala, procesos y todo
smolvm machine create --name agent2 --from agent.checkpoint       # reanuda después o en otro lugar

Rebobina a una generación anterior con --from <checkpoint> --at '~N' (ver machine checkpoint-log), y detente sin perder la ejecución con pausa y reanudación. Más en Ramificación y checkpoints incrementales.

Portable

Empaqueta una máquina, sin importar cómo la configures, en un único archivo .smolmachine. Súbela a cualquier registry OCI, o ejecútala como un ejecutable autocontenido que arranca en menos de 200 ms sin nada que instalar.

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

Los checkpoints también son portables: restaura uno en otro host o en smol cloud.

Seguro

Cada carga de trabajo obtiene una VM aislada por hardware con su propio kernel. La red está desactivada por defecto, la salida puede limitarse a hosts nombrados, y el código puede usar una credencial sin leerla nunca.

La seguridad es una responsabilidad compartida. smolvm proporciona el límite: una VM y un kernel separados para cada carga de trabajo, sin que nada llegue al host a menos que lo permitas. Tú decides qué cruza ese límite. Cada carpeta que montas, puerto que abres, host que permites, y secreto o agente SSH que reenvías se convierte en algo que la carga de trabajo puede usar, así que da a una carga de trabajo no confiable solo lo que necesita.

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

Ver sustitución de credenciales y el modelo de seguridad. Usa --allow-host-pattern '*.example.com' para permitir solo subdominios. El antiguo --allow-host example.com sigue permitiendo tanto el dominio raíz como los subdominios. La lista de permitidos de una máquina detenida puede modificarse con smolvm machine update (--allow-host, --allow-host-pattern, --allow-cidr y sus formas --remove-).

Cómo Funciona

Cada carga de trabajo se ejecuta en una VM virtualizada por hardware con su propio kernel invitado sobre Hypervisor.framework (macOS), KVM (Linux), o la Windows Hypervisor Platform (Windows). libkrun es el VMM y libkrunfw proporciona el kernel invitado. Las imágenes usan el formato OCI, así que cualquier cosa en Docker Hub, ghcr.io u otro registry arranca como microVM, sin daemon de Docker.

Valores por defecto: 4 vCPUs, 8 GiB de RAM. La memoria es elástica mediante virtio balloon y las vCPUs inactivas duermen en el hipervisor, así que el sobredimensionamiento casi no cuesta nada. Sobrescribe con --cpus y --mem.

Comparación

Categorías