idolum-ai/kenogram

GitHub: idolum-ai/kenogram

Kenogram 为 AI agent 提供网络隔离、无 root 的声明式 Linux 沙箱环境,通过显式权限准入机制限制不可信代码对宿主机的影响范围。

Stars: 1 | Forks: 0

Kenogram: two different fields of marks preserve one relational pattern across a warm white field

# Kenogram Kenogram 让你能够给 agent 分配一整台小型计算机,而不必交出你自己的 计算机。 Kenogram 根据宿主机编写的声明,为 AI agent 具现出无 root 的 Linux 世界。一个声明可以选择镜像,并准入宿主机文件、挂载、 secrets、资源限制、持久 TCP 目标以及命名的 loopback 接口。Kenogram 不添加任何隐式的宿主机文件系统访问权限;内部主体可以 自由地使用镜像和声明所提供的资源。 任何被准入到 AI 上下文中的内容都可能改变后续的发展。隐式 能力决定了发生改变的 agent 能够影响什么。Kenogram 在结构上 限制了这些后果:除非宿主机操作员明确准入,否则不存在隐式能力。通过终端交互表达的请求 不会改变世界权限。应用声明会授予持久权限; `allow` 可以授予有时间限制的 TCP egress。 Kenogram 面向那些希望使用工具的 agent 拥有一个实用环境、 同时又不必继承操作员隐式计算机的开发者、安全团队和平台操作员。 ## 安全边界 Kenogram 是用于不受信任的 agent 进程的执行边界,而不是 prompt 过滤器。它使准入的宿主机权限变得明确,并在启动声明的服务之前检查生成的 runtime。 | 条件 | 强制执行的观察结果 | |---|---| | 宿主机访问 | 拒绝未声明的挂载。验证确切声明的挂载集和 bind-source 文件系统身份,并且不挂载任何宿主机 container-runtime 控制 socket。 | | 网络 | 基础世界仅限 loopback,没有有效的 resolver 或外部 TCP/UDP 路由。声明或临时授予的 TCP 目标通过由宿主机持有的精确目标代理进行转发;直接 IP 拨号仍然无法路由。 | | Runtime | 在服务启动前,会检查无 root 执行、专用的网络/PID/IPC/UTS namespace、空的能力边界集、`no-new-privileges`、活跃的 seccomp、无添加的设备,以及 CPU/内存/PID 限制。 | | 权限 | 由宿主机作者编写的声明会准入持久能力;显式的、有时间限制的 `allow` 命令可以授予临时的 TCP egress。命名的操作员接口无需发布宿主机端口即可访问一个声明的世界 loopback 服务。 | | 替换 | 在记录为已应用之前,会对后继者进行检查。持久的转换状态可识别中断后的权威 generation。 | 这限制了被入侵或被 prompt 污染的 agent 能够触及的范围。它 不检测或防止 prompt 注入,不保护声明的可写挂载 或 secrets 免受世界进程的破坏,不防止向操作员 准入的目标进行数据泄露,也不对 `kenogram connect` 流量进行身份验证、加密、授权或解释。Kenogram 依赖于 Linux 内核和无 root 的 Podman,并不声称能够强化恶意的多租户宿主机,或独立 防止内核或 runtime 逃逸。 [安全契约](requirements/security.md)、[网络 不变量](requirements/network.md) 以及 [证据和已知 限制](requirements/INDEX.md#evidence-and-known-limits) 界定了确切的 主张。Kenogram 是更大系统内可组合的控件,而不是对该系统的合规性或认证 声明。 ## 状态和支持的 runtime [Kenogram v0.1.0](https://github.com/idolum-ai/kenogram/releases/tag/v0.1.0) 是评估软件,不做出生产稳定性的声明。发布的 二进制文件支持 Linux 上的 amd64 和 arm64 架构。强制性 CI 中执行的 runtime 需要基于 cgroups v2 的无 root Podman、 `nsenter` 以及为当前用户分配的从属 UID/GID 范围。当缺少这些先决条件时,Kenogram 会直接报错关闭,而不会 削弱边界。 [实验性的 Apple container-machine 启动器](docs/apple-container-machine.md) 将显式操作传输到 由操作员管理的 Linux 机器中。它不是 macOS 的 runtime 支持;真正的 Apple 机器生命周期和网络证据仍然是开放性问题。 Kenogram 二进制文件没有第三方 Go 模块。其运行仍然依赖于 Linux 内核、无 root 的 Podman、cgroups v2 和 `nsenter`。 ## 安装并启动一个世界 在检查其独立安装程序后,安装首个版本, [`v0.1.0`](https://github.com/idolum-ai/kenogram/releases/tag/v0.1.0): ``` version=v0.1.0 curl --fail --location --proto '=https' --tlsv1.2 \ --output install-release.sh \ "https://github.com/idolum-ai/kenogram/releases/download/${version}/install-release.sh" less install-release.sh bash install-release.sh "${version}" export PATH="${HOME}/.local/bin:${PATH}" kenogram doctor ``` 安装程序会在 `~/.local/bin` 下进行原子安装之前,检查发布版的校验和以及内嵌的版本。校验和用于检测传输损坏以及同一个 GitHub 发布版中资源的不一致;它们不是签名,也不是独立的来源证明。`kenogram doctor` 不会改变 Kenogram 世界或持久状态,并且会在一次运行中报告所有缺失的宿主机先决条件,尽管 Podman 可能会在预检期间初始化其自身的无 root 元数据。 [首个世界指南](docs/getting-started.md) 从包含在发布版中的源代码构建一个绑定宿主机的小型镜像,并演练完整的生命周期: ``` kenogram up --dry-run ./world.toml kenogram up --yes ./world.toml kenogram status first kenogram enter first kenogram down first kenogram up --yes ./world.toml kenogram destroy --yes first ``` ## 是证据,而非承诺 需求是具有约束力的契约;测试是证据。[证据 表](requirements/INDEX.md#evidence-and-known-limits) 将今天已执行的验证与下一个证明区分开来,并将每个开放的边界标记为 v0.x 接受、稳定声明前必需或实验性。 | 边界 | 获得的证据 | 明确的限制 | |---|---|---| | [Runtime 隔离](requirements/security.md) | 强制性的无 root Podman CI 会检查 namespace、挂载身份、seccomp、资源限制以及缺失 runtime socket 的情况。 | 尚无受支持的 Podman/kernel 矩阵或 seccomp-profile 身份。 | | [网络隔离](requirements/network.md) | 真实的 runtime CI 会演练纯 loopback 网络、失败的直接 TCP/UDP/DNS 连接、精确的代理准入、撤销/过期、代理死亡后的连接关闭以及没有宿主机监听器的已声明 SSH 接口。 | 在每次采用路径后进行的全部十项不变量的完整重放仍是开放问题。 | | [替换恢复](requirements/lifecycle.md) | 一个全新的进程在跨越十四个注入的 `SIGKILL` 边界时恢复了持久化的 runtime 状态。 | 进程崩溃的证据并不是跨文件系统的 syscall 粒度的断电证明。 | | [组合](docs/compositions/README.md) | 固定的 Engram、OpenClaw 和 Hermes 工件以及真实的 OpenSSH 客户端/服务器路径进行了端到端的演练。 | 模型和 Telegram 服务是 PR CI 中的确定性本地固定装置;真实的 Telegram 是受保护的操作员辅助金丝雀测试。 | 这些是自动化的、可重放的兼容性和边界观察结果,而不是 背书、通用兼容性声明或生产稳定性声明。 ## 选择一条评估路径 - **评估边界:**使用 [首个世界指南](docs/getting-started.md) 构建并替换一个最小的世界。 - **使用常规操作员协议:**通过 [SSH 组合](docs/compositions/ssh.md),在没有宿主机监听器的情况下访问一个已声明的 loopback 服务。 - **运行 agent 组合:**遵循以下组件的维护指南: [Engram](docs/compositions/engram.md)、 [OpenClaw](docs/compositions/openclaw.md) 或 [Hermes Agent](docs/compositions/hermes-agent.md)。 组合指南说明了所演练的确切版本、信任和 secret 边界、网络授权、资源要求,以及气密 CI 固定装置与真实服务之间的差异。 ## 相邻系统 Kenogram 属于不断壮大的 agent 执行环境家族。这些 系统是相邻的,而不是可互换的;该表比较的是记录在案的 架构选择,而不是整体的安全性或产品质量。 比较已于 2026-07-14 对照链接的供应商文档进行了审查; 该文档仍然是权威的。 | 系统 | Runtime 边界 | 记录在案的网络默认值 | 策略和生命周期侧重点 | |---|---|---|---| | **Kenogram** | 共享宿主机内核的无 root Podman 容器 | 仅限 loopback;无 resolver 或外部 TCP/UDP 路由 | 宿主机编写的声明、精确的出站 `host:port`、受检查的 generation 以及持久替换恢复 | | [Docker Sandboxes](https://docs.docker.com/ai/sandboxes/security/) | 专用 microVM 和私有 Docker Engine | 默认的 HTTP/HTTPS 域名白名单;阻止其他域名以及原始 TCP、UDP 和 ICMP | 本地或组织策略、宿主机端的凭证注入以及持久化的编码 agent 工作区 | | [E2B](https://e2b.dev/docs/network/internet-access) | 隔离的 Linux VM | 默认启用互联网;可配置的阻断、IP/CIDR 和域名规则 | 云 API 沙箱、模板以及暂停/恢复持久化 | | [Modal Sandboxes](https://modal.com/docs/guide/sandbox-networking) | 默认使用 gVisor;处于 beta 阶段的 [VM runtime](https://modal.com/docs/guide/vm-sandboxes) | 默认允许公共出站访问;提供阻断、CIDR 以及 beta 阶段的 TLS 域名控制 | 与 Modal 应用程序和资源集成的托管式可编程沙箱 | | [Daytona](https://www.daytona.io/docs/en/sandboxes/) | 容器、Linux VM 和 Windows runtime 选项 | 依赖于层级的策略 (https://www.daytona.io/docs/en/network-limits/) 包含基础服务;可配置的阻断、CIDR 和域名规则 | API 管理的 agent 计算机、资源类、快照以及组织控制 | microVM 系统提供了独立的内核边界,Kenogram 并不 声明这一点。相反,Kenogram 专注于本地的、由宿主机拥有的声明;可观察的 隔离和精确的准入;以及证明替换、中断和 重新应用能够保留已声明的权限的证据。上游产品和默认设置 会发生变化,因此在做出部署或采购决策之前,请务必查阅它们链接的文档。 ## 为什么是 Idolum,以及名字的由来 Idolum 将言论与权限分开,将表现与真相分开,将 能力与隐式上下文分开。Kenogram 赋予了这种姿态一种环境 形态:内部主体控制着其已声明的世界,而只有宿主机操作员 才能改变进入该世界的宿主机能力。 这个名字是对由 Gothard Günther 开创、并由 Rudolf Kaehr 和 Thomas Mahler 发展的 kenogrammatic 谱系的一种有意但有限的改编。该 项目将可观察的模式置于其实现身份之上;它 并不声称实现了某种形态图学微积分。 [kenogrammatics 注释](docs/kenogrammatics.md) 记录了该谱系、其 工程类比及其局限性。 ## 项目路径 - [需求和证据](requirements/) - [声明 schema](requirements/declaration.md) - [操作和恢复](requirements/operations.md) - [贡献和证据重放](CONTRIBUTING.md) - [安全策略和私下报告](.github/SECURITY.md) - [发布和不可变发布契约](docs/release-strategy.md) - [MIT 许可证](LICENSE)
标签:AI代理隔离, EVTX分析, Linux沙箱, 容器技术, 日志审计, 环境隔离