nomos-browser
NOMOS Browser
Браузер вашего агента, с вами в комнате.
Управляемая инфраструктура навигации для ИИ-агентов. Браузер становится ресурсом платформы, а не игрушкой, привязанной к модели — и владелец видит, разрешает и прерывает то, что делает агент.
0.3.0-rc.2 · MIT · Node ≥ 22.6 · Chromium via Playwright · без шага сборки
Проблема
Дать агенту возможность использовать браузер — значит дать ему возможность покупать, отправлять, удалять и сливать данные от чьего-то имени. Обычно это решается двумя плохими способами:
слепое доверие — агент действует, а владелец узнаёт потом;
паралич — агент спрашивает всё, а владелец автоматически кликает «да», пока одобрение не становится рефлексом.
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, а не модели. Агент отключается, умирает или заменяется другим от другого поставщика: сессия остаётся живой, с теми же вкладками, куки и задачей.
Возможности
Live Agent Console | Зеркало страницы, курсор агента, полоса состояния, лента активности, центр одобрения и история только для чтения |
Два режима автономии |
|
| Автоматический режим никогда не отменяет обязательное одобрение. Это топология кода, а не обещание |
Одобрение с привязкой | Одноразовое, привязанное к действию, сессии и точным аргументам. Одобрение «Отмена» не разрешает «Подтвердить покупку» |
Маскированный секрет | Вводимый текст отображается как |
Аудит и воспроизведение | Цепочка, связанная хэшем, печать при завершении сессии, воспроизведение только для чтения в трёх слоях |
Человеческий контроль | Взятие управления замораживает агента; возврат управления требует повторного наблюдения перед действием |
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ÇÃOASK — спрашивать
Чтения проходят напрямую. Каждое действие, изменяющее страницу, останавливается и спрашивает, с последствием и ресурсом, написанными на португальском, чтобы решение было осознанным, а не рефлекторным кликом.
Одобрение 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.
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. То, что там есть, — это законные долги, а не
обещания сроков.
Документация
Начните здесь
С нуля до первого browser task | |
Консоль, её состояния и элементы управления | |
Два режима и то, что между ними не меняется | |
Воспроизводимые сценарии |
Справочник
Установка, настройка, разблокировка | |
Слои и маршруты | |
Глаголы, цели и движок задач | |
Безопасность продукта и модель угроз | |
След, печать и воспроизведение | |
Интеграции | |
Что переживает что; зрение | |
Ограничения, доказательства, прослеживаемость | |
Как делается версия; что изменилось |
Бренд
Бренд NOMOS заморожен в v1.0, и официальный резолвер отвечает rc=0.
Токены считываются из хранилища при каждой сборке и не версионируются в этом
репозитории — копировать бренд-токен в промежуточный файл запрещено
контрактом управления. См. docs/BRAND.md.
Лицензия
MIT. См. LICENSE. Правообладатель: Voltolini-SPACE.
Лицензия покрывает код. Она не предоставляет прав на бренды «NOMOS» и
«NOMOS Browser» и на токены визуальной идентичности, которые управляются
отдельно и не версионируются здесь. Подробности в NOTICE.md.
До 2026-08-25 этот репозиторий объявлял «все права защищены» с placeholder-правообладателем. Обе вещи были решением владельца и были решены.
Часть экосистемы NOMOS · voltolini.space
This server cannot be deployed
Maintenance
Related MCP Connectors
Connect AI agents to your own Chrome with scoped access, approvals, and verified task results.
Let your AI agent operate any website through a real, logged-in browser session.
Control a real browser from AI agents: navigate, click, type, screenshot, read the page.
Human-in-the-loop review and approval for AI agents. Audit trail, approval policies, native MCP.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to perform intelligent browser automation with session-based context analysis, including navigation, form filling, and content extraction through natural language.MIT
- AlicenseNot gradedqualityBmaintenanceEnables 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 npmMozilla Public 2.0
- AlicenseAqualityBmaintenanceEnables 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.7MIT
- AlicenseNot gradedqualityAmaintenanceEnables 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 npm5MIT