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.