Voltar às atualizações
New releaseAug 30, 2026

smolvm v1.8.3

Máquina virtual portátil, leve e autossuficiente.

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