smol-machines/smolvm
An embeddable, portable, branchable virtual machine to safely run Agents locally.
smol‑machines / smolvm – 可分支的微型虚拟机,专为 AI 智能体打造
它是什么 – smolvm 是一个开源运行时,可让你从任何 OCI 容器镜像快速启动小型硬件虚拟化机器(微型虚拟机)。它基于 libkrun VMM 和自定义客户机内核(libkrunfw)构建,可在 macOS(Hypervisor.framework)、Linux(KVM)和 Windows(Hypervisor Platform)上运行。对于 AI 开发者来说,关键卖点是每个智能体都可以隔离在自己的虚拟机中,启动时间不到 200 毫秒,内存弹性可调,并且能够检查点、回滚和分支正在运行的虚拟机——这对于可重现的实验、沙箱化不受信任的代码或持久化智能体状态非常有用。
如何使用
- 通过 Homebrew、脚本或 Windows zip 安装。
- CLI(
smolvm machine …)可创建、启动、执行命令并打包虚拟机。示例:smolvm machine run --net --image alpine -- uname -a。 - 在 Smolfile 中声明式定义虚拟机(镜像、资源、端口、挂载、网络策略)。
- 通过 Node/TS、Python 和 Rust 的 SDK 将运行时嵌入到你自己的代码中——一个
Machine对象即可创建虚拟机、运行命令并删除它,无需后台守护进程。
主要特性
| 特性 | 对 AI/ML 工作负载的重要性 |
|---|---|
| 可分支 / 可检查点 | 冻结正在运行的智能体,进行写时复制分支,或回滚到之前的状态——非常适合调试或重现模型的推理路径。 |
可移植的 .smolmachine 工件 |
将虚拟机(包括其状态)打包到单个文件中,推送到 OCI 注册表,或作为自包含可执行文件在另一台主机上运行。 |
| 硬件隔离 | 每个虚拟机都有自己的内核;默认关闭网络,你可以安全地白名单主机或转发凭据。 |
| 快速启动和弹性内存 | 启动时间不到 200 毫秒;通过 virtio balloon 按需分配内存,因此许多智能体可以共存于一台笔记本电脑上。 |
| 可嵌入的 SDK | 无需单独的守护进程即可从 Python、Node 或 Rust 直接访问 API,便于集成到智能体框架或编排工具中。 |
| Kubernetes RuntimeClass | 将 Pod 作为微型虚拟机运行,用于云原生 AI 工作负载。 |
| GPU 支持路线图 | 通过 virtio-gpu 的 Vulkan 和 CUDA 远程调用已有文档,但尚未准备好用于生产环境。 |
AI 智能体的典型工作流程
- 创建 一个基于 Python 或 CUDA 镜像的虚拟机:
smolvm machine create --name agent --image python:3.12-alpine。 - 启动 它并启用分支功能:
smolvm machine start --name agent --branchable。 - 运行 其中的推理代码:
smolvm machine exec --name agent -- python infer.py。 - 在关键步骤后检查点:
smolvm machine checkpoint --name agent -o step1.chk。 - 分支 以尝试替代提示,而无需重新初始化整个环境。
- 打包 最终状态以进行分发:
smolvm pack create --from-vm agent -o agent.smolmachine。
安全模型 – 虚拟机隔离工作负载;你明确授予主机文件夹挂载、网络主机或凭据转发权限。除非你允许,否则不受信任的代码永远不会接触主机文件系统,从而降低第三方模型或工具的供应链风险。
限制 – Windows 上尚不支持 GPU 加速,并且运行时依赖于特定平台的虚拟机监控程序。它不是容器运行时;你需要 OCI 镜像,但不需要 Docker 守护进程。
了解更多 – 文档位于 https://smolmachines.com/docs,还有 SDK 参考和示例项目(Python、Node、Docker-in-VM、本地 LLM、无头浏览器、Doom)。源代码位于 smol-machines/smol 仓库中;此仓库包含运行时本身。
许可证:Apache-2.0
相关
- 项目
- Dispatch
- 项目
- 项目
- 项目