> ## Documentation Index
> Fetch the complete documentation index at: https://docs.befailproof.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Панель управления

> Мониторьте сеансы агентов, проверяйте вызовы инструментов и управляйте политиками

Панель управления failproofai — это локальное веб-приложение для мониторинга сеансов вашего AI-агента и управления политиками. Узнайте, что делали ваши агенты, пока вас не было.

***

## Запуск панели управления

```bash theme={null}
failproofai
```

Открывается по адресу `http://localhost:8020`.

Панель управления считывает данные локального проекта, сеанса и конфигурации failproofai непосредственно из файловой системы. Дополнительные функции с аутентификацией, такие как напоминания об аудите и приглашения, отправляют информацию, необходимую для этих запросов (включая адреса электронной почты), на удалённые API.

***

## Страницы

### Проекты

Отображает все проекты Claude Code, OpenAI Codex, GitHub Copilot CLI *(beta)*, Cursor Agent *(beta)*, OpenCode *(beta)*, Pi *(beta)*, Hermes, OpenClaw, Factory Droid, Devin, Antigravity и Goose, найденные на вашем компьютере. Проекты Claude обнаруживаются из `~/.claude/projects/` (или пути, установленного через `CLAUDE_PROJECTS_PATH`); проекты Codex обнаруживаются путём сканирования всех транскриптов в `~/.codex/sessions/<YYYY>/<MM>/<DD>/*.jsonl` и группировки по `cwd`, записанному в первой записи сеанса; проекты Copilot CLI обнаруживаются путём сканирования каждого `~/.copilot/session-state/<sessionId>/workspace.yaml` (настраивается через `COPILOT_HOME`) и группировки по полю `cwd`; проекты Cursor Agent обнаруживаются путём сканирования метаданных для каждого сеанса в `~/.cursor/agent-sessions/<sessionId>/` (настраивается через `CURSOR_HOME`, с `conversations/` и `sessions/` в качестве резервных вариантов) в поиске скаляра `cwd` в `meta.json` / `session.json` / `workspace.yaml`; проекты OpenCode обнаруживаются путём запроса к его SQLite БД в `~/.local/share/opencode/opencode.db` через `opencode db --format json` (мы читаем таблицы `session` и `project` и группируем по `project_id`); проекты Pi обнаруживаются путём сканирования транскриптов JSONL для каждого сеанса в `~/.pi/agent/sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl` (настраивается через `PI_SESSIONS_DIR`) и извлечения `cwd` из первой записи каждого сеанса; сеансы шлюза Hermes считываются непосредственно из его SQLite хранилища в `~/.hermes/state.db` (настраивается через `HERMES_DB_PATH`) и группируются в проекты `hermes-<source>` по `source` (Slack/Telegram/cli/cron — сеансы шлюза не имеют cwd); сеансы шлюза OpenClaw считываются из `~/.openclaw/agents/<agentId>/sessions/*.jsonl` и группируются в проекты `openclaw-<agentId>` (также без cwd); проекты Factory Droid обнаруживаются из транскриптов JSONL в `~/.factory/sessions/<encoded-cwd>/*.jsonl` и группируются по cwd; проекты Devin из её SQLite БД в `~/.local/share/devin/cli/sessions.db` (группируются по `working_directory` каждого сеанса); проекты Antigravity из транскриптов JSONL в `~/.gemini/antigravity-cli/brain/<conversationId>/…/transcript_full.jsonl` и группируются по cwd; и проекты Goose из её SQLite БД в `~/.local/share/goose/sessions/sessions.db` (группируются по `working_dir` каждого сеанса). Проект, используемый несколькими CLI, отображается в виде одной строки со всеми соответствующими бейджами. Используйте выпадающее меню **CLI** над таблицей для фильтрации по конкретному агенту CLI; URL сохраняет ваш выбор как `?cli=claude|codex|copilot|cursor|opencode|pi|hermes|openclaw|factory|devin|antigravity|goose`.

Каждый проект показывает:

* Имя проекта (производное от пути к папке)
* Бейдж CLI — `Claude Code` (оранжевый), `OpenAI Codex` (фиолетовый), `GitHub Copilot` (синий), `Cursor Agent` (изумрудный), `OpenCode` (янтарный), `Pi` (розовый) и/или `Hermes` (индиго)
* Дата самой свежей активности сеанса

Нажмите на проект, чтобы увидеть его сеансы.

### Сеансы

Отображает все сеансы в проекте. Каждый сеанс показывает:

* ID сеанса
* Временные метки начала и окончания
* Количество вызовов инструментов
* Счётчик активности хука (политики, которые сработали)

Используйте фильтр диапазона дат и поиск по ID сеанса для сужения списка. Сеансы разбиты на страницы.

Нажмите на сеанс, чтобы открыть просмотр сеанса.

### Просмотр сеанса

Просмотр сеанса ответит на ключевой вопрос для автономных агентов: что сделал агент и остался ли он в курсе? Бейдж CLI рядом с заголовком указывает, является ли сеанс транскриптом Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi, Hermes, OpenClaw, Factory Droid, Devin, Antigravity или Goose. Он показывает временную шкалу всего, что произошло в сеансе:

* **Сообщения** - текстовые ответы Claude и подсказки пользователя
* **Вызовы инструментов** - каждый инструмент, который вызвал Claude, с его вводом и выводом
* **Активность политики** - для каждого вызова инструмента, какие политики сработали и какое решение они вернули

Панель статистики в верхней части показывает продолжительность сеанса, общее количество вызовов инструментов и сводку решений хука (количество allow / deny / instruct).

Нажмите кнопку **Download Logs**, чтобы экспортировать сеанс. Для сеансов Claude Code, Codex, Copilot, Cursor и Pi вы получаете исходный транскрипт JSONL на диске байт-в-байт; для OpenCode (чьи сеансы находятся в SQLite, а не на диске) вы получаете JSON-документ, отражающий базовые таблицы `session` / `messages` / `parts`.

### Аудит

Доклад, ориентированный на личность, о том, как ваш агент на самом деле вёл себя в прошлых сеансах. Запускает одно и то же сканирование, что и CLI `failproofai audit`, но отображает его как однооэкранный акционный плакат + четыре раздела ниже сгиба:

1. **Плакат** — заполняет первый просмотр. Независимый регион PNG-захвата с логотипом failproof\_ai + метка аудита · индекс архетипа (`№ NN из 08`) + дата аудита · числовой балл (0–100) + таблетка процентиля (`top 15%`) · имя архетипа (один из `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + полоса с 3 ключевыми словами · строка редкости `// only N% of agents are this archetype` · сигил-плитка 8×8 пиксель · подвал `audit yours → failproof.ai`. Три кнопки обмена находятся сразу за пределами поля захвата: `post your archetype` (намерение X), `share on linkedin`, `download poster`. Захват выполняется через `html-to-image`, поэтому PNG соответствует экранному рендеру пиксель-в-пиксель (пунктирные границы, маска логотипа SVG, градиенты, метрики шрифта — всё сохраняется).
2. **Сильные стороны** — спокойный ✓ список строк поведения, которое ваш агент уже делает правильно, полученный из данных живого аудита (чистый коэффициент вызовов инструментов, без прямых толчков в main, нулевые утечки учётных данных, нулевые штормы повторных попыток) — каждая отображается только когда соответствующая политика имеет чистую историю в окне аудита.
3. **Особенности** — таблица того, что прошло сквозь пальцы, ранжированная по степени важности: `when · what slipped + the policy that would've caught it · severity pill · seen`, где повторяемость читается как `new` (один раз), `N× seen` (2–9 раз) или `recurring` (10+).
4. **Как улучшить** — спокойный список строк, по одному на рекомендуемую политику: имя политики белым, однострочное описание, команда установки + кнопка копирования с правой стороны. Заголовок раздела читается как `enable all N → projected <score> · <tier>` (балл, который вы достигли бы при применении каждого исправления), и его кнопка `[install all]` копирует объединённую команду `failproofai policy add a b c …` для каждой рекомендуемой политики.
5. **Come back better** — две карточки рядом. Слева: установить напоминание (выбор интервала `3d` / `7d` / `14d` / `30d`; сохраняется через `/api/auth/reminder` после аутентификации). Справа: разблокировать привилегии failproof — `invite a friend` открывает модальное окно, которое принимает список адресов электронной почты друзей, разделённые запятыми/пробелами/новыми строками (максимум 10 за отправку), отправляет их на `/api/audit/invite`, которая перенаправляет на `POST /v0/invite` api-сервера. Api-сервер отправляет одно письмо на получателя с адреса `invite@failproof.ai` с копией отправителю и установленным `Reply-To`, поэтому получатель видит, кто его пригласил, а отправитель получает копию в своем почтовом ящике. Анонимные пользователи маршрутизируются сначала через `AuthDialog`, чтобы электронная почта отправителя была известна до отправки приглашений. Выполнение прав и привилегий — это последующее действие.

Управляется временем выполнения `failproofai audit` — см. [Audit CLI](/ru/cli/audit) для механизма базового сканирования, поддерживаемых флагов и инвариантов кэша для каждого транскрипта. Панель управления кэширует последний результат в `~/.failproofai/audit-dashboard.json` (режим `0600`, один слот, новые прогоны перезаписывают) так что повторные посещения происходят мгновенно; **оба кэши (для каждого транскрипта и общий результат) отклоняются при чтении, когда они старше 7 дней**, так что панель управления никогда не молча не служит недельный результат — после TTL `/audit` падает в его пустое состояние и предлагает свежий прогон. Нажимая `[ re-audit now ]` рядом с концом доклада, отправляет POST на `/api/audit/run` с `noCache: true` — повторный аудит обходит кэш для каждого транскрипта и повторно сканирует каждый транскрипт с нуля, а не молча возвращает кэшированный результат — и панель управления опрашивает `/api/audit/status` при 1Hz до завершения прогона; клейкая розовая полоса прогресса прикрепляется к верхней части области просмотра во время прогона с истёкшим таймером, и свежий результат встаёт на место при успехе (без полной перезагрузки страницы; неудачный повторный аудит оставляет предыдущий отчёт в целости). При отказе полоса становится красной с копией, обусловленной `RerunError.kind` (`timeout` / `network` / `post_failed`). Пустое состояние (нет кэша или истёк) и нулевое состояние сеансов (кэш существует, но сканирование не нашло транскриптов) отображаются отдельно.

### Политики

Двухвкладочная страница для управления политиками и проверки активности.

<Tabs>
  <Tab title="Вкладка Policies">
    * Мульти-выбор того, какие агенты CLI защищает failproofai с одной панели — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi и Hermes все имеют строку со статусом установки (`Active` / `Detected` / `Inactive`), путём настроек пользовательской области и акцентом с цветом бренда. Установите или снимите флажки для CLI, которые вы хотите, и нажмите `Apply changes`, чтобы установить/удалить различие за один раз. CLI, чей бинарный файл обнаружен в PATH, предварительно проверяются.
    * Переключайте отдельные политики с помощью одного щелчка (записывает в `~/.failproofai/policies-config.json` — общие для каждого установленного CLI)
    * Разверните политику, чтобы настроить её параметры (для политик, которые поддерживают `policyParams`)
    * Установите пользовательский путь файла политик
  </Tab>

  <Tab title="Вкладка Activity">
    * Полная разбитая на страницы история каждого события хука, которое произошло во всех сеансах
    * Фильтровать по решению, типу события, CLI (Claude Code / OpenAI Codex / GitHub Copilot *(beta)* / Cursor Agent *(beta)* / OpenCode *(beta)* / Pi *(beta)* / Hermes / OpenClaw / Factory Droid / Devin / Antigravity / Goose), названию политики или ID сеанса
    * Каждая строка показывает: метку времени, имя политики, решение, бейдж CLI (оранжевый = Claude Code, фиолетовый = OpenAI Codex, синий = GitHub Copilot, изумрудный = Cursor Agent, янтарный = OpenCode, розовый = Pi, индиго = Hermes, сине-зелёный = OpenClaw, розово-красный = Factory Droid, фиолетово-синий = Devin, голубой = Antigravity, лайм = Goose), имя инструмента, ID сеанса и причину решений deny/instruct
    * Нажмите на ID сеанса, чтобы открыть его транскрипт — средство просмотра автоматически определяет, какой CLI запустил хук (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state/<id>/events.jsonl`, Cursor Agent `~/.cursor/agent-sessions/<id>/events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions/<encoded-cwd>/<id>.jsonl`, Hermes `~/.hermes/state.db`, OpenClaw `~/.openclaw/agents/<id>/sessions/*.jsonl`, Factory Droid `~/.factory/sessions/<encoded-cwd>/<id>.jsonl`, Devin `~/.local/share/devin/cli/sessions.db`, Antigravity `~/.gemini/antigravity-cli/brain/<id>/…/transcript_full.jsonl`, Goose `~/.local/share/goose/sessions/sessions.db`) и отображает соответствующий бейдж CLI в заголовке
  </Tab>
</Tabs>

***

## Авто-обновление

Панель управления имеет переключатель авто-обновления в верхней навигации. Если это включено, текущая страница обновляется периодически, чтобы показывать новые сеансы и активность политик при их появлении. Эссенциально для мониторинга долгих сеансов автономного агента.

***

## Отключение страниц

Если вам нужны только некоторые части панели управления, установите `FAILPROOFAI_DISABLE_PAGES` в разделённый запятыми список имён страниц:

```bash theme={null}
FAILPROOFAI_DISABLE_PAGES=policies failproofai
```

Допустимые значения: `policies`, `projects`, `audit`.

***

## Настройка пути к проектам

По умолчанию панель управления читает из стандартного каталога проектов Claude Code. Переопределите его для пользовательских настроек:

```bash theme={null}
CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai
```

***

## Доступ с хоста, отличного от localhost

При запуске панели управления в **режиме разработки** (`npm run dev`) и доступе к ней с имени хоста, отличного от `localhost` - например, пользовательского домена, удалённого IP или туннелированного URL - вы можете увидеть предупреждение типа:

```text theme={null}
⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com".
```

Это Next.js блокирует кросс-источник доступ к своему вебсокету HMR (горячая перезагрузка модулей), который является функцией только для разработки. Чтобы разрешить ваш хост, используйте флаг `--allowed-origins`:

```bash theme={null}
npm run dev -- --allowed-origins dashboard.example.com
```

Для нескольких хостов или IP передайте разделённый запятыми список:

```bash theme={null}
npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5
```

Вы также можете установить переменную окружения `FAILPROOFAI_ALLOWED_DEV_ORIGINS` вместо этого:

```bash theme={null}
FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev
```

<Note>
  Это применяется только к режиму разработки. При запуске `failproofai` (режим производства) нет вебсокета HMR и нет проблемы кросс-источник ресурса разработки.
</Note>
