Аутентификация и команды
CherryPi использует одну таблицу идентичностей для людей и агентов. Имя пользователя глобально уникально, а все правила доступа ссылаются на id актора — поэтому переименование пользователя или агента не ломает владение и историю.
Первый запуск
На пустой установке agency создаёт первого администратора из CHERRYPI_ADMIN_USERNAME и CHERRYPI_ADMIN_PASSWORD. Если пароль не задан, он генерируется и печатается один раз в process-лог.
После входа смените пароль и создайте реальные аккаунты. Администратор из переменных окружения — bootstrap, а не постоянный общий логин.
Если нужна открытая регистрация в приватной сети, задайте CHERRYPI_INSECURE_FIRST_REGISTERED_USER_BECOMES_ADMIN=true. Не включайте это на публичной установке.
Способы входа
Настраиваются в Settings → Authentication.
| Способ | Как работает |
|---|---|
| Пароль | Имя или подтверждённый e-mail + пароль. Можно отключить для участников, оставив администраторам. |
| Magic link | Одноразовая ссылка в письме. |
| OIDC / OAuth2 | Универсальный OIDC discovery или универсальный OAuth2. Можно несколько провайдеров. Только по приглашению, если у провайдера не включено авто-создание аккаунтов. |
| LDAP | Несколько каталогов. Только по приглашению, если у каталога не включено авто-создание аккаунтов. |
| TOTP | Двухфакторная политика по способам входа с одноразовыми recovery-кодами. |
Вход по паролю включён по умолчанию. Если отключаете его, оставьте хотя бы один рабочий провайдер или администратора с паролем.
Авто-создание аккаунтов
По умолчанию федеративный вход работает только по приглашениям. У каждого OIDC/OAuth2- или LDAP-провайдера можно включить Create users on first sign-in в Settings → Authentication. Тогда первый успешный вход создаёт аккаунт member и привязывает к нему идентичность провайдера:
- имя берётся из провайдера (
preferred_username, локальная часть e-mail или отображаемое имя), приводится к нижнему регистру и нормализуется до букв, цифр,.,_и-; - если имя занято, добавляется суффикс
-2,-3, … — существующий аккаунт никогда не захватывается, поэтому провайдер не может присвоить локальный аккаунт; - отображаемое имя и e-mail копируются; адрес помечается подтверждённым, только если провайдер вернул
email_verified; - команды и проекты автоматически не выдаются.
Оставьте переключатель выключенным, чтобы сначала приглашать людей, а они привязывали идентичность в Account → Linked accounts.
SMTP
Magic link, приглашения и сброс пароля требуют SMTP. Настройте сервер, порт, отправителя и TLS в Settings → Authentication → SMTP. Без SMTP интерфейс показывает ссылку, которую можно скопировать.
Не включайте expose magic links в production
CHERRYPI_AUTH_EXPOSE_MAGIC_LINKS=true возвращает ссылки в ответах API для демо без SMTP. Это обходит проверку владения e-mail.
Personal access tokens
Браузер аутентифицируется HTTP-only cookie сессии. Всё остальное — SDK, скрипты, инструменты агента — использует personal access token с префиксом pat_.
Создавайте и отзывайте токены в Account → Personal access tokens. У токена есть описание и срок действия. Относитесь к нему как к паролю: он даёт тот же доступ, что и аккаунт.
У агентов свои токены и нет username/password fallback. Регистрация агента возвращает PAT один раз; выпускайте и отзывайте токены в Settings → Security → Personal access tokens на странице агента. Передайте токен через --token или CHERRYPI_AGENT_TOKEN; агент кэширует его в $CHERRYPI_DIR/agent.token (режим 0600). Токен, который agency отвергла, удаляется при старте, чтобы оператор мог выдать новый.
Роли
| Актор | Роли | Значение |
|---|---|---|
| Пользователь | admin, member | Администраторы управляют пользователями, настройками и всеми задачами; участники работают в своих проектах и командах. |
| Агент | member, admin | Admin-агент — наблюдатель только на чтение: видит логи парка и метаданные, без прав человека-администратора. Роль меняет только человек-администратор. |
| Участник проекта | owner, member, viewer | Эффективная роль — сильнейшая из прямого гранта и лучшей роли среди команд. |
Роли проекта решают, кто создаёт, пишет промпты, редактирует или только смотрит задачи. Агенту тоже нужна роль в проекте, чтобы получить его задачи.
Команды
Команда объединяет пользователей и агентов. Это основной способ доступа:
- привязать команду к проекту с ролью;
- поделиться агентами с командой (владеть агентом может любой актор);
- пригласить людей в команду;
- позволить команде владеть проектной работой.
Приглашения в команду и проектные приглашения от команды требуют одобрения владельца. Запросы попадают в инбокс agency.
Владение агентами
У каждого агента один или несколько владельцев. Владельцы могут:
- редактировать имя, аватар, описание и значения по умолчанию;
- одобрять приглашения в команды;
- добавлять и убирать других владельцев;
- открывать root-терминал агента.
Создавая агента, вы становитесь его первым владельцем. Администраторы всегда управляют парком, но владение — обычный способ делегирования.
Сессии и сроки
Браузерные сессии, magic link, подтверждения и personal access tokens имеют настраиваемые сроки в Settings → Authentication. Agency хэширует секреты сессий и токенов; plaintext показывается один раз.
