Skip to main content
Glama

NOMOS Browser

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

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

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


问题

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

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

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

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

Related MCP server: Cloudflare Playwright MCP

效果如何

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=productionnpm 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.uploadAUTO 模式下也会询问,因为它会把您的数据发送到外部,而且无法撤回

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

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

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

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

安全

  • 带作用域的令牌认证OBSERVENAVIGATEINPUTDOWNLOADUPLOADSECRETCONTROLADMIN)。每条路由都有声明的作用域;没有一条依赖默认值。

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

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

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

  • 执行路径中的防注入溯源observeextract 返回 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.mddocs/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、哪些是 MEASUREDNOT PROVENPRODUCT_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

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to control a browser through a set of tools, allowing them to perform web automation tasks like navigation, typing, clicking, and taking screenshots.
  • 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

View all related MCP servers

Related MCP Connectors

  • AI-powered browser automation — navigate, click, fill forms, and extract data from any website.

  • Runtime permission, approval, and audit layer for AI agent tool execution.

  • A paid remote MCP for AI agent browser approval MCP, built to return verdicts, receipts, usage logs,

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Voltolini-SPACE/nomos-browser'

If you have feedback or need assistance with the MCP directory API, please join our Discord server