Files
obsidian-vault/work/plans/mattermost-migration.md

6.2 KiB
Raw Permalink Blame History

tags, created, status
tags created status
mattermost
migration
plan
personal-os
2026-05-14 in-progress

Plan: Mattermost Migration

Контекст: Корпоративная политика требует перехода на corporate-hosted Mattermost. Zulip остаётся (апгрейд отменяется), но работа переезжает в MM. Personal/family/journal остаются в Discord и Zulip соответственно.

Источник: Zulip тред «✔ Zulip migration »


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

Задача для 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

# Mattermost
MATTERMOST_URL=https://mattermost.company.com
MATTERMOST_EAGLE_TOKEN=<eagle-bot token>
MATTERMOST_EXECUTOR_TOKEN=<executor-bot token>
MATTERMOST_DAX_TOKEN=<dax token>
MATTERMOST_TEAM_ID=<team id>
# Channel IDs (узнать после настройки каналов)
MM_CHANNEL_GENERAL=<id>
MM_CHANNEL_DAILY_BRIEF=<id>
MM_CHANNEL_INBOX=<id>
MM_CHANNEL_EXECUTOR_QUEUE=<id>

3. Scheduled delivery (Eagle ← scripts)

Для брифов и inbox triage — чистые скрипты, никакого daemon-а:

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=<eagle 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 (мигрировать или нет)