Sobre o projeto
smolvm permite gerenciar e executar máquinas virtuais Linux personalizadas localmente usando virtualização por hardware (Hypervisor.framework no macOS, KVM no Linux, Windows Hypervisor Platform no Windows). É construído sobre libkrun como VMM e libkrunfw para o kernel do guest, com cada workload recebendo sua própria VM e kernel de guest para isolamento forte.
As principais capacidades incluem:
- MicroVMs rápidas e multiplataforma com inicializações a frio abaixo de 200ms, memória elástica via virtio balloon e threads de vCPU ociosas que dormem no hypervisor.
- Smolfile: um arquivo de declaração TOML (semelhante a um Dockerfile, mas para uma VM inteira) especificando imagem, recursos, política de rede, montagens, portas e comandos de setup. Chaves desconhecidas são rejeitadas no momento da criação.
- Ramificação de VM: forks copy-on-write ao vivo de uma máquina em execução que retomam com os processos, memória e disco da origem. Suporta ramificação em lote com fan-out, sinalização de worker pronto e slots de pool mantidos.
- Artefatos portáteis: empacote uma VM parada em um único arquivo .smolmachine que pode ser enviado para qualquer registry OCI e reidratado em qualquer plataforma suportada sem dependências.
- Sandboxing: a rede é desativada por padrão; a saída pode ser restrita a hosts permitidos específicos. Sistema de arquivos do host, rede e credenciais são separados por uma fronteira de hypervisor.
- Encaminhamento de agente SSH: o guest pode usar chaves SSH do host para git e SSH sem que o material da chave privada seja copiado para a VM.
- Imagens de contêiner locais: inicialize a partir de arquivos docker save / podman save, pipes stdin ou diretórios rootfs descompactados sem um daemon Docker.
- Máquinas de desenvolvimento persistentes: crie, pare, inicie e execute comandos em máquinas com pacotes instalados sobrevivendo a reinicializações. Montagens de diretórios do host propagam eventos inotify para hot reload.
- Integração com Kubernetes: fornece um shim containerd v2 para que pods sejam executados como microVMs via RuntimeClass.
- Aceleração de GPU: expõe a GPU do host via virtio-gpu / Venus (Vulkan-over-virtio) no macOS e Linux. O remoting da API CUDA (--cuda) encaminha chamadas CUDA via vsock para o driver NVIDIA do host sem passthrough de GPU.
- Checkpointing: salve o estado da VM como um artefato durável .smolcheckpoint para restauração posterior. Um crate Rust (smolvm-checkpoint) fornece armazenamento incremental e exportação portátil sem depender do runtime da VM.
Os recursos padrão são 4 vCPUs e 8 GiB de RAM, substituíveis via flags ou Smolfile. O modelo de segurança trata o root do guest como não confiável, com capacidades explicitamente encaminhadas (montagens, rede, portas, agente SSH) tornando-se parte da autoridade do workload. O projeto é licenciado sob Apache-2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.