mcpField
R
Runtime Cloud

Runtime Cloud

远程服务
withruntime.com云与基础设施1今天更新

关于 Runtime Cloud

Runtime Cloud 提供用于创建和操作 Linux microVM 沙箱的 TypeScript SDK 与命令行工具,面向运行代码和 Agent 工作负载的开发者。沙箱支持命令执行、文件操作、网络连接和生命周期控制,并提供多个其他沙箱 SDK 的适配器。

主要功能

  1. 01创建和管理 Linux microVM 沙箱
  2. 02运行命令、进程和交互式终端
  3. 03读取、写入和传输文件
  4. 04转发端口并创建隧道
  5. 05暂停、唤醒、分叉和快照沙箱
  6. 06适配多个沙箱 SDK

适用场景

  1. 01在隔离沙箱中运行 Agent 生成的代码
  2. 02执行后台进程并检查其输出
  3. 03通过受支持的沙箱 SDK 适配器迁移项目

MCP 相关

SDK 提供 MCP 功能,可在沙箱中运行 MCP 目录中的服务。README 未说明 Runtime Cloud 提供独立的 MCP 服务接口。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://api.withruntime.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://api.withruntime.com/mcp需要授权
安装包
npmwithruntime0.46.2

工具

详细介绍

原文在翻译后有更新,译文可能不是最新。

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%。以下页面展示了计算过程,并列出所用价格及读取日期:

可靠性与支持

文档:https://withruntime.com/docs/javascript 和 https://withruntime.com/docs/cli。

该软件包在 0.3.0 之前名为 @withruntime/cloud。这个名称以及 runtime-cloud 和 withruntime-cloud 均已在 0.5.1 停止使用,不再发布新版本。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。