Автообновление

Обзор

TaigaClaw умеет автоматически обновляться. Механизм обеспечивает:

  • Целостность — SHA256 хеш бинарника
  • Подлинность — Ed25519 подпись манифеста
  • Атомарность — безопасная замена запущенного бинарника
  • Рестарт — supervisor-процесс автоматически перезапускает приложение

Архитектура

TaigaClaw (worker)
  └── updater.Service
        ├── Проверка манифеста (GET /stable.json)
        ├── Верификация подписи (Ed25519)
        ├── Скачивание бинарника
        ├── Проверка SHA256
        ├── selfupdate.Apply() — атомарная замена
        └── Exit code 11 → supervisor → restart

Манифест обновлений

Манифест — JSON-файл на сервере https://updates.taigaclaw.app/:

{
  "version": "0.2.0",
  "channel": "stable",
  "released_at": "2026-05-15T10:00:00Z",
  "artifacts": {
    "darwin-arm64": {
      "url": "https://updates.taigaclaw.app/binaries/v0.2.0/taigaclaw-darwin-arm64",
      "sha256": "abc123..."
    },
    "linux-amd64": {
      "url": "https://updates.taigaclaw.app/binaries/v0.2.0/taigaclaw-linux-amd64",
      "sha256": "def456..."
    }
  }
}

Рядом с манифестом — файл подписи stable.sig (Ed25519).

Каналы обновлений

Канал Описание
stable Стабильные релизы (по умолчанию)
beta Предрелизные версии для тестирования

Настройка

update:
  channel: stable
  check_interval: 1h
  auto_download: false  # true — скачивать автоматически

Процесс обновления

  1. Проверка — периодический запрос манифеста
  2. Уведомление — WebUI показывает «Доступна vX.Y.Z»
  3. Подтверждение — пользователь нажимает «Обновить» (если auto_download: false)
  4. Скачивание — загрузка бинарника для текущей платформы
  5. Верификация — проверка SHA256 хеша
  6. Заменаselfupdate.Apply() атомарно подменяет бинарник
  7. Рестарт — worker завершается с кодом 11, supervisor перезапускает

Supervisor

Supervisor — тонкий родительский процесс, который:

  • Запускает worker и перенаправляет stdout/stderr
  • Отслеживает код завершения
  • При коде 11 — перезапускает worker (новый бинарник уже на месте)
  • При других кодах — перезапускает с backoff

Поддерживаемые платформы

OS Архитектуры
macOS amd64, arm64 (Apple Silicon)
Linux amd64, arm64
Windows amd64, arm64