亚秒级启动的微型虚拟机,打包成单文件随处运行
在本地跑一段陌生代码,你敢直接执行吗?容器虽然隔离,但内核是共享的,逃逸风险始终存在。smolvm 给每个任务分配一个真正的虚拟机,硬件级隔离,冷启动不到 200 毫秒,还能把整个环境打包成一个 .smolmachine 文件,换台机器直接跑。
能做什么
每个虚拟机都有独立的 Linux 内核,跑在 macOS 的 Hypervisor.framework 或 Linux 的 KVM 上。宿主机的文件系统、网络、凭据都被 hypervisor 边界隔开,逃逸难度比容器高几个数量级。
网络默认关闭,需要时才开启。可以指定白名单主机,只允许访问特定域名,其他请求一律拒绝。跑第三方脚本时,它没法偷偷往外传数据。
SSH Agent 可以安全转发进虚拟机,私钥永远不进入 guest 系统。hypervisor 强制执行这个边界,虚拟机里的代码能用你的密钥认证,但没法把密钥文件读出来。
内存是弹性的,默认配 8GB,但宿主机只提交 guest 实际使用的部分。vCPU 线程空闲时在 hypervisor 里休眠,多开几个虚拟机几乎不占资源。
什么时候用
下载了一个来路不明的脚本,想跑又怕它干坏事。用 smolvm 开一个隔离虚拟机,网络关掉,跑完就销毁,宿主机不受影响。
要把一个 Python 项目交付给客户,对方环境千奇百怪。用 smolvm 打包成单个可执行文件,客户双击就能跑,不用装 Python、不用配环境、不用担心版本冲突。
开发时需要访问内网 Git 仓库,又不想把 SSH 私钥放进容器或云环境。把 SSH Agent 转发进虚拟机,密钥留在本地,虚拟机里正常 git clone。
团队需要一套标准化的开发环境,每个人的机器配置都不一样。写一个 Smolfile 定义镜像、网络规则、初始化脚本,团队成员一条命令就能拉起一模一样的环境。
谁适合用
经常需要运行第三方代码的开发者,比如处理用户上传的脚本、测试开源项目、跑 CI 任务。硬件级隔离比容器更安全,不用担心里面藏着什么后门。
需要交付可移植软件包的团队,把整个运行环境打包成单文件,客户拿到就能用,省去环境配置的扯皮时间。
对安全敏感的场景,比如处理敏感数据、访问内网资源、管理生产环境凭证。虚拟机隔离加上网络白名单,攻击面比容器小得多。
https://github.com/smol-machines/smolvm
