albertdobmeyer/opentrapp
GitHub: albertdobmeyer/opentrapp
OpenTrApp 是一个开源桌面应用,通过五容器安全边界遏制自主CLI代理的风险,提供沙盒化执行和技能扫描。
Stars: 1 | Forks: 0
架构摘要
运行时安全边界由五个容器组成,通过按服务划分的内部 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)。标签:可视化界面, 自动化攻击, 请求拦截