Verax 是一个介于 AI 智能体与其工具之间的 MCP 服务器,定位为“智能体行动前先询问的身体”。其核心目标是让智能体的每一次工具调用都具备可问责性:调用必须先通过策略门禁,并在执行前留下签名决策记录;实际执行过的调用会留下效果行,事后与对应记录进行对账。拒绝(refusal)与批准同样被记录,策略无法单独决定的调用会被挂起,直到本机上的操作员批准。账本保存在运行身体的本机,身体只有在授权配置完成后才会开放,没有默认令牌。
项目以 @verax-ai/body 发布,要求 Node 22.6 或更高版本,使用 @verax-ai/body 0.2.1 或更新版本。身体通过 Streamable HTTP 在 VERAX_BIND(默认 127.0.0.1:8787)的 /mcp 路径上使用 MCP 协议,监听前需要配置 issuer、JWKS URL、audience、状态目录和策略文件;verax doctor 会指出缺失项。策略决定令牌的哪些 scope 可以调用哪些工具,默认策略 packages/proxy/policy/default.json 拒绝一切未明确列出的调用。
主要能力包括:策略门禁与签名决策记录;拒绝与批准同等记录;策略无法决定时挂起等待本机 verax approve 批准;执行后的效果行记录与对账;verax verify 可脱离运行中的服务,仅读取状态目录,离线核验账本,并分别报告多项独立结论,支持 --key、--effect-key、--witness-key、--checkpoint-key 固定密钥,也支持 --json 输出,退出码 0 表示验证通过、1 表示未通过,空账本目录不会静默成功。记录使用 COSE_Sign1 与算法 -19(Ed25519,RFC 9864),而非旧的 -8(EdDSA)。
其他能力包括:verax witness 由第二个进程签署效果行并写入持久检查点,否则见证类别保持 self;verax halt 将后续调用转为签名拒绝,被撤销的令牌 id 在任何记录写入前即被拒绝;verax reconcile 将记录的支出与卡对账单导出进行匹配,标注 matched、ghost 和 authorized-but-unpaid 行;租户键根据令牌的 issuer 与 subject 派生,其他租户 id 会得到签名拒绝;包括速率与每日计数器、磁盘不足时拒绝(HTTP 507)以及出站允许列表在内的边界控制,计数器不可读时按失败关闭处理;verax doctor 与心跳可提前指出缺失或过期项。心跳默认每 10 秒一次(VERAX_HEARTBEAT_EVERY_MS,最小 1000 毫秒),starts.jsonl 中的启动行记录与前一次心跳的间隔,verax verify <stateDir> 可离线汇总。不可读、过期或远未来的心跳视为静默;本地监视默认触发暂停,恢复不会自动继续,需操作员走既有恢复路径;远程监视只报告静默,不能远程暂停。
安装与授权:elevated verax install 与 verax approve 运行的是只有管理员才能修改的程序副本,账户可修改的副本会被拒绝。Windows 上需由独立管理员账户运行,不能在当前账户提权,并需清除 NODE_OPTIONS、使用 -NoProfile 启动 PowerShell;Linux 和 macOS 上需使用 root 拥有的 Node。安装会从 npm 注册表安装 @verax-ai/body 到管理员拥有的目录,经签名检查后用该 Node 运行,账本保存在服务账户下。令牌在 Windows 上位于 %ProgramData%\Verax\agent-token<your SID>\agent.token,在 Linux/macOS 上由以你的 uid 运行的子进程写入 ~/.verax/agent.token。端口 8787 被占用时可使用 verax install --port 8797。0.2.2 及以后版本接受 --with-conarium,会通过 npx 下载 @conarium-ai/core 并作为子进程运行,该功能需要网络。
适用场景:需要在智能体与工具之间增加策略门禁、签名审计记录与人工审批环节的部署;需要对已执行调用进行收据对账的场景;需要离线独立核验账本、并可用自有密钥固定验证的合规或取证场景;需要多租户隔离、速率限制、暂停与撤销等运行时边界的场景。限制与未提供信息:生物识别面板(verax desktop、verax operator)尚未发布;认证面板 apps/panel 为私有、未公开发布;scripts/dev-issuer.mjs 与 scripts/demo-box.mjs 仅用于开发,非生产授权服务器;Windows 上在提权账户且用户可写 npm 前缀的副本会被拒绝;同一个主机上的监视器与账本共享该主机的信任,若两者一起消失则不构成独立证据;部分 COSE 库尚不支持算法 -19。安全报告条款与威胁模型见仓库中的 SECURITY.md 与 docs/THREAT_MODEL.md,能力矩阵见 docs/STATUS.md。