Voltar às atualizações
New releaseSep 13, 2026

smolvm v1.15.0

Uma máquina virtual incorporável, portátil e ramificável para executar Agentes localmente com segurança.

Compartilhar

smol machines

Discord Release License npm PyPI crates.io

smolvm

microVMs ramificáveis para agentes de IA. Incorpore máquinas virtuais leves no seu software, ambientes de desenvolvimento portáteis e sandboxing local.

Instalação

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

Windows: descompacte o release windows-x86_64 e execute smolvm.exe (requer a Windows Hypervisor Platform). Agentes de codificação: execute smolvm --help após a instalação para descobrir todos os comandos.

Início Rápido

smolvm machine run --net --image alpine -- uname -a          # VM descartável, removida ao sair
smolvm machine run --net -it --image alpine -- /bin/sh       # shell interativo

Local

VMs reais com kernel próprio, gratuitas no seu laptop ou nos seus próprios servidores. Elas inicializam em menos de um segundo, e a memória é elástica, então o host só compromete o que o guest usa. As máquinas persistem entre reinicializações, e qualquer imagem OCI funciona, incluindo as que você constrói 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    # imagem local, sem registry

Declare uma máquina em um Smolfile: imagem, recursos, portas, montagens e política de rede em um único arquivo versionado.

Incorporável

Controle máquinas a partir do seu próprio código com uma única API Machine. Os SDKs rodam no seu processo sem daemon, localmente ou no 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-fonte e documentação: smol-machines/smol · smolmachines.com/docs/sdk

Ramificável

Salve uma máquina em execução no meio da execução, rebobine-a, ou ramifique-a em cópias que continuam rodando a partir do mesmo ponto. Checkpoints capturam RAM, estado da CPU e discos; ramificações são filhos copy-on-write de uma máquina ativa.

smolvm machine create --net --name agent --image alpine
smolvm machine start --name agent --branchable
smolvm machine branch --from agent --name try-1                   # filho copy-on-write ativo
smolvm machine checkpoint --name agent -o agent.checkpoint        # salve-o, processos e tudo
smolvm machine create --name agent2 --from agent.checkpoint       # retome depois ou em outro lugar

Rebobine para uma geração anterior com --from <checkpoint> --at '~N' (veja machine checkpoint-log), e pare sem perder a execução com pause e resume. Mais em Branching e checkpoints incrementais.

Portátil

Empacote uma máquina, independentemente de como você a configurou, em um único arquivo .smolmachine. Envie-o para qualquer registry OCI, ou execute-o como um executável autocontido que inicializa em menos de 200 ms sem nada para 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

Checkpoints também são portáteis: restaure um em outro host ou no smol cloud.

Seguro

Cada workload recebe uma VM com isolamento de hardware e kernel próprio. A rede fica desativada por padrão, a saída pode ser limitada a hosts nomeados, e o código pode usar uma credencial sem nunca lê-la.

A segurança é uma responsabilidade compartilhada. O smolvm fornece a fronteira: uma VM e um kernel separados para cada workload, sem nada alcançar o host a menos que você permita. Você decide o que cruza essa fronteira. Cada pasta que você monta, porta que você abre, host que você permite, e segredo ou agente SSH que você encaminha torna-se algo que o workload pode usar, então dê a um workload não confiável apenas o que ele precisa.

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   # apenas o host exato
NOTION_API_KEY=secret_… smolvm machine run --net --image alpine \
  --credential [email protected] -- sh -c 'echo $NOTION_API_KEY'   # um placeholder

Veja substituição de credenciais e o modelo de segurança. Use --allow-host-pattern '*.example.com' para permitir apenas subdomínios. O mais antigo --allow-host example.com continua permitindo tanto o domínio raiz quanto os subdomínios. A lista de permissões de uma máquina parada pode ser alterada com smolvm machine update (--allow-host, --allow-host-pattern, --allow-cidr e suas formas --remove-).

Como Funciona

Cada workload roda em uma VM com virtualização de hardware e kernel guest próprio no Hypervisor.framework (macOS), KVM (Linux), ou na Windows Hypervisor Platform (Windows). O libkrun é o VMM e o libkrunfw fornece o kernel guest. As imagens usam o formato OCI, então qualquer coisa no Docker Hub, ghcr.io ou outro registry inicializa como microVM, sem daemon Docker.

Padrões: 4 vCPUs, 8 GiB de RAM. A memória é elástica via virtio balloon e vCPUs ociosas dormem no hypervisor, então o superprovisionamento custa quase nada. Substitua com --cpus e --mem.

Comparação

Categorias