ethosagent/warden
GitHub: ethosagent/warden
Warden 是一个针对 LLM agent 的专用出向防护代理,通过结构性网络隔离和边缘密钥替换,从架构层面阻止 agent 窃取数据或持有真实凭证。
Stars: 0 | Forks: 0
# Warden
**一个智能体出向防护代理。** Warden 封装了不受信任的 LLM agent runtime,
使其*在结构上无法*直接连接到互联网,除非通过一个充当中介的代理。
该代理会强制对每次调用执行允许/拒绝策略,并在网络边缘将
占位符 token 替换为真实的 secrets。
## 核心不变性
被封装的 agent **没有直接的网络出口路由**。通往
互联网的唯一路径是通过 Warden,这由容器/编排 runtime 强制执行——
而不是依赖于要求 agent 遵守规则。因此,该 agent:
- **无法窃取数据** —— 每个目标都会与一个
默认拒绝的 allowlist 进行核对;
- **无法进行恶意调用** —— 任何不在 allowlist 中的请求都会在 TCP
底层被拦截;
- **绝不持有真实的 secret** —— 它只持有占位符(例如
`openai_secret_001`);真实的凭证会在边缘被注入,并且永远不会
返回给该 agent。
## 定位
我们是**针对 agent 专用的**,而不是通用的出向防火墙
如果您运行的是普通的应用程序,通用的出向代理会是更简单的选择。
如果您运行的是 **agent**,Warden 能够理解 agent 所使用的协议以及
它们可能产生的威胁。
## 快速开始
```
# 构建单一 binary。
make build
# 运行完整的 check gate(format、vet、lint、build、test+race、coverage)。
scripts/check.sh
# 安装一次 git hooks(pre-commit = 快速检查,pre-push = 完整 gate)。
scripts/install-hooks.sh
# 生成 agent 将信任的 bake-once proxy CA(TLS termination)。
scripts/gen-certs.sh
# 使用示例 config 运行 proxy(服务于 M1)。
go run ./cmd/proxy -config configs/config.example.yaml
```
配置结构记录在
[`configs/config.example.yaml`](configs/config.example.yaml) 中:一个默认拒绝的
`policy.allowlist`(域名 + 可选端口)、占位符↔环境变量 `secrets`、缓存
`ttl` 以及 `logging`。
## 部署模板
Warden 需要 container runtime 以确保隔离是结构性的——没有
裸本地进程模式。这些模板体现了这种隔离:
- **本地开发** —— `deploy/compose/` —— 在仅限内部网络上运行的 agent + 代理 sidecar;该 agent 没有外部路由。
- **Kubernetes** —— `deploy/k8s/` —— sidecar 清单 + 默认拒绝出向
`NetworkPolicy`(仅允许出向到代理)。
- **EC2 / VM** —— `deploy/vm/` —— 在实例上作为 systemd 服务或容器运行的
代理;agent 容器的出向流量被路由到该代理。
## 目录结构
有关 package 映射、构建/测试命令以及
约定,请参阅 [`AGENTS.md`](AGENTS.md)。
## 许可证
[Apache-2.0](LICENSE)。
标签:EVTX分析, Go, LLM Agent, Ruby工具, 人工智能, 代理网关, 子域名突变, 底层编程, 日志审计, 用户模式Hook绕过, 网络安全, 网络隔离, 请求拦截, 隐私保护