Автообновление
Обзор
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 — скачивать автоматически
Процесс обновления
- Проверка — периодический запрос манифеста
- Уведомление — WebUI показывает «Доступна vX.Y.Z»
- Подтверждение — пользователь нажимает «Обновить» (если auto_download: false)
- Скачивание — загрузка бинарника для текущей платформы
- Верификация — проверка SHA256 хеша
- Замена —
selfupdate.Apply()атомарно подменяет бинарник - Рестарт — worker завершается с кодом 11, supervisor перезапускает
Supervisor
Supervisor — тонкий родительский процесс, который:
- Запускает worker и перенаправляет stdout/stderr
- Отслеживает код завершения
- При коде 11 — перезапускает worker (новый бинарник уже на месте)
- При других кодах — перезапускает с backoff
Поддерживаемые платформы
| OS | Архитектуры |
|---|---|
| macOS | amd64, arm64 (Apple Silicon) |
| Linux | amd64, arm64 |
| Windows | amd64, arm64 |