Данные — на сервере установки. Доступ — через роли.
Eyeward целиком работает на одном сервере: база, файлы, поиск, почта, чат и офисный редактор. Ниже — из чего он состоит, что и зачем уходит наружу, как устроены вход, роли и токены и как хранятся секреты.
Схема: к серверу установки подключаются браузер, клиент Eyeward Sync и ИИ-агенты. На сервере три слоя: приложение (сервер приложения и фоновые задачи), сервисы (чат, почта, офисные файлы, поиск по тексту и по смыслу, кэш) и данные (база данных и файлы на локальном диске). Наружу по делу уходят запросы к машине с Ollama, к источникам курсов валют, к календарю праздников, к push-сервисам браузеров, к почтовым серверам и к хостингу сайтов.
Наружу уходит только это — и только когда нужно
Каждая строка срабатывает, только когда этой возможностью пользуются: выбрали источник курсов, подписались на пуши, опубликовали сайт.
| Куда | Что уходит | Когда |
|---|---|---|
| Машина с Ollama — в вашей сети | Тексты записей, комментариев, заметок и текстовое содержимое файлов — чтобы построить смысловой индекс | Пока включён смысловой поиск. Без Ollama поиск работает только по тексту |
| ЦБ РФ, НБРБ, ЕЦБ | Только запрос курса валют | Когда пользователь выбрал источник курсов для поиска; по умолчанию источника нет |
| Nager.Date | Код страны и год — в ответ список праздников; он хранится на сервере три месяца | Когда включены государственные праздники в календаре Ганта или поздравления по стране из профиля |
| Push-сервис вашего браузера | Текст уведомления, зашифрованный для вашего браузера | Если вы разрешили пуши на устройстве |
| Почтовые серверы адресатов | Письма, которые вы отправляете на внешние адреса | При отправке письма наружу |
| Ваш прежний почтовый сервер | Подключение по IMAP для переноса почты. После разового переноса пароль источника стирается | Пока идёт перенос или включено отслеживание |
| Ваш хостинг сайтов | Файлы опубликованного сайта по SSH/SFTP | Когда вы нажимаете «Опубликовать» |
| ИИ-агент, которому вы выдали токен | То, что агент прочитал, — в пределах ролей владельца токена | Пока токен не отозван |
Входящие из интернета: формы и чат опубликованных сайтов обращаются к серверу Eyeward, поэтому для них у приложения должен быть публичный адрес. Сервер чата с чужими серверами не связан: федерация и регистрация в нём выключены, войти в чат можно только через Eyeward.
Вход: пароль, второй фактор и сеансы на виду
Обычный вход — логин или почта и пароль. Второй фактор каждый включает себе сам, а владелец компании видит, у кого из сотрудников он уже подключён.
Пароль · Второй фактор · Вход по QR · Сеансы · Блокировка
- Пароль
- Хранится как хеш scrypt — восстановить его из базы нельзя, только сбросить.
- Второй фактор
- Код из Google Authenticator или другого приложения (TOTP). При подключении выдаются резервные коды — каждый срабатывает один раз. После серии неверных кодов вход временно блокируется.
- Вход по QR
- Устройство, где вы уже вошли, показывает QR-код. Код живёт 2 минуты и срабатывает один раз.
- Сеансы
- В разделе «Устройства» видны все активные сеансы: тип устройства, система, IP-адрес, последняя активность. Незнакомый сеанс завершается одной кнопкой.
- Блокировка
- Бан пользователя закрывает все способы входа сразу — и сеансы, и токены устройств и агентов.
Приложение-аутентификатор демо
Eyeward (demo)
Резервные коды: выданы при подключении, каждый срабатывает один раз
Код считается в вашем браузере по алгоритму TOTP из случайного демо-ключа и никуда не отправляется.
Роли решают, кто что видит — до поля и до записи
Доступ выдаётся только ролями компании, персональных прав нет. Несколько ролей складываются: вторая никогда ничего не отнимает. Проверяет права сервер.
Пример: модуль «Заказы» ООО «Гидровельм». Роли и уровни условные — механизм настоящий.
- Уровни 1–100
- Поле видно, если уровень роли в модуле не ниже уровня чтения поля, и правится — если не ниже уровня изменения. Уровень есть и у записи: запись выше допуска не попадает в список.
- Исключения по полям
- Для отдельной роли уровень конкретного поля можно переопределить — открыть его или закрыть.
- Условия «только свои»
- Условие сравнивает поле записи с текущим пользователем — например, «Назначено для» — или смотрит на «Создателя записи». Оно только отсекает и расширить доступ не может.
- Предпросмотр
- Роль проверяют глазами сотрудника без тестового аккаунта: «Просмотреть как эта роль» или «От лица сотрудника», в безопасном режиме «Только чтение», с разбором «Что видно».
- Проверка на сервере
- Поле, закрытое уровнем, сервер вырезает из ответа: его нет ни в форме, ни в списке, ни в выгрузке.
- Кто обходит роли
- Создатель модуля, владелец компании и суперадмин установки. Больше никто.
Токен показывается один раз, а в базе остаётся только хеш
Клиент синхронизации и ИИ-агенты входят не паролем, а токеном. У каждого токена своя область: он открывает ровно то, для чего выдан.
Инструменты агента с этим токеном mcp_read
- whoami
- list_modules
- get_module_schema
- query_records
- get_record
- search
- create_record — нет у «Только чтение»
- update_record — нет у «Только чтение»
Инструмента удаления нет ни у одного токена.
1 — Префикс · 2 — Секрет · 3 — Хеш
- Префикс. eyw_mcp_ — доступ агента к записям, eyw_dev_ — клиента синхронизации к файлам. Увидели строку в логе или конфиге — сразу понятно, что именно утекло.
- Секрет. Строка показывается один раз — при выдаче. Потерялась — отзовите токен и выдайте новый.
- Хеш. Сервер хранит только sha256 от строки. Сам токен из базы не восстановить.
| Кто пользуется | Префикс | Область | Что открывает |
|---|---|---|---|
| Eyeward Sync | eyw_dev_ | files | Раздел «Файлы» и проверку обновлений клиента — больше ничего |
| ИИ-агент, «Только чтение» | eyw_mcp_ | mcp_read | 6 инструментов чтения: модули, схемы, записи, поиск |
| ИИ-агент, «Чтение и запись» | eyw_mcp_ | mcp | Ещё создание и изменение записей. Инструмента удаления нет |
Агент работает от имени владельца токена и в пределах его ролей. Отзыв действует сразу, бан пользователя закрывает и его токены. Других ключей нет: общих API-ключей у Eyeward нет.
Каждое изменение записано — и почти всё можно откатить
Центр активности собирает единый журнал: кто, что и когда изменил во всей системе. Каждый видит в нём только события модулей, к которым у него есть доступ. Удалили запись — её история в журнале осталась.
Активность
Единый журнал действий пользователей во всей системе
Сегодня
- 16:05
Марина Гулевич Изменено Запись · Заказы
ЗАК-0042 Насосная станция НС-40
- Статус: Подтверждён → В производстве
- Себестоимость: 94 100,00 Br → 96 300,00 Br
- 15:48
Игорь Савчук Создано Запись · Счета
СЧ-0118 Аванс по ЗАК-0042
- 15:20
Иван Сидоренко Создано Комментарий · Заказы
ЗАК-0047 Модернизация пресса П-160
- Текст: «Рама сварена, передаём в покраску»
- 14:55
Марина Гулевич Удалено Запись · Заказы
ЗАК-0041 Насосная станция НС-40 (дубль)
- 14:10
Иван Сидоренко Создано Запись · Заказы
ЗАК-0041 Насосная станция НС-40 (дубль)
- 13:37
Игорь Савчук Изменено Запись · Клиенты
Ольвата-Энерго
- Отсрочка платежа, дней: 14 → 30
- 12:02
Марина Гулевич Восстановлено Запись · Счета
СЧ-0112 Оплата по ЗАК-0045
- Сумма: 19 575,00 Br → 21 750,00 Br
- 11:15
Игорь Савчук Изменено Поле · Заказы
Срок поставки
- Обязательное: нет → да
По этим фильтрам событий нет
Записи · Настройки модуля · Документы, графики, пространства · Файлы
- Записи
- Версии с парами «было → стало», у таблиц — построчно. Откат всей записи или одного поля. Источник каждой правки подписан — форма, Канбан, Гант, импорт и ещё 8.
- Настройки модуля
- Каждое сохранение — отдельная версия. Модуль возвращается к любой из них.
- Документы, графики, пространства
- Публикуются версиями — к прошлой можно вернуться.
- Файлы
- История версий содержимого со сравнением и кнопкой «Вернуть»; удалённые файлы попадают в корзину.
- Удалённая запись
- Не восстанавливается: корзины записей нет. Диалог удаления заранее перечисляет, что исчезнет вместе с записью.
Откат версий и очистка истории — отдельные операции роли: их выдают не всем.
Живой макет истории версий модуля «Заказы». У каждой прошлой версии есть кнопка «Вернуть модуль к этой версии»: она показывает, что изменится, а после подтверждения записывает новую версию поверх — прежние остаются в истории.
Каждое сохранение настроек модуля — отдельная версия: что изменилось, кто и когда. К любой версии можно вернуться.
-
Марина Гулевич 22.09.2026, 16:40:12 Версия 14 поля и форма Текущая
Поля
- Срок поставки обязательность
- добавлено Себестоимость
-
Игорь Савчук 19.09.2026, 11:15:47 Версия 13 статусы
Статусы
- добавлено Готов к отгрузке
-
Марина Гулевич 15.09.2026, 09:32:05 Версия 12 правила
Правила
- добавлено Срочный заказ → уведомить начальника участка
-
Иван Сидоренко 10.09.2026, 14:05:31 Версия 11 настройки
Настройки
- Требовать утверждения
выкл.вкл.
- Требовать утверждения
Настройки, поля, форма, правила, статусы и действия станут такими, какими были в этой версии. История не переписывается: поверх ляжет новая версия, и её тоже можно будет откатить.
Откат не трогает связи модуля и его привязку к компании.
Как хранятся секреты — и что остаётся за вами
Писать «всё зашифровано» мы не будем. Вот как хранятся секреты — и где защиту дополняет владелец установки.
| Что | Как хранится |
|---|---|
| Пароли пользователей | хеш Хеш scrypt — из базы не восстановить |
| Пароли публичных ссылок на файлы | хеш Хеш scrypt |
| Токены устройств и агентов | хеш Только хеш sha256 |
| Секрет второго фактора и резервные коды | шифр Зашифрованы библиотекой входа ключом сервера |
| SSH-доступ к хостингу сайтов: ключ, пароль, passphrase | шифр AES-256-GCM, ключ выводится из секрета сервера. Это единственные секреты интеграций, которые Eyeward шифрует сам |
| Доступы почты: ящики, IMAP и SMTP, ключи DKIM | на сервере Только в базе на сервере установки. В браузер не отдаются никогда |
| Записи, файлы, письма, сообщения чата | на сервере На сервере установки. Шифрование хранилища — средствами диска, см. ниже |
Что стоит знать
- В чате нет сквозного шифрования: сообщения хранит сервер установки.
- Удаление записи необратимо: корзины записей нет.
- Смысловой поиск отправляет тексты на машину с Ollama — держите её в своей сети.
Что сделать владельцу установки
- Закрыть доступ к серверу и базе данных всем, кому он не нужен.
- Шифровать диски и резервные копии базы и файлов.
- Попросить второй фактор у всех, у кого широкие роли, — владелец видит, у кого он уже включён.
Проверьте на своём процессе
На демо покажем роли и предпросмотр глазами сотрудника, журнал активности и откат версий — на примере, близком к вашему.