# Gateway ## Что такое Gateway? Gateway, это сердце Neotask, единый долго работающий сервис, управляющий всеми сессиями агентов, каналами обмена сообщениями, выполнением инструментов и подключениями устройств. Всё проходит через Gateway. Это WebSocket-сервер, который прослушивает подключения от клиентов (десктопное приложение, мобильные приложения, веб-дашборд) и управляет полным жизненным циклом ИИ-ассистента. ## Архитектура ### Компоненты - **WebSocket-сервер**, принимает клиентские подключения (порт по умолчанию 18789) - **HTTP-сервер**, обслуживает Control UI, хост canvas и эндпоинты проверки работоспособности - **Адаптеры каналов**, поддерживают подключения к платформам обмена сообщениями (WhatsApp, Telegram, Discord и т.д.) - **Менеджер сессий**, сохраняет и управляет состоянием разговоров агентов - **Cron-планировщик**, выполняет запланированные задания и пробуждения heartbeat - **Среда выполнения плагинов**, загружает и управляет жизненным циклом плагинов - **Сервис браузера**, управляет экземплярами Chromium для веб-автоматизации ### Режимы привязки | Режим | Описание | |------|-------------| | **Loopback** | По умолчанию. Доступен только с localhost (127.0.0.1) | | **LAN** | Доступен в локальной сети. Автоматическое обнаружение через Bonjour/mDNS | | **Tailnet** | Доступен через Tailscale VPN с MagicDNS | | **Custom** | Привязка к конкретному адресу | ### Аутентификация | Метод | Описание | |--------|-------------| | **Token** | Bearer-токен WebSocket (UUID или пользовательская строка) | | **Password** | Аутентификация по паролю (хеш bcrypt) | | **Trusted Proxy** | Для обратных прокси с заголовками предварительной аутентификации | | **Local Trust** | Loopback-соединения одобряются автоматически | ## Конфигурация Gateway настраивается через `neotask.json` (формат JSON5). Ключевые разделы: | Раздел | Управляет | |---------|----------| | `agents` | Список агентов, настройки по умолчанию, рабочие пространства | | `gateway` | Порт, режим привязки, аутентификация, поведение перезагрузки | | `channels` | Конфигурация и учётные данные для каждого канала | | `tools` | Разрешения для инструментов, профили, безопасность | | `plugins` | Загрузка плагинов, включение, конфигурация для каждого плагина | | `models` | Аутентификация провайдера, резервные варианты, настройки провайдера | | `skills` | Директории навыков, конфигурация для каждого навыка | | `browser` | Профили браузера, порты, режим headless | | `cron` | Конфигурация планировщика | | `session` | Правила сброса, пороги уплотнения | | `messages` | Настройки TTS, политики медиа | | `memory` | Конфигурация индексирования памяти | | `security` | Изоляция в sandbox, расширенный режим, подтверждения | ### Горячая перезагрузка Изменения конфигурации могут применяться без перезапуска: | Режим | Поведение | |------|----------| | **Hybrid** (по умолчанию) | Горячее применение безопасных изменений, перезапуск для остальных | | **Hot** | Применять только горячие изменения, игнорировать остальные | | **Restart** | Перезапуск при любом изменении, требующем перезагрузки | | **Off** | Без автоматической перезагрузки | ## Удалённый доступ ### Tailscale (Рекомендуется) Tailscale обеспечивает безопасный удалённый доступ без настройки: - Привязать Gateway к вашей Tailnet - Доступ с любого устройства в той же сети Tailscale - Автоматический DNS через MagicDNS - Tailscale Serve может открыть дашборд по HTTPS ### SSH-туннель Перенаправление порта Gateway через SSH: - Простой, безопасный, без изменений конфигурации - Работает с любой машиной, поддерживающей SSH - Поддерживает полный протокол WebSocket и Control UI ### Правила безопасности - Комбинация **Loopback + SSH/Tailscale**, наиболее безопасная - Привязка вне loopback требует конфигурации токена аутентификации - Доступна привязка к TLS-отпечатку для дополнительной безопасности - Управление браузером отключено для удалённых подключений по умолчанию ## Мониторинг работоспособности ### Эндпоинт проверки работоспособности HTTP-эндпоинт `/health` возвращает: - Статус Gateway - Живость RPC - Работоспособность каждого канала (подключён, статус аутентификации, количество аккаунтов) - Готовность браузера - Активные агенты и подключённые узлы - Время работы ### Пробы - **Живость RPC**, подключение к WebSocket + тест эхо - **Работоспособность канала**, проверка аутентификации + API-ping для каждого канала - **Готовность браузера**, проверка порта, проверка процесса - **Подключение узла**, метка времени последнего heartbeat ## Обнаружение ### Bonjour/mDNS При привязке к LAN Gateway объявляет о себе через multicast DNS: - Тип сервиса: `_neotask-gw._tcp` - Включает порт, транспорт, статус TLS и информацию Tailscale DNS - Компаньон-приложения обнаруживают Gateway автоматически ### Широкозональное обнаружение Обнаруживайте шлюзы в вашей сети с настраиваемыми таймаутами. Поддерживает как локальный Bonjour, так и обнаружение через Tailscale DNS. ## Несколько шлюзов Вы можете запускать несколько экземпляров Gateway на одной машине с использованием профилей: - Каждый профиль имеет отдельную конфигурацию, рабочее пространство, сессии и состояние - Разные порты для каждого Gateway - Полезно для изоляции (личное vs рабочее) или тестирования ## Диагностика ### Doctor (Диагностический инструмент) Встроенный диагностический инструмент проверяет: - Валидность конфигурации - Права доступа к файлам - Подключение каналов - Статус аутентификации модели - Совместимость версии Node.js - Распространённые неправильные настройки Он может автоматически исправить многие проблемы, если ему дать разрешение. ### Логирование Логи Gateway записываются в ежедневные JSONL-файлы: - Отслеживание использования токенов за каждое завершение - Логи событий каналов - Логирование ошибок со структурированным контекстом - Настраиваемые уровни логирования