O

OpenShell

SHA-256
16.7k stars·AI 生产力·已提供 SHA-256 校验码,下载后可自行核对文件完整性

NVIDIA 开源的 AI 智能体安全运行时:内核级沙箱管控文件与网络,凭据代理注入,智能体接触不到真实密钥。

智能下载

下载 Download 版本

v0.1.4 · 72.5 MB

给 AI 智能体套上安全沙箱的运行时。

核心功能

  • 内核级沙箱隔离,对文件访问、系统调用和网络连接逐条执行策略
  • 策略变更先经形式化验证,自动标记高风险放权并等待人工审批
  • 凭据由网关代理注入,智能体永远接触不到真实密钥
  • 支持 GPU 沙箱、Python/TypeScript/Go/Rust SDK 和 Kubernetes Helm 部署

避坑指南

  • •Windows 仅支持 WSL2 且为实验性质,没有原生 Windows 版本;它不是开箱即用的独立应用,必须依赖 Docker、Podman 或主机虚拟化;默认沙箱是最小化 Ubuntu,不含任何智能体,需自行接入模型并配置策略;默认开启匿名遥测,可用 OPENSHELL_TELEMETRY_ENABLED=false 关闭;它不是万能的,策略配得太宽仍会让智能体获得过多权限,Kubernetes 部署还要求 CNI 支持 NetworkPolicy。

适用场景

  • 在本地安全运行 OpenCode 等 AI 编程智能体,放心让它读写文件、装包
  • 企业批量部署自主智能体,集中审批和审计每个智能体的权限
  • 让智能体调用第三方 API,而真实凭据始终由网关托管不外泄

详细介绍

OpenShell 是 NVIDIA 开源的自治 AI 智能体安全运行时。与普通 Docker 沙箱或 E2B 只提供隔离不同,它有两大独特优势:在内核层对每一次文件访问、系统调用和网络连接执行策略管控,并在策略变更前用形式化验证标记高风险放权,等待人工审批;同时通过网关代理凭据,只在发往已批准端点的请求中注入密钥,智能体永远接触不到真实凭据。项目提供命令行工具、声明式文件/网络/进程策略、GPU 沙箱、Python/TypeScript/Go/Rust SDK 以及 Kubernetes Helm 部署,适合个人在本地安全运行编程智能体,也适合企业统一管控大规模智能体集群。匿名遥测默认开启,可一键关闭或完全编译移除。

常见问题与排障 (2)

配置
OpenShell 沙箱服务账户是否需要在 OpenShift 上使用 privileged SCC?

不需要。自从引入 SCC 感知的 UID 解析功能(PR #3110,以及 #4054 中的 annotation-wait 修复)之后,在大多数部署中,针对 openshell-sandbox 的 privileged SCC 授权已经不再必要。Kubernetes 驱动程序会读取命名空间的 sa.scc.uid-range 注解,并从该范围内为沙箱 Pod 分配一个 UID(例如从范围 1001150000/10000 中分配 runAsUser: 1001150000),因此该 Pod 在零特权授权的情况下即可满足默认的 restricted-v2 SCC 准入要求。

要在没有该授权的情况下部署:
1. 通过 Helm chart 并使用 values-openshift-scc.yaml overlay 安装网关,该 overlay 会将硬编码的 runAsUser/fsGroup 置空,使 restricted-v2 能够注入命名空间分配的 UID 范围。
2. 不要运行 oc adm policy add-scc-to-user privileged -z openshell-sandbox;使用 oc get scc privileged -o jsonpath='{.users}' 验证该 SA 不存在任何条目。
3. 沙箱的创建/执行/删除在 restricted-v2 下均可正常工作,进程运行在预期的 SELinux container_t 标签之下。

回退方案(可能仍需要显式授权):依赖固定 UID 的工作负载——例如以 UID 1000 拥有文件的镜像,如 e2e/python/Dockerfile.workload——将改为在命名空间分配的 UID 下运行。对于这类情况,请显式设置 sandbox_uid,或为该特定工作负载保留 SCC 授权。请注意,较早的文档(调试技能 skills/debug-openshell-cluster/SKILL.md 和 e2e/with-kube-gateway.sh)早于该修复,仍声称需要该授权。

来源 Issue #4808
故障排除
为什么第一个 Kubernetes 一致性测试在客户机启动后立即等待工作负载 Pod 时超时?我该如何修复?

原因:conformance playbook 在每次 guest 启动后只等待网关连通性,但网关连通性和控制器 Deployment 可用性并不能证明 Agent Sandbox 工作负载控制器能够创建 Pod。全新启动后,控制器可能仍在恢复中——因 Kubernetes API 证书验证错误而重启,然后等待领导者选举——在调和工作负载 Pod 之前留下约 11 秒的空档。第一个 sandbox 创建随即撞上 30 秒超时,而后续场景则能通过。

临时解决方案:重新运行 CI lane。该故障是间歇性的,不做任何改动的重跑通常能通过,但这会浪费 CI 资源。

永久修复:在每次 guest 启动后添加一个有界就绪检查,在运行任何场景之前验证控制器所拥有的 Pod 创建。配置探测 Pod,使其无法实际运行或拉取镜像(使其保持门控状态),并在成功和失败两种情况下都将其清理。就绪检查失败时,跳过 conformance 并收集诊断信息:控制器状态、领导者租约、事件,以及有界的启动日志和最近的控制器日志。不要更改生产环境的 provisioning 截止期限。

本地复现方法:运行 nix run .#tmachine -- test ubuntu-k3s k3s conformance,然后比较网关连通性时间与控制器重启、领导者租约以及首个工作负载 Pod 创建的时间。

来源 Issue #4675

标签

ai-agentsandboxsecurityllm-runtimenvidiapolicy-enforcement

快速上手

1

下载安装包

点击上方按钮下载对应系统的安装包

2

安装软件

根据你的发行版安装对应的包(dpkg / rpm / AppImage)

3

确认系统为 Linux、Apple Silicon Mac 或带 WSL2 的 Windows,并提前装好 Docker 或 Podman

4

在终端执行 curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh,安装命令行工具和本地网关

5

运行 openshell sandbox create --name demo 创建第一个沙箱

安装指引
  1. 确认系统为 Linux、Apple Silicon Mac 或带 WSL2 的 Windows,并提前装好 Docker 或 Podman
  2. 在终端执行 curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh,安装命令行工具和本地网关
  3. 运行 openshell sandbox create --name demo 创建第一个沙箱
文件完整性

已提供 SHA-256 校验码,下载后可自行核对文件完整性

该校验码提取自 GitHub 官方 Release 页面

SHA256 校验码

43f43554bcaabff2a8147444410d1ad0b7f51bdae7589c2d249982bc8b260b91

该校验码提取自 GitHub Release 页面,下载后请自行核对文件完整性

本平台所有 SHA-256 校验码均提取自项目在 GitHub 官方 Release 页面发布的文件,未做任何修改。你可以通过 GitHub Releases 页面自行验证。

运维指引

卸载说明

官方未提供一键卸载脚本。手动卸载步骤:删除 openshell 命令行二进制文件,删除 ~/.openshell 配置目录,停止并移除本地网关容器,并在 Docker/Podman 中清理沙箱镜像;若通过 Helm 部署,则在对应命名空间执行 helm uninstall。

无额外依赖

下载后即可直接使用,无需安装其他运行环境

项目信息
开源协议Apache-2.0
最后更新2026-10-22 17:46:23
GitHub 仓库官方网站

遇到问题?查看下方 FAQ

2 FAQs

相似推荐