# Gateway ## Що таке Gateway? Gateway, це серце Neotask, єдина довготривала служба, яка керує всіма сесіями агентів, каналами обміну повідомленнями, виконанням інструментів та підключеннями пристроїв. Все проходить через Gateway. Це WebSocket-сервер, який приймає підключення від клієнтів (настільний застосунок, мобільні застосунки, веб-панель) і керує повним життєвим циклом AI-помічника. ## Архітектура ### Компоненти - **WebSocket-сервер**, Приймає клієнтські підключення (порт за замовчуванням 18789) - **HTTP-сервер**, Обслуговує інтерфейс керування, хост полотна та кінцеві точки перевірки стану - **Адаптери каналів**, Підтримують підключення до платформ обміну повідомленнями (WhatsApp, Telegram, Discord тощо) - **Менеджер сесій**, Зберігає та керує станом розмов агентів - **Планувальник Cron**, Виконує заплановані завдання та пробудження пульсу - **Середовище виконання плагінів**, Завантажує та керує життєвим циклом плагінів - **Служба браузера**, Керує екземплярами Chromium для веб-автоматизації ### Режими прив'язки | Режим | Опис | |------|-------------| | **Зворотна петля** | За замовчуванням. Доступний лише з localhost (127.0.0.1) | | **Локальна мережа** | Доступний у вашій локальній мережі. Автоматичне виявлення через Bonjour/mDNS | | **Tailnet** | Доступний через VPN Tailscale з MagicDNS | | **Власний** | Прив'язка до конкретної адреси | ### Аутентифікація | Метод | Опис | |--------|-------------| | **Токен** | Токен авторизації WebSocket (UUID або власний рядок) | | **Пароль** | Аутентифікація на основі пароля (хешовано за допомогою bcrypt) | | **Довірений проксі** | Для зворотних проксі із заголовками попередньої аутентифікації | | **Локальна довіра** | Підключення через зворотну петлю автоматично затверджуються | ## Конфігурація Gateway налаштовується через `neotask.json` (формат JSON5). Ключові розділи: | Розділ | Керує | |---------|----------| | `agents` | Список агентів, параметри за замовчуванням, робочі простори | | `gateway` | Порт, режим прив'язки, аутентифікація, поведінка перезавантаження | | `channels` | Конфігурація кожного каналу та облікові дані | | `tools` | Дозволи інструментів, профілі, безпека | | `plugins` | Завантаження плагінів, увімкнення, конфігурація кожного плагіна | | `models` | Аутентифікація провайдера, резервні варіанти, налаштування провайдера | | `skills` | Директорії навичок, конфігурація кожної навички | | `browser` | Профілі браузера, порти, режим без голови | | `cron` | Конфігурація планувальника | | `session` | Правила скидання, порогові значення ущільнення | | `messages` | Налаштування синтезу мовлення, політики медіа | | `memory` | Конфігурація індексування пам'яті | | `security` | Ізоляція, підвищений режим, затвердження | ### Гаряче перезавантаження Зміни конфігурації можуть застосовуватися без перезапуску: | Режим | Поведінка | |------|----------| | **Гібридний** (за замовчуванням) | Гаряче застосовує безпечні зміни, перезапускає для інших | | **Гарячий** | Застосовує лише безпечні для гарячого режиму зміни, ігнорує інші | | **Перезапуск** | Перезапускає при будь-яких змінах, що вимагають перезавантаження | | **Вимкнено** | Без автоматичного перезавантаження | ## Віддалений доступ ### Tailscale (Рекомендовано) Tailscale забезпечує безпечний, не потребуючий конфігурації віддалений доступ: - Прив'яжіть Gateway до вашої Tailnet - Доступ з будь-якого пристрою в тій самій мережі Tailscale - Автоматичний DNS через MagicDNS - Tailscale Serve може надавати доступ до панелі з HTTPS ### SSH-тунель Перенаправте порт Gateway через SSH: - Простий, безпечний, не потребує змін конфігурації - Працює з будь-якою машиною, що підтримує SSH - Підтримує повний протокол WebSocket та інтерфейс керування ### Правила безпеки - **Зворотна петля + SSH/Tailscale**, найбезпечніша комбінація - Прив'язка до не-loopback-адреси вимагає налаштування токена аутентифікації - Доступне закріплення відбитків TLS для додаткової безпеки - Керування браузером за замовчуванням вимкнено для віддалених підключень ## Моніторинг стану ### Кінцева точка перевірки стану HTTP-кінцева точка `/health` повертає: - Статус Gateway - Активність RPC - Стан кожного каналу (підключено, статус аутентифікації, кількість акаунтів) - Готовність браузера - Активні агенти та підключені вузли - Час роботи ### Зонди - **Активність RPC**, Тест підключення WebSocket + ехо-тест - **Стан каналу**, Перевірка аутентифікації + пінг API для кожного каналу - **Готовність браузера**, Перевірка порту, перевірка процесу - **Підключення вузлів**, Мітка часу останнього пульсу ## Виявлення ### Bonjour/mDNS При прив'язці до локальної мережі Gateway оголошує себе через мультикастний DNS: - Тип служби: `_neotask-gw._tcp` - Включає порт, транспорт, статус TLS та інформацію DNS Tailscale - Додатки-компаньйони автоматично виявляють Gateway ### Виявлення у широкій мережі Виявляйте шлюзи у вашій мережі з конфігурованими таймаутами. Підтримує виявлення через локальний Bonjour та DNS Tailscale. ## Кілька Gateway Ви можете запустити кілька екземплярів Gateway на одній машині за допомогою профілів: - Кожен профіль має окрему конфігурацію, робочий простір, сесії та стан - Різні порти для кожного Gateway - Корисно для ізоляції (особистий та робочий) або тестування ## Діагностика ### Лікар (Doctor) Вбудований інструмент діагностики перевіряє: - Валідність конфігурації - Дозволи на файли - Підключення каналів - Статус аутентифікації моделі - Сумісність версії Node.js - Поширені неправильні конфігурації При наданні дозволу він може автоматично усунути багато проблем. ### Ведення журналу Журнали Gateway записуються в щоденні файли JSONL: - Відстеження використання токенів для кожного завершення - Журнали подій каналів - Журналювання помилок зі структурованим контекстом - Конфігуровані рівні журналювання