
smolvm v1.30.1
Uma máquina virtual incorporável, portátil e ramificável para executar Agentes localmente com segurança.
smolvm
microVMs ramificáveis para agentes de IA. Incorpore máquinas virtuais leves em seu software, ambientes de desenvolvimento portáteis e sandboxing local.
Instalação
brew install smol-machines/tap/smolvm # macOS (Homebrew)
curl -sSL https://smolmachines.com/install.sh | bash # macOS + Linux
Windows: descompacte o windows-x86_64 release e execute smolvm.exe (requer a Windows Hypervisor Platform). Agentes de programação: execute smolvm --help após a instalação para descobrir todos os comandos.
A documentação para humanos e agentes está em docs/, uma pasta por tarefa: um README.md com os fatos e um SKILL.md que um agente pode seguir, com seus scripts, ao lado da página de referência de cada recurso.
Quick Start
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
VMs reais com seu próprio kernel, 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ó aloca o que o guest utiliza. 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 # local image, no registry
Declare uma máquina num Smolfile: imagem, recursos, portas, montagens e política de rede num único ficheiro versionado.
Embutível
Controle máquinas a partir do seu próprio código com uma única API Machine. Os SDKs são executados no seu processo sem daemon, localmente ou na 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();
Origem e documentação: smol-machines/smol · smolmachines.com/docs/sdk
Branchable
Salve uma máquina em execução no meio da execução, rebobine-a ou ramifique-a em cópias que continuam a ser executadas a partir do mesmo ponto. Os checkpoints capturam a RAM, o estado da CPU e os discos; os branches são filhos copy-on-write de uma máquina em execução.
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
Retroceda para uma geração anterior com --from <checkpoint> --at '~N' (consulte machine checkpoint-log) e pare sem perder a execução com pausar e retomar. Um checkpoint criado num Mac arm64 é retomado num Linux arm64; consulte Mover uma máquina em execução de um Mac para Linux. Mais em Ramificação e checkpoints incrementais.
Portátil
Empacote uma máquina, independentemente de como a configurou, num único ficheiro .smolmachine. Envie-a para qualquer registo OCI ou execute-a como um executável autónomo que arranca 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
Os checkpoints também são portáveis: restaure um em outro host ou na smol cloud.
Seguro
Cada workload recebe uma VM isolada por hardware com seu próprio kernel. 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 o limite: uma VM e um kernel separados para cada workload, sem nada chegando ao host a menos que você permita. Você decide o que cruza esse limite. 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 forneça 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 # 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
Consulte substituição de credenciais e o modelo de segurança.
Use --allow-host-pattern '*.example.com' para permitir apenas subdomínios; --allow-host example.com permite o domínio apex e
seus subdomínios. smolvm machine update adiciona (--allow-host, --allow-host-pattern, --allow-cidr) e remove
(--remove-allow-host, um host ou padrão conforme foi adicionado; --remove-allow-cidr) entradas, também em uma máquina em execução
iniciada com uma lista de permissões: uma concessão se aplica à próxima conexão ou consulta, e os endereços aprendidos de um host removido vão junto com ele.