面向代理的安全执行路径 - 零信任、零配置、零延迟。
[!NOTE] 在迈向 1.0 版本发布的过程中,API 正在趋于稳定。必要时仍可能发生 API 变更,但会保持在最低限度。
[!IMPORTANT] 组织迁移: 官方 nono registry 命名空间已从
always-further迁移到nolabs-ai。请更新脚本、配置文件和 CI 中的所有引用。 如果您已经在旧命名空间下安装了包,请先移除,再从新的命名空间拉取:nono remove always-further/claude nono pull nolabs-ai/claude旧命名空间将被停用 — 请立即迁移。
在数秒内、零配置地在零延迟沙箱中运行 AI 代理 — Claude Code、Codex、Pi、CoPilot、Hermes、OpenCode、OpenClaw 等等 — nono 让您在几秒钟内即可运行起来,无需守护进程、无需容器、无需虚拟机,也不占用磁盘空间。开箱即用,nono 强制执行最小权限沙箱,并支持 macOS、Linux 和 Windows(WSL2)。
从这里开始 fork 这份配置,调整它、定制主题、打造属于你自己的版本,并通过 nono registry 与团队或社区分享。
想要落地运营并在大规模或团队内运行? 全球一些大型科技公司的工程师将 nono 用作工作流程的一部分,或用于在生产环境中运行 AI 代理。
被众多产品效仿 — nono 开创了零延迟、零配置的代理沙箱,并将继续在代理沙箱领域创新和引领潮流。
curl -fsSL https://nono.sh/install.sh | sh
brew install nono
其他平台 — Debian/Ubuntu、Fedora、Arch、RHEL、openSUSE、WSL2 和 Nix:查看安装说明。
在 registry 中搜索代理,然后运行它:
$ nono search opencode
nolabs-ai/opencode - Official Opencode Plugin
$ nono run --profile nolabs-ai/opencode -- opencode
就这样。opencode 现在以对当前目录的读写权限运行,除此之外什么都访问不到 — 您的 SSH 密钥、云凭据以及磁盘的其他部分,对它来说都是不可见的。
所有流行代理的配置文件都托管在 registry.nono.sh,经过安全加固,随时可以拉取。每个配置文件都捆绑了适当的文件系统范围、网络白名单、钩子(hooks)、技能(skills)等。
默认配置不够用了?生成一个配置文件并调整它 — 用您已经熟悉的命令:
nono profile init opencode --extends nolabs-ai/opencode
nono run --profile opencode -- opencode
nono profile init 会为您的代理导出一个可扩展、可编辑的配置文件,该文件继承自指定的基础配置文件。该配置文件是可组合的 JSON,因此您可以在与团队共享或向社区发布之前,审查确切的文件系统、网络、凭据和工具规则。
您是代理开发者,想要发布自己的代理包?我们非常欢迎您,并乐于推广您的工作!查看文档。
nono 并不止步于“把代理放进沙箱”。代理会将实际工作委派给工具:git、gh、curl、kubectl、包管理器、构建脚本、MCP 客户端/服务器,以及 PATH 上的其他所有程序。秘密、网络访问和副作用往往恰恰出现在这些工具上。大多数沙箱只是给代理一个一刀切的策略:某个秘密对整个代理和每个工具都普遍可用。但 nono 不同:
nono 可以将被委派的工具放入各自独立的子沙箱中,完全脱离代理的控制。代理获得它的会话沙箱;当它调用受控工具时,nono 的 broker 会以独立的策略、独立的文件系统授权、独立的网络规则和独立的凭据来启动该工具。除非工具自身的策略明确允许,否则它不会继承代理宽泛的 --allow 授权、CWD 访问权限、原始凭据路径或网络访问权限。
这意味着,一个配置文件可以表达如下规则:
git,但 git 只能访问该仓库、受信任的 Git 配置文件以及 Git 对象存储gh,但 gh 只能通过 nono 的凭据代理接收 GitHub tokengit 可以在链式策略下调用 ssh,而代理直接调用 ssh 仍被拒绝策略存在于配置文件中,而不是提示词中。代理可以请求使用某个工具,但它无法扩大该工具的沙箱范围、铸造新密钥,或从会话内部绕过端点策略。
{
"command_policies": {
"credentials": {
"github-api": {
"type": "proxy",
"upstream": "https://api.github.com",
"credential_key": "keyring://gh:github.com/example?decode=go-keyring",
"env_var": "GH_TOKEN",
"inject_header": "Authorization",
"credential_format": "Bearer {}"
}
},
"commands": {
"gh": {
"from": {
"session": {
"sandbox": {
"fs_read": ["."],
"credentials": [
{
"name": "github-api",
"endpoint_policy": {
"default": "deny",
"allow": [
{ "method": "GET", "path": "/repos/nolabs-ai/nono/issues/**" }
]
}
}
]
},
"invocation_policy": {
"default": "deny",
"allow": [
{ "argv": { "prefix": ["issue", "list"] } },
{ "argv": { "prefix": ["issue", "view"] } }
]
}
}
}
}
}
}
}
更多内容请参阅 工具沙箱执行。
前往文档,探索 nono 丰富的可组合策略系统、凭据注入、L7 过滤、供应链安全、回滚、多路复用、审计等更多功能。
nono 为 Rust、Python、TypeScript 和 Go 提供 FFI 绑定。
同时提供 Python、TypeScript 和 Go 绑定。
我们鼓励使用 AI 工具参与贡献。但是,在提交之前,您必须理解并仔细审查任何 AI 生成的代码。安全至关重要。如果您不理解某个改动的工作原理,请先在 Discord 中提问。
如果您发现安全漏洞,请不要提交公开 issue。请遵循我们的安全策略中的流程。
Apache-2.0