albertdobmeyer/opentrapp

GitHub: albertdobmeyer/opentrapp

OpenTrApp 是一个开源桌面应用,通过五容器安全边界遏制自主CLI代理的风险,提供沙盒化执行和技能扫描。

Stars: 1 | Forks: 0

OpenTrApp

# OpenTrApp 应用 [![CI](https://github.com/albertdobmeyer/opentrapp/actions/workflows/ci.yml/badge.svg)](https://github.com/albertdobmeyer/opentrapp/actions/workflows/ci.yml) [![CodeQL](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/59c14ab3ae061533.svg)](https://github.com/albertdobmeyer/opentrapp/actions/workflows/codeql.yml) [![OpenSSF 记分卡](https://api.securityscorecards.dev/projects/github.com/albertdobmeyer/opentrapp/badge)](https://scorecard.dev/viewer/?uri=github.com/albertdobmeyer/opentrapp) [![License: MIT](https://img.shields.io/badge/License-MIT-009966.svg)](LICENSE) 一个桌面应用程序,它在用户自己的电脑上运行一个包含五个容器的安全边界内的自主 CLI 代理,并提供用于聊天的 Telegram 界面。基于 MIT 协议开源。已预设集成 [OpenClaw](https://www.getopenclaw.ai);该安全边界设计为可扩展至其他 CLI 代理。 架构、威胁模型及每个组件的能力描述见 [`docs/trifecta.md`](docs/trifecta.md)。 ## 目的 自主 CLI 代理 —— [OpenClaw](https://www.getopenclaw.ai) 是一个著名的例子 —— 可以执行 shell 命令、读取文件并从第三方注册表加载技能。以默认设置运行时,该代理拥有与用户相同的操作系统权限。ClawHavoc 研究(2026年第一季度)对某个此类注册表的分类显示,11.9% 的已发布技能被归类为恶意技能(2857个中的341个)。OpenTrApp 将任何此类代理包裹在一个纵深防御的安全边界内,以降低代理被攻陷、恶意技能和提示注入攻击造成的影响。已预设集成的是 OpenClaw;该安全边界设计为可扩展至其他 CLI 代理。 推理过程委托给代理供应商的 API(对于 OpenClaw,是 Anthropic 的 API);仅代理的执行层(文件操作、工具调用、技能调用)在本地运行。 ## 价值观 这些是塑造本项目中每一个设计和产品决策的原则。将它们记录下来,是因为替代方案 —— 让它们保持隐含 —— 是项目偏离初衷的原因。 ## 功能(默认 Split Shell) - Telegram 机器人界面 —— 可从配对的手机向代理发送消息 - 在沙盒化的工作空间内进行文件读写;主机文件系统不暴露给容器 - 处理 Telegram 提供的内容中的图像 - 通过 ClawHub 加载技能,该过程受一个包含 MITRE-ATT&CK 映射和内容解除与重建(CDR)功能的 87 模式扫描器门控 - 对安全边界拓扑进行 24 项启动验证 - API 密钥由 `vault-proxy` 持有,并在每次请求时注入;代理容器从不读取原始密钥 默认情况下不启用网页浏览、网页抓取以及更广泛的 OpenClaw 工具接口。这些功能可通过 CLI 配置在 v0.3.0 版本的“Soft Shell”模式下使用;参见 [`components/opencli-container/`](components/opencli-container/)。 ## 限制 - 这是实验性软件。按原样提供,不附带任何类型的保证。作者不对其使用造成的损害承担任何责任。 - 自主 AI 代理遏制是一个开放的研究问题。该安全边界提高了成功攻陷的成本;但它并不能消除这种可能性。完整的攻击者能力矩阵和剩余风险枚举在 [`docs/threat-model.md`](docs/threat-model.md) 中;与其他遏制策略(Firejail、gVisor、仅虚拟机隔离、仅扫描器等)的差异在 [`docs/why-not-x.md`](docs/why-not-x.md) 中。 - 代理的推理过程不在本地。在无法访问 Anthropic API 的网络环境下运行 OpenTrApp 不被支持。 - 安装程序二进制文件使用 Tauri 自动更新器密钥签名,而非操作系统级别的代码签名证书。macOS Gatekeeper 和 Windows SmartScreen 会在首次启动时显示警告。 - 三个最初计划的模块之一(`openagent-social`)**自 2026年5月3日起已暂停**。该目标 API 自 2026年4月5日 Meta 收购 Moltbook 以来一直处于间歇性状态。该容器在 `compose.yml` 中仍有定义;代码保存在 [`components/openagent-social/`](components/openagent-social/)。 ## 系统要求 - 64 位 Linux、macOS(Apple Silicon 或 Intel)或 Windows - 已安装 [Podman](https://podman.io/) 或 [Docker](https://www.docker.com/) 且当前用户可运行 - 大约 4 GB 的可用磁盘空间用于存放五个容器镜像 - 一个 [Anthropic API 密钥](https://console.anthropic.com/) 和一个 Telegram 机器人令牌(应用内设置向导会解释如何获取两者) ## 安装说明 所有三个平台的预构建安装程序均附加在每个 [GitHub 版本](https://github.com/albertdobmeyer/opentrapp/releases/latest) 中: | 平台 | 格式 | |------|------| | Linux | `.deb`、`.rpm`、`.AppImage` | | macOS | `.dmg`(支持 Apple Silicon 和 Intel) | | Windows | `.msi`、`.exe` | 设置向导会验证 Podman 或 Docker 是否已安装,并引导用户完成 API 密钥输入和 Telegram 配对。安装后无需终端交互。 对于不支持的平台或要审计构建流水线,请参见下文的 *从源代码构建* 部分。
架构摘要 运行时安全边界由五个容器组成,通过按服务划分的内部 compose 网络连接。L7(应用层)策略和 L3(网络层)策略位于不同的容器中 —— 原理见 [ADR-0009](docs/adr/0009-five-container-perimeter.md)。 | 容器 | 角色 | 描述 | |------|------|------| | `vault-agent` | 运行时遏制 | 只读根文件系统,丢弃所有 Linux capabilities,自定义系统调用配置文件,仅挂载工作空间 | | `vault-forge` | 供应链防御 | 87 模式技能扫描器,零信任行验证器,内容解除与重建(CDR)流水线 | | `vault-proxy` | **L7 出口策略** | 域名白名单,API 密钥注入,请求日志记录,解析后目标 IP 检查。持有 API 密钥;**无互联网连接**(链接到 `vault-egress`)。 | | `vault-pioneer` | 社交内容分析 | **已暂停** —— 见 *限制* | | `vault-egress` | **L3 出口策略** | 内核级别的 RFC1918 地址丢弃;固定的 DoT 解析器(Quad9 + Cloudflare);**唯一** 具有互联网连接的容器。持有 `NET_ADMIN` 权限但**不持有任何密钥**。 | `vault-proxy` 是内部容器之间的桥梁。`vault-egress` 是通往公共互联网的桥梁。这两个容器都不同时持有 API 凭证和提升的网络能力 —— 这种分离正是五容器拓扑结构所实现的核心安全特性。 ``` flowchart LR USER[User] --> GUI["OpenTrApp GUI"] GUI --> PERIMETER subgraph PERIMETER["Perimeter"] AGENT[vault-agent] FORGE[vault-forge] PIONEER["vault-pioneer
(parked)"] PROXY["vault-proxy
(L7 policy)"] EGRESS["vault-egress
(L3 policy + DoT)"] end AGENT --> PROXY FORGE --> PROXY AGENT <-.->|"write-only volume"| FORGE PROXY --> EGRESS EGRESS --> ANTHROPIC[Anthropic API] EGRESS --> TELEGRAM[Telegram] EGRESS --> CLAWHUB[ClawHub] classDef parked stroke-dasharray: 5 5,color:#777 class PIONEER parked ``` 五张 Mermaid 图(拓扑、信任层次、网络隔离矩阵、技能加载流程、助手状态机)位于 [`docs/diagrams.md`](docs/diagrams.md)。完整的架构、攻击者能力矩阵、纵深防御表和所有权矩阵在 [`docs/trifecta.md`](docs/trifecta.md) 和 [`docs/threat-model.md`](docs/threat-model.md) 中。
从源代码构建 所有三个子模块都是公开的;无需特殊访问权限。 ``` git clone --recurse-submodules https://github.com/albertdobmeyer/opentrapp.git cd opentrapp/app npm install npm run dev # frontend dev server cd src-tauri && cargo build # Rust backend ``` 要进行发布风格的桌面构建,请为目标平台安装 Tauri 的先决条件,然后运行 `cd app && npm run tauri build`。 ### 测试套件 ``` cd app/src-tauri && cargo test --lib # Rust unit tests (56 at v0.3.0) cd app && npm test -- --run # Vitest (74 at v0.3.0) cd app && npx tsc --noEmit # TypeScript strict cd app && npx playwright test # End-to-end (25) bash tests/orchestrator-check.sh # Manifest validation (42 checks) podman compose up -d && podman compose down # Perimeter smoke test ``` 持续集成会在每次推送到 `main` 分支和每个发布标签时运行上述所有测试;参见 [`.github/workflows/ci.yml`](.github/workflows/ci.yml)。要运行一个端到端脚本,该脚本可从全新克隆的仓库重新推导出本 README 中的所有数值声明,请参见 [`docs/reproduce.md`](docs/reproduce.md) 并运行 [`bash docs/reproduce.sh`](docs/reproduce.sh)。 发布制品附带 CycloneDX SBOM、cosign 无密钥签名(sigstore)和 SLSA Build Level 2 构建来源证明。验证: ``` # CycloneDX 软件物料清单 syft scan packages:artefact.deb -o cyclonedx-json | diff - sbom.cyclonedx.json # cosign 签名(无密钥 / sigstore) cosign verify-blob \ --certificate sbom.cyclonedx.json.pem \ --signature sbom.cyclonedx.json.sig \ --certificate-identity "https://github.com/albertdobmeyer/opentrapp/.github/workflows/ci.yml@refs/tags/vX.Y.Z" \ --certificate-oidc-issuer "https://token.actions.githubusercontent.com" \ sbom.cyclonedx.json # SLSA 构建出处 — 请查看每个发行版中的 `intoto.jsonl` 资产 cosign verify-attestation --type slsaprovenance ... ``` ### 仓库布局 ``` opentrapp/ (this repository — desktop GUI + perimeter orchestrator) ├── components/ │ ├── opencli-container/ runtime containment (vault-agent + vault-proxy) │ ├── openskill-forge/ supply-chain defense (vault-forge) │ └── openagent-social/ social-content analysis (vault-pioneer) — parked ├── app/ Tauri 2 + React 18 desktop application ├── compose.yml 4-service perimeter with network isolation ├── schemas/component.schema.json component manifest contract └── config/orchestrator-workflows.yml cross-component workflow definitions ``` 完整架构规范和贡献规则请参见 [`CLAUDE.md`](CLAUDE.md)。
## 许可证 基于 [MIT 许可证](LICENSE) 发布。该许可证允许在仅遵守署名要求(保留版权声明)的前提下使用、修改、再分发以及包含在衍生作品中。不提供任何保证。
标签:可视化界面, 自动化攻击, 请求拦截