沙箱的关键数字
三步上手
命令行、API、SDK 和 MCP 服务器,调用方式都一样。
开始之前
把你的 API 密钥写入 GLAC_API_KEY。
curl -fsSL https://glac.ai/install.sh | sh
export GLAC_API_KEY=ak_...API=https://api.glac.ai/v1/sandboxes
AUTH="Authorization: Bearer $GLAC_API_KEY"from glac import Glac
glac = Glac()import { Glac } from "glac";
const glac = new Glac();# give your agent the tools (Claude Code here)
claude mcp add glac -e GLAC_API_KEY=ak_... -- npx glac-mcp创建沙箱
一台独立的机器,从任意镜像创建。
glac sandboxes create --name web \ --image python:3.12curl $API -H "$AUTH" \ --json '{"name": "web", "image": "python:3.12"}'sbx = glac.sandboxes.create(name="web", image="python:3.12")const sbx = await glac.sandboxes.create( { name: "web", image: "python:3.12" });# no call of its own: the first sandbox_run # that names "web" makes it, from the image在沙箱中运行
命令和文件操作,想跑多久就跑多久。
glac sandboxes exec web -- \ pip install pandascurl $API/web/run -H "$AUTH" \ --json '{"command": "pip install pandas"}'print(sbx.run("pip install pandas").stdout)console.log((await sbx.run("pip install pandas")).stdout);sandbox_run {"sandbox": "web", "image": "python:3.12", "command": "pip install pandas"}整体保存,再分叉
内存、进程和磁盘一起保存,分叉出的副本从那一刻接着运行。
glac sandboxes snapshots create web \ --name ready glac sandboxes fork web --count 16curl $API/web/snapshots -H "$AUTH" \ --json '{"name": "ready"}' curl $API/web/fork -H "$AUTH" --json '{"count": 16}'snap = sbx.snapshot(name="ready") copies = sbx.fork(16)const snap = await sbx.snapshot({ name: "ready" }); const copies = await sbx.fork(16);sandbox_snapshot {"sandbox": "web", "name": "ready"} sandbox_fork {"sandbox": "web", "count": 16}
凡是能用 ID 的地方都能用它的名字。没有专门的唤醒调用:任何需要休眠沙箱的操作都会唤醒它。
它能做什么
终端、任意端口的链接或 SSH,都经由沙箱内部的代理程序提供。
运行中直接创建快照,可原地回退,也可分叉出最多 64 个副本。
只启动一次,每个副本里的程序都已在运行。
你的代码永远拿不到的机密:在请求出站时才填入。
任意 OCI 镜像,或用我们预装五种语言和编程智能体的镜像。
空闲 30 秒后休眠,里面的一切都保留;一条命令就能唤醒。
图片仅作示意
适用场景
代码解释器
运行模型写的代码,变量在多次调用之间保留。
from glac import CODE_INTERPRETER sbx = glac.sandboxes.create( image=CODE_INTERPRETER) sbx.run_code("x = 1") print(sbx.run_code("x + 1").text)编程智能体
Claude Code 和其他智能体,各自运行在独立的机器中。
from glac import AGENTS env = {"ANTHROPIC_API_KEY": "..."} sbx = glac.sandboxes.create( image=AGENTS, env=env) sbx.agent("claude").prompt( "Make the failing tests pass")多路尝试
在任务中途分叉沙箱,让每个副本尝试不同的做法。
patches = ["a", "b", "c"] copies = sbx.fork(len(patches)) for copy, p in zip(copies, patches): cmd = f"git apply {p}.patch" r = copy.run(cmd + " && pytest") print(p, r.exit_code)
价格与限制
和所有产品一样,按所用的方块资源计费。 全部价格与套餐
| 计费项 | 计量方式 | 价格 |
|---|---|---|
| CPU | CPU 实际使用时间,按毫秒计 | $0.01 / 百万 CPU 毫秒$0.00001 / CPU 秒$0.036 / CPU 小时$26.28 / CPU 月 |
| 内存 | 按占用量计,精确到毫秒,以 128 MiB 为一档 | $0.00222 / 百万 GiB·毫秒$0.00000222 / GiB·秒$0.008 / GiB·小时$5.84 / GiB·月 |
| 请求 | 发往方块或沙箱链接的每个请求 | $0.30 / 百万次 |
| 出站流量北美 · 欧洲 | 从北美和欧洲流出的每 GB | $0.004 / GB |
| 出站流量亚太 | 从亚太流出的每 GB | $0.01 / GB |
| 休眠存储3 | 休眠实例保存的内容,以及快照 | $0.00000761 / 百万 GB·毫秒$0.00000000761 / GB·秒$0.0000274 / GB·小时$0.02 / GB·月 |
估算月度费用
一个真实的工作负载,在付费版和免费版上一个月各花多少。
智能体在自己的机器上开发并交付软件,每次连续工作一个工作日。
你的产品给每个用户分配一个沙箱,用于一次短时会话。
AI 应用替用户运行一段段短小的代码。
一组任务,每个任务都由智能体完成并打分。
大量并发的短时运行,机器一直满负荷。
每次推送都构建并测试。
按每月 30 天计,账户上只运行这一个工作负载。 数据来源
付费版月度费用
每次会话 $0.16
- CPU86.2亿 CPU 毫秒$86.17
- 内存3万 GiB·小时$228.80
- 请求$0.00
- 数据存储2,000 GB·月$40.00
- NVMe 缓存$0.00
- 出站流量300 GB$1.20
- 用量(按标价)
- $356.17
- 付费版已含
- −$4.20
- 付费版月费
- $5.00
超出免费版额度的有:实例规格、CPU、内存、数据存储和出站流量。
按规格计费,运行期间每秒都计费费用为 10.4 倍
Glac$356.17
按规格计费$3,702.00
各套餐的限制
每个套餐的全部限制| 免费版 | 付费版 | |
|---|---|---|
| 单个沙箱上限 | 2 vCPU、4 GiB | 8 vCPU、16 GiB |
| 同时运行沙箱和方块实例 | 5 | 500 |
| 保留的休眠沙箱 | 20 | 10,000 |
| 每分钟可创建 | 10 | 600 |
| 每小时可创建单个项目 | 200 | 10,000 |
安全隔离
它运行的是模型写的代码,所以每个沙箱都是一台独立的机器,只能通过你开放的方式访问。
安全独立的 microVM
Firecracker microVM,有独立内核,从你的镜像启动。
外加一层 jail
空的根目录、无特权的用户、独立的资源限制。
通过 API 访问
命令和文件经由其内部的代理程序传递;它没有公网 IPv4 地址。
链接即钥匙
一个签名链接只打开一个端口;更换机密,所有旧链接随即失效。
它永远拿不到的机密
在请求出站时才填入,而且只发往对应的主机。
用你的密钥加密
它的磁盘、休眠时的内存和快照,在离开机器之前加密。