返回更新列表
新发布Oct 17, 2026

smolvm v1.30.1

一个可嵌入、可移植、可分支的虚拟机,用于在本地安全运行 Agents。

分享

smol machines

Discord Release License npm PyPI crates.io

smolvm

面向 AI 智能体的可分支 microVM。 将轻量级虚拟机嵌入你的软件、便携式开发环境和本地沙箱中。

安装

brew install smol-machines/tap/smolvm                  # macOS (Homebrew)
curl -sSL https://smolmachines.com/install.sh | bash   # macOS + Linux

Windows:解压 windows-x86_64 release 并运行 smolvm.exe(需要 Windows Hypervisor Platform)。编码代理:安装后运行 smolvm --help 以了解所有命令。

面向人类和代理的文档位于 docs/,每个任务一个文件夹:一个包含事实的 README.md 和一个代理可以遵循的 SKILL.md,以及其脚本,紧邻每个功能的参考页面。

快速开始

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

本地

真正的虚拟机,拥有自己的内核,可在你的笔记本电脑或你自己的服务器上免费使用。它们在一秒内启动,内存是弹性的,因此宿主机只提交客户机实际使用的部分。机器在重启后仍然保留,任何 OCI 镜像都可以使用,包括你在本地构建的镜像。

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

在 Smolfile 中声明一台机器:将镜像、资源、端口、挂载和网络策略放在一个已检入的文件中。

可嵌入

使用一个 Machine API 从你自己的代码中驱动机器。这些 SDK 在你的进程中运行,无需守护进程,既可在本地运行,也可在 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();

源码与文档:smol-machines/smol · smolmachines.com/docs/sdk

Branchable

在执行过程中保存正在运行的机器、将其回退,或将其分支为从同一时间点继续运行的多个副本。检查点会捕获 RAM、CPU 状态和磁盘;分支是活动机器的写时复制子级。

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

使用 --from <checkpoint> --at '~N' 回退到更早的世代(参见 machine checkpoint-log),并通过暂停与恢复在不丢失执行状态的情况下停止。在 arm64 Mac 上创建的检查点可在 arm64 Linux 上恢复,参见将运行中的机器从 Mac 迁移到 Linux。更多内容见分支和增量检查点。

可移植

无论你如何配置一台机器,都可以将其打包为单个 .smolmachine 文件。将其推送到任意 OCI 仓库,或将其作为自包含可执行文件运行,无需安装任何东西即可在 200 毫秒内启动。

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

检查点同样可移植:可在另一台主机或 smol 云上恢复。

安全

每个工作负载都会获得一个硬件隔离的 VM,并拥有自己的内核。网络默认关闭,出站流量可限制为仅允许指定的主机,代码可以使用凭据而无需读取凭据本身。

安全是共同的责任。smolvm 提供边界:每个工作负载都有独立的 VM 和内核,除非你允许,否则任何内容都无法到达宿主机。由你决定什么可以跨越该边界。你挂载的每个文件夹、打开的每个端口、允许的每个主机,以及转发的每个密钥或 SSH agent,都会成为工作负载可以使用的东西,因此对于不受信任的工作负载,只应提供它所需的内容。

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

参见凭据替换和安全模型。 使用 --allow-host-pattern '*.example.com' 仅允许子域名;--allow-host example.com 允许顶级域名及其 子域名。smolvm machine update 可添加(--allow-host、--allow-host-pattern、--allow-cidr)和移除 (--remove-allow-host,按添加时的原样指定主机或模式;--remove-allow-cidr)条目,对以允许列表启动的 运行中机器同样适用:授权在下次连接或查询时生效,被移除主机的已学习地址也会随之移除。

工作原理

每个工作负载都在硬件虚拟化的 VM 中运行,拥有自己的客户机内核,基于 Hypervisor.framework(macOS)、KVM(Linux)或 Windows Hypervisor Platform(Windows)。libkrun 是 VMM,libkrunfw 提供客户机内核。镜像使用 OCI 格式,因此 Docker Hub、ghcr.io 或其他注册表上的任何内容都能作为 microVM 启动,无需 Docker 守护进程。

默认值:4 个 vCPU,8 GiB 内存。内存通过 virtio balloon 弹性伸缩,空闲 vCPU 在 hypervisor 中休眠,因此超额配置几乎不产生开销。可通过 --cpus 和 --mem 覆盖。

对比

smolvm容器ColimaQEMUFirecrackerKata
工作负载边界VM + 客户机内核命名空间 + 共享内核共享 VM 内的命名空间VM + 客户机内核VM + 客户机内核每容器一个 VM
启动时间<200ms 至 agent 就绪~100ms~数秒~15-30s<125ms~500ms
架构库(libkrun)守护进程守护进程(在 VM 内)进程进程运行时栈
每工作负载 VM是否否(共享)是是是
macOS 原生是通过 Docker VM是(krunkit)是否否
可嵌入 SDK是否否否否否
可移植产物.smolmachine镜像(需要守护进程)否否否否

平台支持

主机客户机要求
macOS Apple Siliconarm64 LinuxmacOS 11+
macOS Intelx86_64 Linux未发布构建版本;未测试
Linux x86_64x86_64 LinuxKVM(/dev/kvm)
Linux aarch64aarch64 LinuxKVM(/dev/kvm)
Windows x86_64x86_64 Linux已启用 Windows Hypervisor Platform(WHP)

Windows 支持可移植检查点、暂停/恢复,以及使用 --freeze-source 的分支。GPU 加速仍不可用;参见已知限制。

更多

  • Kubernetes:通过 RuntimeClass 将 Pod 作为 microVM 运行。
  • GPU 与 CUDA:通过 virtio-gpu / Venus 使用 Vulkan,以及 CUDA API 远程调用。
  • 示例:python、node、docker-in-vm、local-llm、headless-browser、doom。
  • 开发 · 用户文档位于 smolmachines.com/docs,以 smol-machines/docs 编写(欢迎在那里提交更正;运行时缺陷请留在此处)。

分类