Skip to main content
Glama

NOMOS Browser

您的代理的浏览器,让您全程在场。

面向 AI 代理的受治理浏览基础设施。浏览器成为平台资源,而不是挂在模型上的玩具——所有者可以看到、授权并中断代理的操作。

0.3.0-rc.2 · MIT · Node ≥ 22.6 · 通过 Playwright 使用 Chromium · 无需构建步骤


问题

让代理拥有浏览器的能力,就是让它拥有以他人名义购买、发送、删除和泄露的能力。这个问题通常用两种糟糕的方式解决:

  • 盲目信任——代理先行动,所有者事后才发现;

  • 瘫痪——代理什么都问,所有者机械地点击"是",直到批准变成条件反射。

NOMOS Browser 将所有者已授权的内容与现在需要同意的事项分开,并让这种区别可见、可审计、可撤销。

Related MCP server: gaze

效果如何

NOMOS · Claude · Gemini · Qwen · Ollama · agente próprio
                        │
      MCP  ·  REST v1  ·  WebSocket  ·  SDK  ·  CLI  ·  Live Agent Console
                        │
              NOMOS BROWSER RUNTIME
        política → autonomia → aprovação → auditoria
                        │
                 Playwright · CDP
                        │
                     Chromium

浏览状态属于 Runtime,而不是模型。代理断开连接、崩溃或被替换为另一家供应商的代理:会话继续存活,保留相同的标签页、Cookie 和任务。


功能

Live Agent Console

页面镜像、代理光标、状态条、活动流、审批中心和只读历史记录

两种自主模式

ASK 在每次改变页面的操作前询问;AUTO 自动执行您已授权的操作

AUTO 不是绕过

自动模式永远不会移除强制审批。这是代码拓扑,不是承诺

带约束的审批

一次性使用,绑定到操作、会话和精确参数。批准"取消"不会授权"确认购买"

机密遮蔽

要输入的文本显示为 [隐藏: 24 个字符, C…Z]:足以做出决定,绝不足以泄露

审计与回放

哈希链式追踪,会话结束时加盖封条,三层只读回放

人工控制

接管方向盘会冻结代理;交还控制权后必须先重新观察才能行动

23 个动词,16 个 MCP 工具

单一契约,通过 MCP、REST、WebSocket、SDK 和 CLI 提供

演示

Live Agent Console 由运行时本身提供,位于同一源,使用 CSP connect-src 'self'——没有可被利用的宽松 CORS。

node packages/api/src/daemon.ts
# abra a URL com o token que o daemon imprime

带有预期结果的可复现脚本位于 docs/demos.md。


安装

npm ci --include=dev
npx playwright install chromium

--include=dev 不是装饰:使用 NODE_ENV=production 或 npm config omit=dev 时,npm ci 会跳过 devDependencies,之后类型检查会失败并显示 "This is not the tsc command you are looking for"。详情见 docs/INSTALLATION.md。

运行时没有构建步骤:Node 原生执行 TypeScript。界面有自己的步骤(node packages/ui/build.ts),因为每次生成时都要从保险库读取品牌令牌。

快速开始

# 1. subir o runtime
node packages/api/src/daemon.ts &

# 2. estado
node packages/cli/src/main.ts health

# 3. abrir uma página (a sessão nasce com a política padrão)
node packages/cli/src/main.ts open https://example.com

# 4. ver o que ficou gravado
node packages/cli/src/main.ts sessions
node packages/cli/src/main.ts replay <SESSION_ID>

CLI 永远不会授予敏感能力:由它创建的会话天生禁止下载、上传、发送、购买、支付和删除。

示例

# capturar a tela de uma sessão
node packages/cli/src/main.ts screenshot <SESSION_ID> --out /tmp/tela.png

# entregar um objetivo ao agente
node packages/cli/src/main.ts task --session <SESSION_ID> "encontre o preço do plano anual"

# acompanhar os eventos ao vivo
node packages/cli/src/main.ts events --session <SESSION_ID>

# verificar a integridade do replay gravado
node packages/cli/src/main.ts replay verify <SESSION_ID>

ASK 和 AUTO

层级结构,而顺序就是保证:

POLÍTICA DO DONO → MODO DE AUTONOMIA → CAPABILITY DO NOMOS → GATES DE APROVAÇÃO → AÇÃO

ASK — 询问

读取直接通过。每个改变页面的操作都会停下来询问,后果和补救措施用中文写明,让决定是有意识的,而不是反射性的点击。

批准一个 browser.task 不是空白支票:计划决定执行的每一步都会重新进入闸门。

AUTO — 无需询问即可行动

代理自动执行您已通过策略授权的所有内容。不会改变的是:

  • 具有财务影响、外部发送或高不可逆性的操作仍然需要审批——browser.upload 在 AUTO 模式下也会询问,因为它会把您的数据发送到外部,而且无法撤回;

  • 没有声明风险配置文件的路径会落入"始终批准"(fail-closed);

  • 如果无法证明自主状态(运行时崩溃、重新连接),界面绝不显示 AUTO:降级为未知并视为 ASK。

AUTO != BYPASS 不是文档承诺。自主闸门在 capability 和人工控制之后运行:当它执行时,策略拒绝的一切已经返回 403。代码中不存在将 deny 变成 allow 的分支。

更多内容见 docs/ask-mode.md 和 docs/auto-mode.md。

安全

  • 带作用域的令牌认证(OBSERVE、NAVIGATE、INPUT、DOWNLOAD、UPLOAD、SECRET、CONTROL、ADMIN)。每条路由都有声明的作用域;没有一条依赖默认值。

  • 行动者不能授权。 代理配置文件无法批准、委派模式或恢复。停止则可以:pause 和 emergency-stop 永远不能比行动更难。

  • 按 capability 的 fail-closed 策略,A6_DESTRUCTIVE 被拒绝。

  • 反 SSRF:导航到内部主机是显式行为,绝不推断。

  • 执行路径中的防注入溯源:observe 和 extract 返回 provenance。

  • 强制控制租约(allow_unleased: false)。

  • 机密不会出现在界面、审计或回放中。

T1–T10 威胁模型,带有声明的残留风险,见 docs/SECURITY.md。

这里没有任何"100% 安全"的说法。没有任何措施能支撑这一点,也永远不会有。

审计与回放

每次操作 19 个字段的追踪,哈希链式连接,源头即进行机密编辑。结束时,会话被封存。

回放是三个独立层的只读:路由上没有写入动词(405 + Allow: GET);读取历史不会复活会话;模式由运行时声明,而不是由界面推断。

它对自己的读取也是诚实的:报告损坏的行和缺失的来源,而不是返回一个更短但自称完整的时间线。从未存在的会话返回 404,而不是空的 200 回放。

见 docs/audit-and-replay.md。

MCP

16 个工具,不依赖特定模型:

browser_navigate · browser_observe · browser_find · browser_extract · browser_screenshot · browser_click · browser_type · browser_press · browser_scroll · browser_tabs · browser_tab_open · browser_tab_switch · browser_tab_close · browser_download · browser_upload · browser_task

在 NOMOS 生态系统中,浏览器是一种由所有者策略治理的 capability,带有签名目录和基于规范化清单指纹的信任。见 docs/mcp.md 和 docs/NOMOS-INTEGRATION.md。

配置

51 个键,可由运行时本身查询:

curl -s localhost:7777/api/v1/config/schema   # a FORMA (pública)
curl -s localhost:7777/api/v1/config          # os VALORES efetivos (ADMIN)

这种分离是刻意的:"存在什么?" 可以回答给任何持有者;"这里生效的是什么?" 则不能。见 docs/CONFIGURATION.md。

故障排除

症状 → 原因 → 验证 → 修复,见 docs/TROUBLESHOOTING.md。


开发

npx tsc --noEmit                    # tipos
bash scripts/run-suite.sh           # suíte inteira, um arquivo por vez
bash scripts/run-suite.sh --fast    # pula browser/bench
bash scripts/regressao-completa.sh  # 15 etapas, um veredito
bash scripts/limpar-orfaos.sh       # higiene por prova de posse

使用执行器,不要直接使用 node --test tests/。Node 的 runner 按 CPU 并行化;在内存压力下进程会在中途死亡,留下截断的输出没有摘要行,看起来像是成功。run-suite.sh 一次运行一个文件,死文件会显示为 MORTO。

测试

在 HEAD 6964cf0 上测量:

suíte TypeScript     789 passes · 0 falhas · 37/37 arquivos
E2E do Live Agent    106 casos  · 9 baterias
sala limpa           14/14 passos, a partir de clone do HEAD
regressão completa   15 etapas · 0 falha · 0 não-executada

项目拒绝把未观察到的东西称为 PASS。两个例子:

浏览器控制是真实的。 JavaScript 合成的点击到达页面时 isTrusted=false;通过 CDP 派发的到达时 true。spike 测试两者——第二个证明控制,第一个证明测试不是真空。

审批计数器不是盲目的。 在产品变异下,UNEXPECTED_APPROVAL_PROMPTS 根据注入的缺陷从 0 变为 3 再变为 5。在变异下保持为零的计数器没有在测量任何东西。

已知限制

  • p99 在任何延迟路径上都不报告:30 个样本需要 100 个才能支撑 p99。没有任何观察到的最大值被称为 p99。

  • 没有用于签发带作用域令牌的 HTTP 路由——它存在于内部 API 中。

  • pr.page.isClosed() 分支在正常操作中不可达;它是竞态防御,不是覆盖率。

  • 界面状态条通过 700 毫秒轮询更新。 事件在 ~1 毫秒内到达;状态条不会。

  • 已在 macOS/Apple Silicon 上验证。其他平台未测量。

完整列表(含数字)见 docs/LIMITATIONS.md,哪些是 PROVEN、哪些是 MEASURED 或 NOT PROVEN 见 PRODUCT_TRUTH_MATRIX.md。

路线图

见 ROADMAP.md。那里列的是合理的债务,不是日期承诺。


文档

从这里开始

quickstart.md

从零到第一个浏览器任务

live-agent-console.md

控制台、其状态和控件

ask-mode.md · auto-mode.md

两种模式,以及它们之间不变的内容

demos.md

可复现脚本

参考

INSTALLATION.md · CONFIGURATION.md · TROUBLESHOOTING.md

安装、配置、解锁

ARCHITECTURE.md · API.md

层次与路由

browser-control.md · tasks.md · TASK-ENGINE.md

动词、目标与任务引擎

security-overview.md · SECURITY.md

产品安全与威胁模型

audit-and-replay.md · AUDIT.md

轨迹、印章与重放

mcp.md · NOMOS-INTEGRATION.md · GI-INTEGRATION.md

集成

RECOVERY.md · VISION-PROVIDER.md

什么在什么之上存活;视觉

LIMITATIONS.md · EVIDENCIA.md · RASTREABILIDADE.md

限制、证据、可追溯性

RELEASE.md · CHANGELOG.md

如何发布版本;变更内容

品牌

NOMOS 品牌冻结在 v1.0,官方解析器返回 rc=0。 每次构建时从保险库读取令牌,且不在本仓库中进行版本控制——根据治理契约,禁止将品牌令牌复制到中间文件中。参见 docs/BRAND.md。

许可证

MIT。 参见 LICENSE。持有人:Voltolini-SPACE。

许可证涵盖代码。它不授予对"NOMOS"和"NOMOS Browser"商标或视觉标识令牌的权利,这些由单独管理且不在此处进行版本控制。详情见 NOTICE.md。

截至 2026-08-25,此仓库曾声明"保留所有权利"并带有占位持有人。这两项都是所有者的决定,且已作出决定。

NOMOS 生态系统的一部分 · voltolini.space

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to perform intelligent browser automation with session-based context analysis, including navigation, form filling, and content extraction through natural language.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to drive a real, already logged-in browser from the CLI or over MCP, with enforceable approval gates for actions and safeguards against prompt injection.
    1,133,569 npm
    Mozilla Public 2.0
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to automate browsers through Playwright behind multi-layer safety guards, restricting navigation to allowed domains, defaulting to read-only actions, and recording all behavior in audit logs.
    7
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to drive a real Chrome browser for autonomous web tasks, using fast typed decisions with calibrated confidence, human-in-the-loop questions, safety gates, and full debug traces.
    347 npm
    5
    MIT