Skip to content

Delegate ​

Назначение ​

Управление несколькими серверами OpenCode через один чат-ориентированный API. Подключается к уже запущенному opencode serve или сам устанавливает, запускает и туннелирует OpenCode на удалённом хосте по SSH.

Построен по тем же конвенциям Clean Architecture, что и ai-router: service-common для конфигурации, логирования, HTTP-lifecycle, JWT и миграций.

Порты ​

  • HTTP: 8117 (desktop-режим, по умолчанию 127.0.0.1:8117)
  • БД: SQLite ./data/delegate.db (desktop) / PostgreSQL (platform)

Статус развёртывания

В prod-каталог services.yaml Delegate пока не входит: сервис работает автономно (desktop-режим) или в platform-режиме с PostgreSQL.

Ключевые возможности ​

  • Несколько одновременных подключений OpenCode
  • Чат-сессии, асинхронные промпты, SSE-события, abort и ответы на permission-запросы
  • Установка/запуск/стоп/рестарт OpenCode на удалённом хосте по SSH с локальным port forwarding
  • Desktop-режим (SQLite) и platform-режим (PostgreSQL, JWT_SECRET, ENCRYPTION_KEY)
  • Опциональная публикация событий в NATS
  • Swagger: /swagger/index.html

Основные эндпоинты ​

МетодПутьНазначение
GET/POST/api/v1/serversСписок / регистрация серверов
GET/PATCH/DELETE/api/v1/servers/:idКарточка сервера
POST/api/v1/servers/:id/install|start|stop|restartУправление OpenCode на хосте
GET/api/v1/servers/:id/health|projects|agentsСтатус и сущности OpenCode
GET/POST/api/v1/chatsЧат-сессии
GET/POST/api/v1/chats/:id/messagesСообщения
GET/api/v1/chats/:id/eventsSSE-события
POST/api/v1/chats/:id/abortПрерывание хода
POST/api/v1/chats/:id/permissions/:permissionIDОтвет на permission-запрос

Конфигурация ​

ПеременнаяПо умолчаниюОписание
PORT8117Порт сервера
RUNTIME_MODEdesktopdesktop (SQLite) или platform (PostgreSQL)
API_TOKEN—Защита локальных API-маршрутов
JWT_SECRET—Platform-режим
ENCRYPTION_KEY—Platform-режим
SSH_KNOWN_HOSTS~/.ssh/known_hostsИзвестные host-ключи SSH

Host-ключи SSH должны уже быть в SSH_KNOWN_HOSTS — Delegate никогда не отключает проверку host-key.