基于 Cranelift 代码生成器的独立 WebAssembly 运行时,支持 WASI 并提供多语言嵌入接口。
- Star
- 21,182
- Fork
- 1,025
- 未关闭 Issue
- 295
- 最近提交
- 昨天
这是什么?
Wasmer 使用 WebAssembly 沙箱运行程序,可在本地、云端或浏览器中执行。用户可以控制程序能访问的文件、网络和环境变量,沙箱启动快,内存占用小。
CLI 可以用一条命令运行 Wasmer 注册表中的软件包,例如 Python、Bash、PHP、SQLite、PostgreSQL(PGlite)和 FFmpeg。通过 --volume 可将指定目录挂载进沙箱,只有需要时才用 --net 开启主机网络。软件包下载后会被缓存,后续运行无需重复下载。
在应用中嵌入时,Wasmer SDK 提供 JavaScript/TypeScript、Python、Rust 和 Swift(macOS、iOS)的沙箱接口,可以创建沙箱、执行命令、流式读取进程输出、读写工作区文件,并在明确授权网络访问的前提下运行服务。SDK 目前处于 alpha 阶段,本仓库主要包含运行时和 CLI,SDK 位于独立仓库。
核心功能
- 01以 WebAssembly 运行程序,可明确控制文件、网络和环境变量访问权限。
- 02从 Wasmer 注册表直接运行 Python、Bash、PHP、FFmpeg 等软件包。
- 03通过 --volume 将主机目录挂载到沙箱中。
- 04提供 JavaScript、Python、Rust 和 Swift 的 SDK,可在代码中创建沙箱。
- 05支持在浏览器中运行沙箱。
适用场景
- 在隔离沙箱中运行不可信代码或 AI 生成的代码。
- 无需在宿主机安装 Python 或 Node.js,即可执行相关脚本。
- 在 Web 或移动应用中嵌入沙箱化的命令执行能力。
- 以可移植、隔离的方式运行 PostgreSQL、FFmpeg 等打包好的工具。
快速上手
- 1
在 macOS 或 Linux 上运行 README 中的官方安装脚本安装 CLI
- 2
使用 Homebrew(macOS / Linux)安装 CLI
brew install wasmer - 3
在沙箱中运行 Python
wasmer run python/python -- -c "print('Hello from Wasmer')"
使用前须知
- Wasmer SDK 目前处于 alpha 阶段。
- Rust SDK 目前使用源码依赖,crates.io 发布已被禁用。
标签
常见问题
- wasmer 是什么?
- 基于 WebAssembly 的运行时与 CLI,用于在轻量、安全的沙箱中运行应用和 AI 智能体代码。 Wasmer 使用 WebAssembly 沙箱运行程序,可在本地、云端或浏览器中执行。用户可以控制程序能访问的文件、网络和环境变量,沙箱启动快,内存占用小。
- wasmer 可以免费使用吗?用的什么许可证?
- wasmer 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- wasmer 还在维护吗?
- 活跃维护中。wasmer 最近一次提交是在 2026年10月20日。
- wasmer 适合用来做什么?
- 在隔离沙箱中运行不可信代码或 AI 生成的代码。 无需在宿主机安装 Python 或 Node.js,即可执行相关脚本。 在 Web 或移动应用中嵌入沙箱化的命令执行能力。 以可移植、隔离的方式运行 PostgreSQL、FFmpeg 等打包好的工具。
- wasmer 怎么安装和运行?
- 在 macOS 或 Linux 上运行 README 中的官方安装脚本安装 CLI 使用 Homebrew(macOS / Linux)安装 CLI: brew install wasmer 在沙箱中运行 Python: wasmer run python/python -- -c "print('Hello from Wasmer')"
- 在哪里获取 wasmer?
- 源代码和安装说明在 GitHub 上:https://github.com/wasmerio/wasmer
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
将 C 和 C++ 代码编译为 WebAssembly,使其可在浏览器、Node.js 等环境运行的编译工具链。
面向 WebAssembly 的 C++ 编译与优化基础库,附带 wasm-opt 等命令行工具和 binaryen.js。
将 C# 与 .NET CIL 直接编译为小体积独立 WASI Wasm 组件的编译器、运行时与 SDK。
面向自主 AI 智能体的安全私有运行时,按策略约束文件、系统调用与网络访问。
一个实验性的编译器,可将 TypeScript/JavaScript 编译为原生可执行文件或 WebAssembly,运行时无需 Node.js。