nono README

The project's README from github.com/nolabs-ai/nono. As one markdown file: README.md.

nono logo

Built by the team that brought you Sigstore
The standard for secure software attestation, used by PyPI, npm, brew, and Maven Central

License CI Status OpenSSF Best Practices Documentation

Join Discord We're hiring agent-sign GitHub Action


[!NOTE] In the lead-up to a 1.0 release, APIs are stabilizing. API changes may still occur where necessary, but will be kept to a minimum.

[!IMPORTANT] Organization migration: The official nono registry namespace has moved from always-further to nolabs-ai. Update any references in your scripts, profiles, and CI. If you already have a pack installed under the old namespace, remove it first before pulling from the new one:

nono remove always-further/claude
nono pull nolabs-ai/claude

The old namespace will be retired — migrate now.

Run AI agents in a zero latency sandbox in seconds and with zero setup — Claude Code, Codex, Pi, CoPilot, Hermes, OpenCode, OpenClaw and more — nono gets you up and running within seconds, with no daemon, no container, no VM, and no disk space usage. Out of the box, nono enforces a least-privilege sandbox and supports macOS, Linux, and Windows (WSL2).

From here fork the config, tweak it, theme it, make it your own, and share it with your team or the community via the nono registry.

Want to operationalise and run at scale or within your team? Engineers at some of the largest tech companies in the world use nono as part of their workflows or to run AI agents in production.

“Datadog engineers want their agents to move fast, and we want our credentials and production systems kept safe while they do. nono is the only sandbox that gives us both fine-grained, per-command policies and sophisticated credential management that fits existing, complex real-world toolchains.” James Carnegie -- Staff Security Engineer, Datadog

"Security is embedded in everything we build at Okta. nono gives us the confidence to innovate with AI agents by isolating their execution in a highly secure, policy-controlled sandbox. It ensures our credentials remain locked down and protected, without sacrificing developer velocity" Leonardo Zanivan, Principal Engineer, Okta

Copied by many — nono pioneered the zero-latency, zero-setup agent sandbox, and continues to innovate and lead the way in agent sandboxing.


Quickstart

curl

curl -fsSL https://nono.sh/install.sh | sh

macOS / Linux (Homebrew)

brew install nono

Nix

The project provides a Nix flake that builds from source (first run compiles the crate and its dependencies):

# Run without installing
nix run github:nolabs-ai/nono

# Install into your profile
nix profile add github:nolabs-ai/nono

# Pin to the latest release
nix run "github:nolabs-ai/nono?ref=$(curl -fsSL https://api.github.com/repos/nolabs-ai/nono/releases/latest | jq -r .tag_name)"

Other platforms — Debian/Ubuntu, Fedora, Arch, RHEL, openSUSE, WSL2: see install instructions.

Run it!

Search for an agent in the registry, then run it:

$ nono search opencode
nolabs-ai/opencode	-	Official Opencode Plugin

$ nono run --profile nolabs-ai/opencode -- opencode

That's it. opencode now runs with read/write access to the current directory and nothing else — your SSH keys, your cloud credentials, the rest of your disk are invisible to it.

Profiles for all the popular agents live at registry.nono.sh, secured and ready to pull. Each one bundles the right filesystem scope, network allowlist, hooks, skills and more.

Make it your own!

Outgrow the defaults? Scaffold a profile and tweak it — same command you already know:

nono profile init opencode --extends nolabs-ai/opencode
nono run --profile opencode -- opencode

nono profile init exports an extended and editable profile file for your agent, that inherits from the specified base profile. That profile is composable JSON, so you can review the exact filesystem, network, credentials, and tool rules before sharing it with a team or publishing it for the community.

Are you an agent developer and want to publish your own agent package? We would love to have you and promote your work! See the docs.

Sandbox the tools agents call

nono does not stop at "put the agent in a sandbox". Agents delegate real work to tools: git, gh, curl, kubectl, package managers, build scripts, MCP clients / servers, and whatever else is on PATH. Those tools are often where secrets, network access, and side effects show up. Most sandboxes just give the agent a blanket policy where a secret is universally available to the entire agent and every tool, but nono is different:

nono can put delegated tools in their own isolated child sandboxes, outside the agent's control. The agent gets its session sandbox; when it calls a controlled tool, nono's broker launches that tool with a separate policy, separate filesystem grants, separate network rules, and separate credentials. The tool does not inherit the agent's broad --allow grants, CWD access, raw credential paths, or network access unless its own policy says so.

That means a profile can express rules like:

The policy lives in the profile, not in the prompt. The agent can ask for a tool, but it cannot widen that tool's sandbox, mint new keys, or bypass endpoint policy from inside the session.

{
  "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"] } }
              ]
            }
          }
        }
      }
    }
  }
}

Read more in Sandboxed Tool Execution.

Ready to go deep?

Head over to the docs and discover nono's rich composable policy system, credentials injection, L7 filtering, supply chain security, rollback, multiplexing, audit and more.

Library support

nono provides FFI bindings for Rust, Python, TypeScript, and Go.

Also available as Python, TypeScript, and Go bindings.

Contributing

We encourage using AI tools to contribute. However, you must understand and carefully review any AI-generated code before submitting. Security is paramount. If you don't understand how a change works, ask in Discord first.

Security

If you discover a security vulnerability, please do not open a public issue. Follow the process in our Security Policy.

License

Apache-2.0

nono (nolabs-ai/nono)

Searching Database…

4.5K ·GitHub
这是什么?nono 是一个零配置、零延迟的沙箱,以最小权限运行 AI 编程智能体(Claude Code、Codex、OpenCode 等),默认情况下它们碰不到你的 SSH 密钥、云凭据或磁盘的其他部分。
nono 是像 Docker 那样的容器运行时,还是更轻量的东西?它是一个轻量的 CLI 沙箱运行时,不是容器或虚拟机系统:没有守护进程、没有容器、没有虚拟机,也没有磁盘空间开销,用 Rust 编写。
怎么安装它,并开始把智能体放进沙箱?在 macOS/Linux 上通过 curl 脚本或 Homebrew(或 Nix flake)安装,然后在注册表里搜索并运行一个智能体,比如 opencode,它随后只会拿到对当前目录的读写权限。
nono 开箱支持哪些编程智能体?nono 注册表里已有针对 Claude Code、Codex、Pi、CoPilot、Hermes、OpenCode、OpenClaw 等的预置配置文件。
nono 能在 Windows 上原生运行吗?开箱即用直接支持 macOS 和 Linux;Windows 支持要通过 WSL2,而不是原生的 Windows 沙箱。
nono 如何保护我的凭据不被智能体调用的工具(git、gh、kubectl)碰到?智能体调用的工具在各自隔离的子沙箱里运行,拥有独立的文件系统、网络和凭据策略,因此像 gh 这样的工具只能通过 nono 的凭据代理获取令牌,并经 L7 过滤限定到特定的 API 方法。
我可以自定义沙箱策略,而不使用默认配置文件吗?可以,`nono profile init` 会生成一个可编辑的配置文件,它继承自基础配置,以可组合的 JSON 表达,覆盖文件系统、网络和凭据规则,你可以自行调整并分享。
nono 能作为库在我自己的代码里用吗?可以,除 CLI 之外,它还为 Rust、Python、TypeScript 和 Go 提供 FFI 绑定。
为什么不直接把智能体跑在 Docker 容器里?容器和虚拟机会增加配置时间和磁盘开销;nono 的作者打造它就是为了实现零配置、零延迟的沙箱,不需要守护进程、容器或虚拟机。
nono 只对智能体本身做沙箱,还是对它调用的工具也一样?它对被委派的工具同样做沙箱:当智能体调用 git 或 gh 时,nono 的 broker 会在智能体控制之外的独立策略、文件系统授权和凭据之下启动该工具。
Creator
nolabs-ai
Size
50.7 MB
Stars
4.5K
Age
8mo
Commits · 90 Days