Skip to main content
Glama

NOMOS Browser

Браузер вашего агента, с вами в комнате.

Управляемая инфраструктура навигации для ИИ-агентов. Браузер становится ресурсом платформы, а не игрушкой, привязанной к модели — и владелец видит, разрешает и прерывает то, что делает агент.

0.3.0-rc.2 · MIT · Node ≥ 22.6 · Chromium via Playwright · без шага сборки


Проблема

Дать агенту возможность использовать браузер — значит дать ему возможность покупать, отправлять, удалять и сливать данные от чьего-то имени. Обычно это решается двумя плохими способами:

  • слепое доверие — агент действует, а владелец узнаёт потом;

  • паралич — агент спрашивает всё, а владелец автоматически кликает «да», пока одобрение не становится рефлексом.

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, а не модели. Агент отключается, умирает или заменяется другим от другого поставщика: сессия остаётся живой, с теми же вкладками, куки и задачей.


Возможности

Live Agent Console

Зеркало страницы, курсор агента, полоса состояния, лента активности, центр одобрения и история только для чтения

Два режима автономии

ASK спрашивает перед каждым действием, изменяющим страницу; AUTO выполняет самостоятельно то, что вы уже разрешили

AUTO не является обходом

Автоматический режим никогда не отменяет обязательное одобрение. Это топология кода, а не обещание

Одобрение с привязкой

Одноразовое, привязанное к действию, сессии и точным аргументам. Одобрение «Отмена» не разрешает «Подтвердить покупку»

Маскированный секрет

Вводимый текст отображается как [скрыто: 24 символа(ов), C…Z]: достаточно для решения, но никогда не достаточно для утечки

Аудит и воспроизведение

Цепочка, связанная хэшем, печать при завершении сессии, воспроизведение только для чтения в трёх слоях

Человеческий контроль

Взятие управления замораживает агента; возврат управления требует повторного наблюдения перед действием

23 глагола, 16 инструментов MCP

Единый контракт, предоставляемый через MCP, REST, WebSocket, SDK и CLI

Демонстрация

Live Agent Console обслуживается самим runtime, на том же источнике, с 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.

Нет шага сборки для runtime: 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 никогда не предоставляет чувствительные capability: сессия, созданная ею, рождается с запрещёнными download, upload, send, purchase, payment и delete.

Примеры

# 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);

  • если состояние автономии не может быть подтверждено (runtime упал, переподключение), интерфейс никогда не показывает 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 никогда не могут быть сложнее, чем действовать.

  • Политика fail-closed по capability, с A6_DESTRUCTIVE запрещённым.

  • Анти-SSRF: переход на внутренний хост — явное действие, никогда не выводимое.

  • Анти-инъекционная процедура в пути выполнения: observe и extract возвращают provenance.

  • Обязательная аренда управления (allow_unleased: false).

  • Секреты не появляются в интерфейсе, аудите или воспроизведении.

Модель угроз T1–T10, с объявленными остатками, находится в docs/SECURITY.md.

Ничто здесь не утверждает «100% безопасно». Ни одна мера этого не поддерживает, и ни одна никогда не поддержит.

Аудит и воспроизведение

Цепочка из 19 полей на каждое действие, связанная хэшем, с редактированием секрета в источнике. При завершении сессия опечатывается.

Воспроизведение доступно только для чтения в трёх независимых слоях: на маршруте нет глагола записи (405 + Allow: GET); чтение истории не воскрешает сессию; и режим объявляется runtime, а не выводится экраном.

Он также честен в отношении собственного чтения: сообщает о повреждённых строках и отсутствующих источниках, вместо того чтобы возвращать более короткую временную шкалу, которая представляется полной. Сессия, которой никогда не существовало, — это 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 ключ, доступный для запроса через сам runtime:

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 распараллеливает по 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. Спайк тестирует оба — второй доказывает управление, первый доказывает, что тест не пустой.

Счётчик одобрений не слепой. При мутации продукта 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

С нуля до первого browser task

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 этот репозиторий объявлял «все права защищены» с placeholder-правообладателем. Обе вещи были решением владельца и были решены.

Часть экосистемы 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