@aletheia-works/formicarium

中文文档
0.12.0发布于 2026/11/05Apache-2.0TypeScriptES Module零依赖构建来源已验证近 30 天下载 6172

在浏览器中运行未修改的x86-64 Linux CLI程序,并在 paludarium Web Assembly 模拟器上运行 Node.js

中文使用文档
文档目录9 节
  1. 状态
  2. 安装
  3. 快速启动 (Node.js)
  4. 在浏览器中
  5. API会做什么
  6. 限制
  7. 如何运作
  8. 捐款
  9. 许可证

天文馆

在浏览器和Node.js运行未修改的x86-64 Linux命令行程序, 没有启动内核。 家具包装 陈列馆,一个用户模式 x86-64 Linux 仿真器编译到 WebAssembly (一个 Rust 的对应器) 罐/链接),并给出一个小 JavaScript API: 给它一个静态的 Linux 可执行文件 和一些文件, 运行它, 并拿回去 退出代码,输出和它所撰写的文件. 目标是让一个 CLI 错误 复制在网页上以-s形式运行.

  • 试试看: 页:1 显示网站 有终端可以安装和运行 aube, bitchfork, Biome,纳米,jj 和 在您的 浏览器.
  • 软件包 : @aletheia-works/formicarium 时间npm.
  • 联合国 页:1 站点 拥有指南(包括安装和命令API)和开发 节(运行时架构,设计决定),英文和日文.

状态

缩略语是年轻的(0.x),其API可能仍然会改变. 检查了什么 每一个变化 :

  • Rust探测器(线,定时器, UnixStream::pair, Rayon, 穆特克斯/ 康德瓦尔, 硬链接,符号链接, flock)通过Node.js,chromium,Firefox和WebKit.
  • Aube和pitchfork的多步骤会话输出与本地输出相同 x86-64 Linux (英语).
  • 分布式JavaScript的行覆盖率保持在80%或以上.

它运行一个翻译器( 还没有 JIT), 因此重度程序比 当地人 CI 运行浏览器探测器、安装和命令检查 在 macOS 上以真实的 Safari 显示接受和显示网站接受; 其他浏览器套件使用 剧作家WebKit取而代之. 浏览器探测器以及安装和命令 在iOS 26 模拟器中还用 Safari 进行 iOS 的检查(尚未使用 iOS 27 safaridriver不能驱动;一个真正的iPhone没有测试.

安装

npm install @aletheia-works/formicarium

需要节点.js 24或后.

快速启动 (Node.js)

import { createSession } from '@aletheia-works/formicarium/node';
import { decodeUtf8 } from '@aletheia-works/formicarium';

// guestBytes: a static ELF64 little-endian x86-64 Linux executable (Uint8Array).
const session = await createSession({ cwd: '/work', home: '/home/guest' });
try {
  const result = await session.run({ guest: guestBytes, args: ['--version'] });
  console.log(result.exitCode, decodeUtf8(result.stdout));
} finally {
  await session.dispose();
}

客人不包括在内。 将它们建为静态 musl 可执行文件, 或安装 它们来自安装 API (下方) 的目录 .

在浏览器中

导入 createSession 从 @aletheia-works/formicarium/browser。页面必须 能够使用 SharedArrayBuffer数字 :

  • 服务页面 Cross-Origin-Opener-Policy: same-origin 财务报告和审定财务报表 Cross-Origin-Embedder-Policy: require-corp (或使用服务人员,例如: 固定主机服务员).
  • 服务于软件包runtime/web/package-worker.bundle.js)和核心点 下级 assets/paludarium/ 从您的页面来源.
  • 允许在 例如,内容安全政策 script-src 'self' 'wasm-unsafe-eval'; worker-src 'self'; connect-src 'self'。 。 。 . blob: 无需.

这个 嵌入引导 有个完整的例子.

API会做什么

  • 会议. A 类 Session 在运行之间持有虚拟文件系统。 只有 工作目录和主目录持续存在;文件共享 inodeId 保持硬链接,同义链接保持链接,并保留模式。 运行使用之间 listEntries, (中文(简体) ), readFile, (中文(简体) ), remove, (中文(简体) ), setCwd 财务报告和审定财务报表 reset· ; dispose 关闭 永远的会面.
  • 运行. 每跑一跑就开工一回和一回新核心. 会话运行一 时事BUSY (否则) 非零宾客通常会解决 带有退出代码和原始 stdout/stderr 字节; onOutput 流出它们 顺序。 主机,核心,超时(默认为600 000 ms, timeoutMs (改为) 和取消(AbortSignal(b) 以下列方式拒绝失败: ExecutionError 携带马厩 code (所有代码均列于 ERROR_CODES 报告 错误代码 和部分产出。 当内部运行失败时 工人,他们 cause 链条名称原出错; 它保留 javaScript 引擎、 Web Assembly 或核心所撰写的信件, 仅限 其他错误的名称,因此,像 env 值这样的调用数据不包括在内。 A 类 失败或取消运行 离开文件系统原样。 作为互动嘉宾, stdin 溪流 其标准输入和 terminal: { columns, rows } 制定标准 流出一个终端; 运行 stdin 没有默认超时。 在一个 浏览器, 在一个页面上运行所有会话, 以一个开始其核心 时间(每个人等到跑步开始之前, 开始它的客人,结束,或 开始 10 s), 等待数 timeoutMs宾客 仍然同时运行.
  • 腾讯网. 客人没有网络 除非跑道经过 network: { allow: ['github.com:443'] }。然后可以打开 TCP 连接 仅用于所列目的地,仅用于解决所列名称 其它失败 ENETUNREACH (一个没有来宾听众的回回地址) 与 ECONNREFUSED),嘉宾可以自行回转服务. TLS在客人里面运行,所以给它CA 证书。 浏览器没有 TCP 套接字, 因此浏览器运行也需要 network.relay: { url, protocols? },例如 @aletheia-works/paludarium-wasm/relay 服务; 没有它失败 UNSUPPORTED_ENV. Node.js在给出时使用中继器.
  • 核心资产. 在核心开始之前, 被钉住的帕鲁达姆版本和 每个核心文件的SHA-256都经过核对 assets/paludarium/build-info.json (单位:千美元)ASSET_LOAD 如果丢失或更改, CORE_INIT 如果核心无法启动). 节点.js 装入已检查的字节 一个私人目录。 浏览器在检查后从它的 URL 中加载核心, 所以 服务来自你信任的来源的资产.
  • 来宾与目录. validateGuest 检查客人的字节并构建 资料, createInstaller 从固定目录中安装工具 检查的ELF或tar.gz下载, registerValidatedGuest 登记a 已检查的来宾( e)runValidatedGuest 运行它一次, fixtureToFsEntries 检查会话开始的文件,以及 createCommandSession 运行一个命令行( e)ls, (中文(简体) ), cat, (中文(简体) ), cd, (中文(简体) ), rm -rf, (中文(简体) ), cp, (中文(简体) ), mv, (中文(简体) ), install <tool>,或已安装的工具,在 NAME=value 环境任务)无外壳. A 类 在命令会话中以名称运行的已注册工具, 每个来宾都会找到 它作为 /usr/bin/<tool>。安装 createInstaller 写入不输出, 因此一个页面可以在工具齐备之前 用户任意类型 。 见 安装 API 财务报告和审定财务报表 命令 API。 。 。 .

限制

  • 来宾必须是静态的x86-64 Linux ELF可执行文件. validateGuest 财务报告和审定财务报表 安装还拒绝超过128个米B的来宾.
  • 来宾只作为被允许目的地的TCP客户进入网络, 通过浏览器中的继电器。 客人也可以服务于TCP和交换UDP ; 其他 UDP 仅访问名称.
  • 核心的内存被封为1GB.
  • 每次运行都从新文件系统开始;只有工作目录和 家目录结转.

如何运作

运行时间分为公共API,每个运行的工人,来宾输入/输出 和一个单元, runtime/core.ts,它知道模拟器的核心。 核心内容 本身就是 @aletheia-works/paludarium-wasm npm 包, 钉入精确 版本并运入 assets/paludarium/见 运行时架构 编辑 结构决定。 。 。 .

捐款

见 捐款额 建立、测试和拉动请求,并跟踪 行为守则。 。 。 . 如本报告所述,私下报告脆弱性 安全政策。 。 。 .

许可证

阿帕奇许可证2.0. 捆绑的帕鲁迪尔核也是Apache-2.0;见 THIRD_PARTY_NOTICES.md 编辑 核心许可证。 。 。 .

版本与发布记录

@aletheia-works/formicarium 共发布 15 个版本,首次发布于 2026/10/10;过去 12 个月发布了 15 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.12.0latest2026/11/051 天前
0.11.02026/11/014 天前
0.10.02026/10/315 天前
0.9.02026/10/307 天前
0.8.02026/10/289 天前
0.7.12026/10/2710 天前

关于 @aletheia-works/formicarium 的常见问题

@aletheia-works/formicarium 是什么?

在浏览器中运行未修改的x86-64 Linux CLI程序,并在 paludarium Web Assembly 模拟器上运行 Node.js

如何安装 @aletheia-works/formicarium?

在项目目录运行 npm install @aletheia-works/formicarium,或使用 pnpm add / yarn add / bun add。

@aletheia-works/formicarium 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aletheia-works/formicarium 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@aletheia-works/formicarium 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aletheia-works/formicarium 可以商用吗?

@aletheia-works/formicarium 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aletheia-works/formicarium 的下载量有多少?

根据 npm 官方下载统计,@aletheia-works/formicarium 在 2026/10/06 – 2026/11/04 这 30 天内被下载 6,172 次,日均约 206 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aletheia-works/formicarium 还在维护吗?

最新版本 0.12.0 发布于 2026/11/05(1 天前);至今共发布 15 个版本,其中过去 12 个月发布了 15 个;首次发布于 2026/10/10。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。