NVIDIA 开源 OpenShell:为 AI Agent 量身打造的安全运行时,四层防护 + 隐私路由,8000 星爆款
NVIDIA 开源 OpenShell:为 AI Agent 量身打造的安全运行时,四层防护 + 隐私路由,8000 星爆款
NVIDIA 做了一件很多人没有预料到的事情。
他们开源了一个叫 OpenShell 的项目。
GitHub 地址:https://github.com/NVIDIA/OpenShell 官方文档:https://docs.nvidia.com/openshell/latest/
8104 颗星,Rust 编写,Apache 2.0 协议。
这不是又一个 Docker 容器管理工具,不是又一个 Kubernetes 发行版。 这是一个专为 AI Agent 量身设计的安全运行时。
一句话定位:为自主 AI Agent 提供安全、私密的沙箱执行环境。
NVIDIA 为什么要做这个?因为现在所有人在用 AI Agent 的时候,都面临一个根本性的安全问题:
你让 AI Agent 在你的机器上跑代码,你真的放心吗?
Agent 可以读你的 SSH 密钥。 Agent 可以把你的数据上传到任何地方。 Agent 可以执行任何命令,包括删库。 Agent 的 API Key 可能被泄露到日志里。
Docker 容器?不够。容器逃逸的案例数不胜数。 gVisor?太重了,而且不是为 Agent 场景设计的。 裸跑?那是在拿你的生产环境赌命。
OpenShell 就是来解决这个问题的。而且它不是简单地加一层沙箱,它从四个维度构建了一套完整的安全体系。
四层防护体系:每一层都在保护你
OpenShell 最核心的设计,是它的四层防护体系。每一层都针对 AI Agent 场景的一个特定安全风险。
第一层:文件系统防护
保护什么:防止 Agent 读写不该碰的路径。
Agent 跑在你的机器上,它理论上可以访问整个文件系统。你的 SSH 密钥、你的 .env 文件、你的数据库配置、你的 .aws/credentials——全部暴露。
OpenShell 在沙箱创建的时候就锁定了文件系统边界。Agent 只能访问策略允许的路径,其他全部不可见。这个锁定是在容器创建时生效的,不是运行时检查,无法绕过。
第二层:网络防护
保护什么:防止 Agent 把你的数据发到不该发的地方。
这是最容易被忽略,也是最危险的攻击面。Agent 可以在代码里藏一个 curl,把你的源码、密钥、配置全部 POST 到一个外部服务器。你根本不会察觉。
OpenShell 的网络防护是默认拒绝的。每个沙箱启动时,所有出站连接都是被禁止的。你需要通过 YAML 策略显式声明允许访问哪些地址。
而且它不是简单的 IP/域名白名单。它做到了 HTTP 方法 + 路径级别的 L7 控制:
# 沙箱内 - 默认全部禁止
sandbox$ curl -sS https://api.github.com/zen
curl: (56) Received HTTP code 403 from proxy after CONNECT
# 在宿主机上 - 应用一个只读 GitHub API 策略
openshell policy set demo --policy policy.yaml --wait
# 重新连接 - GET 允许,POST 被拒
sandbox$ curl -sS https://api.github.com/zen
Anything added dilutes everything else.
sandbox$ curl -sS -X POST https://api.github.com/repos/octocat/hello-world/issues -d '{"title":"oops"}'
{"error":"policy_denied","detail":"POST /repos/octocat/hello-world/issues not permitted by policy"}GET 允许,POST 被拒。这意味着 Agent 可以读取公开 API,但不能创建/修改/删除任何东西。 而且策略可以热重载,不需要重启沙箱。
第三层:进程防护
保护什么:防止 Agent 执行危险命令和提权。
Agent 可以执行 rm -rf /,可以执行 sudo,可以fork bomb,可以修改系统配置。
OpenShell 在进程层面锁定了这些危险操作。特权提升被禁止,危险系统调用被拦截。这一层也是在沙箱创建时锁定的。
第四层:推理路由(最核心的创新)
保护什么:防止 Agent 的 API Key 泄露,防止敏感上下文被发送到不受信任的模型端点。
这是 OpenShell 最核心、最独特的设计,也是它和其他所有沙箱工具最大的区别。
传统模式下,Agent 直接用你的 API Key 调用 LLM:
- API Key 存在沙箱的环境变量里,可能被泄露
- Agent 可能被 prompt injection 攻击,把敏感上下文发送到外部
- 你无法控制 Agent 到底调用了哪个模型
OpenShell 的**隐私路由器(Privacy Router)**做了三件事:
- 拦截所有从沙箱发出的 LLM API 调用
- 剥离调用者的凭证,注入后端管理的凭证
- 路由到受控的模型端点
这意味着:
- Agent 的 API Key 永远不会出现在沙箱文件系统里
- 你可以控制 Agent 到底能访问哪个模型
- 敏感上下文可以保留在沙箱计算节点上,不外传
- 所有推理调用都有审计记录
这一层也可以热重载。你可以在 Agent 运行的时候,动态切换它使用的模型。
整体架构:四个组件,各司其职
| 组件 | 职责 |
|---|---|
| Gateway | 控制平面 API,协调沙箱生命周期,认证边界 |
| Sandbox | 隔离运行时,容器监督 + 策略强制的出口路由 |
| Policy Engine | 从应用层到内核的文件系统、网络、进程约束 |
| Privacy Router | 隐私感知的 LLM 路由,保持敏感上下文在沙箱计算节点上 |
支持的计算平台:Docker、Podman、MicroVM、Kubernetes。
整个系统用 Rust 编写,性能开销极低。Gateway 是一个 Axum WS + REST 服务,数据存储用 Postgres,pub/sub 用 Redis,文件存储用 S3/MinIO。
怎么用?30 秒上手
安装
# 方式 1:一键安装脚本(推荐)
curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh
# 方式 2:通过 PyPI(需要 uv)
uv tool install -U openshell
# 方式 3:Kubernetes Helm
helm install openshell oci://ghcr.io/nvidia/openshell/helm-chart创建沙箱并启动 Agent
# 创建一个沙箱,启动 Claude Code
openshell sandbox create -- claude
# 或者 Codex、Copilot、OpenCode
openshell sandbox create -- codex
openshell sandbox create -- copilot
openshell sandbox create -- opencode沙箱里默认包含的工具:
| 类别 | 工具 |
|---|---|
| Agent | claude, opencode, codex, copilot |
| 语言 | Python 3.14, Node 22 |
| 开发 | gh, git, vim, nano |
| 网络 | ping, dig, nslookup, nc, traceroute, netstat |
管理策略
# 查看当前策略
openshell policy get my-sandbox
# 应用新策略(热重载,不重启)
openshell policy set my-sandbox --policy policy.yaml --wait终端 UI
openshell term一个类似 k9s 的实时终端仪表盘,键盘驱动,可以监控 Gateway 健康状态、沙箱状态、Provider 配置。每两秒自动刷新。
支持 8 种主流 Agent
OpenShell 不绑定任何特定 Agent,开箱即用支持 8 种:
| Agent | 凭证来源 | 说明 |
|---|---|---|
| Claude Code | ANTHROPIC_API_KEY |
开箱即用 |
| Codex | OPENAI_API_KEY |
开箱即用 |
| GitHub Copilot CLI | GITHUB_TOKEN |
开箱即用 |
| OpenCode | OPENAI_API_KEY / OPENROUTER_API_KEY |
开箱即用 |
| OpenClaw | NemoClaw | 通过 NemoClaw 管理推理 |
| Hermes Agent | NemoClaw | 通过 NemoClaw 管理推理 |
| Ollama | Community | openshell sandbox create --from ollama |
| Pi | Community | openshell sandbox create --from pi |
凭证管理通过 Provider 机制实现:API Key 等凭证不会出现在沙箱文件系统里,而是在运行时作为环境变量注入。CLI 会自动发现你 shell 环境中已有的凭证。
GPU 支持:NVIDIA 的看家本领
作为 NVIDIA 的项目,GPU passthrough 当然是标配:
openshell sandbox create --gpu --from gpu-enabled-sandbox -- claude支持 Docker(自动选择 CDI 或 --gpus all)和 MicroVM。
需要在宿主机上安装 NVIDIA 驱动和 NVIDIA Container Toolkit。
这意味着你可以在沙箱里跑本地推理、微调模型、做 GPU 计算——全部在安全隔离的环境中进行。
策略引擎:声明式 YAML,热重载
OpenShell 的策略是声明式 YAML 文件,分为静态和动态两部分:
| 策略域 | 类型 | 说明 |
|---|---|---|
| 文件系统 | 静态 | 创建时锁定,不可更改 |
| 进程 | 静态 | 创建时锁定,不可更改 |
| 网络 | 动态 | 运行时热重载 |
| 推理 | 动态 | 运行时热重载 |
静态策略在沙箱创建时锁定,保证了安全基线不可被绕过。 动态策略可以热重载,保证了灵活性——你可以在 Agent 运行的时候动态调整网络访问和模型路由。
OpenShell 还内置了一个 Agent Skill,可以从自然语言需求或 API 文档自动生成策略 YAML:
# Agent 可以帮你生成策略
"我需要让 Agent 访问 GitHub API 的只读端点,但不能创建任何资源"
→ Agent 自动生成 policy.yamlAgent-First 的开发方式
OpenShell 最有意思的一点:它用自己来开发自己。
项目的 .agents/skills/ 目录包含了一整套 Agent 工作流自动化:
| Skill | 功能 |
|---|---|
create-spike |
调研问题,人类决定是否接受 |
triage-issue |
评估社区 Issue 的技术有效性和影响 |
review-security-issue |
安全漏洞严重性评估和修复计划 |
fix-security-issue |
实施安全修复 |
generate-sandbox-policy |
从自然语言生成策略 YAML |
openshell-cli |
CLI 使用指南 |
debug-openshell-cluster |
Gateway 故障排查 |
debug-inference |
推理路由故障排查 |
所有 Agent 实现的工作都是人类门控的:维护者明确请求计划 → Agent 提议 → 维护者批准 → Agent 构建。
这不仅仅是"用 AI 写代码",而是把 AI Agent 嵌入到了整个软件开发生命周期里——从调研、到分类、到安全审查、到策略编写、到实现。
和其他方案的对比
| 方案 | 隔离级别 | Agent 感知 | 推理路由 | 策略粒度 | GPU |
|---|---|---|---|---|---|
| 裸 Docker | 低 | ❌ | ❌ | 无 | ✅ |
| gVisor | 高 | ❌ | ❌ | 容器级 | ❌ |
| Kata Containers | 最高 | ❌ | ❌ | 容器级 | ✅ |
| E2B / Daytona | 高 | 部分 | ❌ | 容器级 | ❌ |
| Kubernetes Agent Sandbox | 高 | ✅ | ❌ | CRD 级 | ✅ |
| OpenShell | 高 | ✅ | ✅ | L7 方法+路径级 | ✅ |
OpenShell 最大的差异化在于推理路由。这是其他所有方案都没有的能力。
这个项目真正的意义
第一:安全不再是 Agent 部署的拦路虎
以前企业想用 AI Agent,最大的顾虑就是安全。Open Shell 把文件系统、网络、进程、推理四个维度的安全全部做进了一个工具里,企业不再需要自己拼凑安全方案。
第二:推理路由开创了一个全新方向
Agent 的 LLM API 调用被拦截、凭证被替换、请求被路由到受控后端——这个能力以前只存在于大型企业的自建系统里。OpenShell 把它变成了一个开源工具的标准功能。
第三:NVIDIA 在 Agent 基础设施领域的布局
从 CUDA 到 GPU 驱动,从 Triton 推理服务器到 OpenShell,NVIDIA 正在构建一整套 AI Agent 基础设施栈。OpenShell 是这个栈里"安全运行时"这一层的关键拼图。
写在最后
如果你在做 AI Agent 相关的项目,如果你在让 Agent 在你的机器上跑代码,你真的需要认真考虑安全问题。
OpenShell 给你提供了一个开箱即用的、NVIDIA 级别的安全运行时。 四层防护,推理路由,热重载策略,GPU passthrough,8 种 Agent 支持。
这不是一个概念验证,这是一个 8000 星的、NVIDIA 官方维护的、Apache 2.0 协议的生产级工具。
非常推荐所有人去 clone 下来试一试。 你的 Agent 跑在 OpenShell 里,你可以真正地睡个好觉。
作者: itech001 来源: 公众号:AI人工智能时代 网站: https://www.theaiera.cn/ 每日分享最前沿的AI新闻资讯和技术研究。
本文首发于 AI人工智能时代,转载请注明出处。