关于 Runtime Cloud
Runtime Cloud 提供用于创建和操作 Linux microVM 沙箱的 TypeScript SDK 与命令行工具,面向运行代码和 Agent 工作负载的开发者。沙箱支持命令执行、文件操作、网络连接和生命周期控制,并提供多个其他沙箱 SDK 的适配器。
主要功能
- 01创建和管理 Linux microVM 沙箱
- 02运行命令、进程和交互式终端
- 03读取、写入和传输文件
- 04转发端口并创建隧道
- 05暂停、唤醒、分叉和快照沙箱
- 06适配多个沙箱 SDK
适用场景
- 01在隔离沙箱中运行 Agent 生成的代码
- 02执行后台进程并检查其输出
- 03通过受支持的沙箱 SDK 适配器迁移项目
MCP 相关
SDK 提供 MCP 功能,可在沙箱中运行 MCP 目录中的服务。README 未说明 Runtime Cloud 提供独立的 MCP 服务接口。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://api.withruntime.com/mcpclaude mcp add --transport http com-withruntime-runtime https://api.withruntime.com/mcp{"mcpServers":{"com-withruntime-runtime":{"type":"http","url":"https://api.withruntime.com/mcp"}}}在 Cursor 中打开{"servers":{"com-withruntime-runtime":{"type":"http","url":"https://api.withruntime.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"com-withruntime-runtime":{"type":"http","url":"https://api.withruntime.com/mcp"}}}{"mcpServers":{"com-withruntime-runtime":{"serverUrl":"https://api.withruntime.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://api.withruntime.com/mcp需要授权工具
详细介绍
原文在翻译后有更新,译文可能不是最新。
Runtime Cloud SDK 和 CLI
一套客户端适用于所有 Runtime Cloud 产品,以及 runtime CLI。需要 Node.js
22.12 或更高版本,或 Bun。它唯一的依赖项是 undici(Node 自带的 HTTP 客户端),
仅在代理后加载。
npm install withruntime
如果已设置 RUNTIME_API_KEY,客户端就会使用它;否则会使用这台机器在 CLI
连接时保存的连接信息(只需在浏览器中批准一次,无需复制密钥)。在服务器或
CI 运行器上,请从密钥管理器设置 RUNTIME_API_KEY:账户所有者、管理员或开发者
在浏览器中批准后,npx withruntime keys create 会仅显示一次新密钥;也可以前往
https://withruntime.com/account/keys 创建密钥。切勿将密钥放入浏览器代码、URL 或
命令行参数中。
import { Sandbox } from "withruntime";
await using sbx = await Sandbox.create();
await sbx.files.write("/workspace/invoice.py", "print(sum([125, 250, 375]))\n");
const result = await sbx.exec("python3 /workspace/invoice.py");
console.log(result.exitCode, result.stdout);
Sandbox.create() 无需参数,沙盒运行后即返回;await using 会在代码块结束时
删除沙盒(Node 24、Bun 或 TypeScript;在 Node 22 上请调用 await sbx.delete()),
而 keep: true 会改为停止沙盒并保留其磁盘。无参数时,你将获得
免费用量,无需信用卡(无信用额度时最多可同时运行
四个沙盒),以及 2 vCPU、4 GiB 内存和
4 GiB 磁盘。当前默认镜像包含 NumPy、pandas 和
matplotlib;请参阅沙盒环境。
用量会先消耗免费额度,再消耗预付额度,无需选择;funding 会被接受并忽略。
沙盒对象还提供以下功能:
exec、execStream、spawn和processes,用于执行命令和后台 工作,支持cwd、env(用于存放密钥)、stdin和timeoutMs;terminal(),通过 WebSocket 提供交互式终端;forwardPort(5432),从本机访问沙盒中的任意 TCP 端口;以及用于单个连接和 SSH 登录的tunnel()(runtime sandboxes ssh会使用它);files,用于读取、写入、列出、glob 匹配、查看状态、移动和删除文件,以及通过upload和download复制整个目录;pause、wake、extend、fork和snapshot(暂停的沙盒也会在下一次调用时 自动唤醒),update用于修改名称、环境、自动唤醒、空闲暂停和持久化设置,keepAlive用于在进程运行时延长时限,switchImage用于切换到新镜像并保留 /workspace,以及delete用于彻底删除沙盒;interpreter、network、previews、desktop、mounts(将你的 S3、R2 或 Google Cloud Storage 存储桶挂载为文件夹)、tailscale(在你自己的 tailnet 上 使用付费沙盒)、metrics和mcp(在沙盒中运行 MCP 目录中的服务),用于其他产品。
沙盒在 60 秒内没有任何活动后会自动暂停,同时保留内存和进程;下次调用时会唤醒,
因此空闲沙盒不会产生计算费用;idlePauseSeconds 可设为 10 到 86,400,或设为
0 表示永不暂停。
Sandbox.getOrCreate(name) 会返回具有该名称的沙盒;如果沙盒已暂停,则会先唤醒;
如果不存在,则会创建。
runtime.sandbox、snapshot、image、volume、job、domain、port 和
address 与 CLI 一样,用于命名各项产品。现有的复数名称仍是同一产品客户端的
别名。客户端包含 sandboxes、images、volumes、snapshots、jobs、secrets、
limits、feedback 和 support;用于监控账户的 webhooks、events、otel 和 audit;
用于将沙盒连接到你自己的网络环境的 domains、ports、addresses、tunnel 和
network(付费账户);以及 mcp、sso、billing、referrals 和 switching。
runtime.limits.get()(0.3.1 及更高版本)会说明密钥是否为只读,以及其 Agent 今日
仍可花费的额度。每次写入都会自动附带一个幂等键,因此 SDK 自身的重试(超时、
429、503)绝不会造成重复操作。错误均有类型,并附带 code、hint 和
requestId。
runtime.usageRequests("7d") 会读取账户的 API 调用次数和错误率;
次数以精确的十进制字符串表示;如果时间窗口为空,errorPercent 为 null。
代理
SDK、CLI 和 MCP bridge 在 Node 和 Bun 中都会读取 HTTPS_PROXY、HTTP_PROXY 和
NO_PROXY(大小写均可;同时设置时,小写优先),无需设置 NODE_USE_ENV_PROXY。对 API 的调用和终端
WebSocket 会通过 HTTPS_PROXY 建立 CONNECT 隧道,地址中任何
user:password@ 都会发送给代理。HTTP_PROXY 仅用于 http:// 地址,
绝不会用于 HTTPS API。NO_PROXY 列出要直接访问的主机,以逗号或空格分隔:主机名会涵盖其子域名,
可以带前导点,host:port 会将其限制为单个端口,* 表示所有
主机。未指定方案的代理地址默认为 http://;http:// 和 https:// 代理均可使用,其他任何方案都会立即
报错 invalid_proxy。调用无法连通时,错误会指出尝试使用的代理(不含密码),
例如 No answer from Runtime at https://api.withruntime.com through the proxy http://proxy.internal:3128 (HTTPS_PROXY).。传给
new Runtime({ fetch }) 的 fetch 会按原样使用。
Runtime 会快速改进,因为 Agent 会告诉我们他们遇到的问题:反馈会直接用于我们接下来要构建的内容,并且提交反馈的人会在功能发布时收到通知。遇到任何阻碍时,请立即通过 runtime.feedback.submit()(或 npx withruntime feedback "...")报告,无需等我们来询问:看起来像是我们的问题的错误、限制或缺失的功能、你需要的变通方法、含糊不清的文档、比预期更慢或更难的操作,或者其他提供商做得更好的地方。小问题也很重要,重复反馈会由我们合并。请说明你尝试了什么、发生了什么以及 requestId,但切勿提供凭据、私有文件或用户数据。然后用一行话告知用户你报告了什么。
为 E2B 编写的代码
withruntime/e2b 会将受支持的 E2B 沙盒调用转换为 Runtime 调用。更改导入并设置 RUNTIME_API_KEY。
切换指南介绍了其他提供商,以及如何计算节省金额:
import { Sandbox } from "withruntime/e2b"; // was: from "e2b"
withruntime/e2b/code-interpreter 可替代 @e2b/code-interpreter。
沙盒采用 E2B 的默认配置:2 vCPU、512 MiB 和 300 秒超时。Runtime 无法按照 E2B 的方式执行的操作会在
执行任何操作前抛出 NotSupportedError,并指出可替代使用的功能。本包中的 E2B.md 列出了
所有映射关系和差异。仅导入 withruntime 不会加载它。
为 Daytona 或 Vercel Sandbox 编写的代码
withruntime/daytona 和 withruntime/vercel 对 Daytona SDK 和 Vercel Sandbox 的 SDK
也能实现相同功能。更改导入:
import { Daytona } from "withruntime/daytona"; // was: from "@daytona/sdk"
import { Sandbox } from "withruntime/vercel"; // was: from "@vercel/sandbox"
沙盒采用竞品的默认配置:Daytona 为 1 vCPU、1 GiB 和 3 GiB 磁盘,
15 分钟无调用后暂停;Vercel 为 2 个 vCPU,每个配备 2048 MiB,运行 5
分钟,且持久化。Daytona 或 Vercel 密钥绝不会发送到任何地方。Runtime 无法以相同方式执行的操作会在执行任何操作前
抛出 NotSupportedError,并指出可替代使用的功能。本包中的 DAYTONA.md 和
VERCEL.md 列出了所有映射关系和差异。
为 Blaxel 编写的代码
withruntime/blaxel 会转换受支持的 Blaxel 沙盒调用。更改导入:
import { SandboxInstance } from "withruntime/blaxel"; // was: from "@blaxel/core"
沙盒采用 Blaxel 的默认配置:4096 MB,每 2048 MB 配备一个 vCPU。
待机状态会转换为 Runtime 的暂停状态:沙盒在 60 秒内没有调用后会暂停,但会保留内存和进程,
下次调用时会唤醒。适配器支持环境变量、按名称管理进程、文件、预览、快照、分叉和代码解释器,
还支持会话:sandbox.sessions 会创建 Runtime 沙盒会话,而 SandboxInstance.fromSession 会使用其令牌驱动沙盒。Blaxel 密钥绝不会发送到任何地方。Drive、代码生成、计划任务以及 Blaxel 的 Agent、模型和 MCP 托管功能会在执行任何操作前抛出
NotSupportedError,并指出可替代使用的功能。本包中的
BLAXEL.md 列出了所有映射关系和差异。
为 Morph Cloud 编写的代码
withruntime/morph 可转换 Morph 的 TypeScript 客户端(morphcloud)。
更改导入:
import { MorphCloudClient } from "withruntime/morph"; // was: from "morphcloud"
实例会变为沙箱,快照会变为 Runtime 快照,元数据会变为标签,
HTTP 服务会变为预览;setup 会按 Morph 的链哈希进行缓存,而
branch 会复制内存和进程。stop 会删除沙箱,与 Morph 的行为一致。
SSH、重启以及启动后设置时间限制都会抛出 CompatibilityError,
并注明替代方案。COMPATIBILITY.md 列出了所有映射。
为 Cloudflare Sandbox SDK 编写的代码
withruntime/cloudflare 可在 Runtime 沙箱上运行为 Cloudflare 的 0.x
@cloudflare/sandbox API 编写的 Worker。更改导入中的包名称以及
Sandbox 导出:
import { getSandbox } from "withruntime/cloudflare"; // was: from "@cloudflare/sandbox"
export { Sandbox } from "withruntime/cloudflare"; // was: from "@cloudflare/sandbox"
然后从 Wrangler 配置中删除 containers 块,保留
Sandbox Durable Object 绑定,并使用
npx wrangler secret put RUNTIME_API_KEY 存储密钥。Exec、流式处理、文件、进程、
代码解释器、会话、gitCheckout 和 exposePort 均按
Cloudflare 文档所述正常工作;备份、隧道、终端和出站拦截会抛出
CompatibilityError,并注明替代方案。
COMPATIBILITY.md 列出了所有映射。
Agent 框架
withruntime/openai-agents 是 OpenAI Agents SDK SandboxAgent 的沙箱客户端。
withruntime/ai-harness 是 Vercel
AI SDK HarnessAgent(Claude Code、Codex、OpenCode、Pi 等)的沙箱提供方。
withruntime/ai 为 Vercel AI SDK 和 Mastra Agent 提供四种
沙箱工具;withruntime/claude-agent-sdk 通过 MCP 服务向 Claude Agent
SDK 提供这些工具;withruntime/tools 则以不依赖任何框架的格式提供这些工具。
每种集成都需要在此包旁安装相应的框架。请参阅
https://withruntime.com/docs/frameworks。
CLI
printf '%s\n' 'print(sum([125, 250, 375]))' > invoice.py
npx withruntime sandboxes run -- python3 - < invoice.py # connects on first use
npx withruntime sandboxes create
npx withruntime help
使用 npm i -g withruntime 安装后,命令为 runtime:
runtime sandboxes exec <id> -- ls、runtime sandboxes shell <id>、
runtime images build --pip pandas,以及每条命令都支持的 --json。
MCP
claude mcp add --scope user runtime -- npx -y withruntime mcp
codex mcp add runtime -- npx -y withruntime mcp
该桥接程序通过已保存的连接,经由 stdio 提供 Runtime 的 MCP 工具;如果
尚未连接,它会提供 runtime_connect,引导你完成浏览器授权。
远程客户端可添加 https://api.withruntime.com/mcp 并通过浏览器登录,
或发送 bearer 密钥。
Runtime 对比
对于典型的 Agent 工作,按各家公布的价格计算,Runtime 的成本比另外十四家 沙箱提供商低 42% 到 88%。以下页面展示了计算过程,并列出所用价格及读取日期:
- 最适合 AI Agent 的沙箱
- E2B、 Daytona、 Modal 和 Vercel Sandbox 的替代方案
- E2B 与 Daytona 对比,以及 所有对比
- Agent 沙箱价格指数: 各家提供商的价格,也提供 CSV 和 JSON 格式
- 沙箱成本计算器 和 Runtime 定价
可靠性与支持
- 状态: https://withruntime.com/status 每两分钟从外部检查一次 API,每十分钟启动一个真实沙箱,并保留每天的记录;也可访问 https://withruntime.com/status.md 和 https://withruntime.com/status.json。
- 正常运行时间承诺: 向付费账户承诺每个自然月 API 的正常运行时间达到 99%;如果某个月低于这一标准,将自动返还该月费用的 10% 作为抵用金 (https://withruntime.com/legal/sla)。
- 安全与合规: https://withruntime.com/docs/trust。
- 变更记录: https://withruntime.com/changelog。
- 帮助: 使用
runtime support "<question>",如果遇到任何妨碍使用的问题,也可以使用runtime feedback "<text>"。
文档:https://withruntime.com/docs/javascript 和 https://withruntime.com/docs/cli。
该软件包在 0.3.0 之前名为 @withruntime/cloud。这个名称以及
runtime-cloud 和 withruntime-cloud 均已在 0.5.1 停止使用,不再发布新版本。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。