--- tags: - mattermost - migration - plan - personal-os created: '2026-05-14' status: in-progress --- # Plan: Mattermost Migration **Контекст**: Корпоративная политика требует перехода на corporate-hosted Mattermost. Zulip остаётся (апгрейд отменяется), но работа переезжает в MM. Personal/family/journal остаются в Discord и Zulip соответственно. **Источник**: [Zulip тред «✔ Zulip migration ⭐»](https://zulip.qentra.top/#narrow/stream/4-master/topic/.E2.9C.94.20Zulip.20migration.20.E2.AD.90/near/15190) --- ## Scope | Пространство | Платформа | |---|---| | **Work** (Personal OS) | **Mattermost** | | Personal | Discord (без изменений) | | Family, journal | Zulip / Discord (без изменений) | --- ## Архитектура ботов Проблема: сейчас executor-воркеры постят от имени Eagle → смешивает интерактив с автономной работой. Решение: отдельные bot-аккаунты с разными identity. | Bot | Роль | Аватар | |---|---|---| | **Орёл** (Eagle) 🦅 | Персональный ассистент, интерактив, планирование | 🦅 | | **Executor** ⚡ | Автономные воркеры, code fixes, PR-отчёты | ⚡ | | **Dax** | Scheduled: daily brief, inbox triage, weekly review (переиспользуем корпоративный бот) | — | Eagle и Executor = новые MM bot accounts. Dax = переиспользуем существующий. --- ## Структура каналов (Categories → Channels) ``` 📁 Personal OS # general ← Eagle интерактив # daily-brief ← Dax # inbox ← Dax (inbox triage) # focus ← статус фокуса 📁 Executor # queue ← задачи в очереди, статусы # worker-1 ← лог активного воркера 1 # worker-2 ← лог активного воркера 2 ``` --- ## Задачи ### 🔴 IT Ops (блокирующая) **Asana задача**: [#1214799615211686](https://app.asana.com/0/0/1214799615211686) **Задача для IT/Admin**: создать bot accounts в корпоративном MM. Нужные боты: - `eagle-bot` — персональный ассистент (Eagle / Орёл) - `executor-bot` — автономные воркеры - `brief-bot` — scheduled доставка брифов. **Кандидат на замену: Dax bot** (корпоративный бот, уже постит GitHub-ивенты → токен вероятно доступен). Если переиспользуем Dax — `brief-bot` создавать не нужно, брифы будут приходить от Dax. **Для каждого бота нужны**: - Bot Account (не incoming webhook — нужен постоянный токен и avatar) - Токен → передать Алексу для `~/.hermes/.env` - Права: читать/писать в каналах Personal OS и Executor **Как проверить текущий доступ**: - В корпоративном MM: **☰ Main Menu → Integrations** - Если пункт есть → можно создавать самому - Если нет → запросить у MM Admin --- ### Технический план (после получения токенов) **1. Выбор архитектуры** | Подход | Когда использовать | |---|---| | Hermes gateway (MM адаптер) | Если нужен интерактивный Eagle (отвечает на сообщения в MM real-time) | | cron/scripts/prompt files | Только scheduled delivery (brief, inbox, executor-отчёты) | Hermes уже имеет `gateway/platforms/mattermost.py` — WebSocket listener + REST API v4. Config: `MATTERMOST_URL`, `MATTERMOST_TOKEN`, `MATTERMOST_HOME_CHANNEL`. **2. Конфигурация `.env`** ```bash # Mattermost MATTERMOST_URL=https://mattermost.company.com MATTERMOST_EAGLE_TOKEN= MATTERMOST_EXECUTOR_TOKEN= MATTERMOST_DAX_TOKEN= MATTERMOST_TEAM_ID= # Channel IDs (узнать после настройки каналов) MM_CHANNEL_GENERAL= MM_CHANNEL_DAILY_BRIEF= MM_CHANNEL_INBOX= MM_CHANNEL_EXECUTOR_QUEUE= ``` **3. Scheduled delivery (Eagle ← scripts)** Для брифов и inbox triage — чистые скрипты, никакого daemon-а: ```bash hermes --quiet --once "$(cat ~/agent/prompts/daily-brief.md)" \ | curl -s -X POST "$MATTERMOST_URL/api/v4/posts" \ -H "Authorization: Bearer $MATTERMOST_BRIEF_TOKEN" \ -d "{\"channel_id\": \"$MM_CHANNEL_DAILY_BRIEF\", \"message\": \"...\"}" ``` **4. Интерактивный Eagle** Опция A: `hermes gateway start` с MM адаптером (+ `MATTERMOST_TOKEN=`) Опция B: ~200 строк `aiohttp` WebSocket демон (самодостаточно, без Hermes) **5. История Zulip (опционально)** Прямого инструмента Zulip→MM нет. Варианты: - Написать конвертер: Zulip JSON export → MM bulk import JSONL - Кодировать Topics как префикс сообщения: `**[topic]** текст` - Или просто начать с чистого листа (если история некритична) --- ## Статус - [ ] **IT Ops**: проверить доступ к MM Integrations → запросить создание ботов - [ ] Получить токены для eagle-bot, executor-bot, brief-bot - [ ] Создать категории + каналы в MM - [ ] Настроить `.env` с токенами - [ ] Выбрать архитектуру (Hermes vs custom scripts) - [ ] Подключить scheduled delivery (brief, inbox, executor) - [ ] Подключить интерактивного Eagle - [ ] Решить вопрос с историей Zulip (мигрировать или нет)