Bitwarden Secrets Manager
Извлекайте ключи API из Bitwarden Secrets Manager при запуске процесса вместо хранения их в открытом виде внутри ~/.vibeos/.env. Один бутстрап-секрет (токен доступа машинной учётной записи) заменяет N ключей для каждого провайдера, а ротация учётных данных сводится к одному изменению в веб-приложении Bitwarden.
Как это работает
- Вы создаёте машинную учётную запись в Bitwarden Secrets Manager, даёте ей доступ на чтение к проекту и генерируете токен доступа.
- VibeOS сохраняет этот единственный токен в
~/.vibeos/.envкакBWS_ACCESS_TOKEN. - Каждый раз при запуске
vibeos(или шлюза, или cron-задачи), после загрузки~/.vibeos/.env, VibeOS вызываетbws secret list <project_id> и устанавливает полученные ключи вos.environ`. - По умолчанию VibeOS переопределяет значения, уже присутствующие в окружении, поэтому Bitwarden является источником истины — поверните ключ один раз в веб-приложении, и каждый процесс VibeOS подхватит его при следующем запуске. Установите
override_existing: falseв конфиге, если хотите, чтобы.envимел приоритет.
Бинарный файл bws автоматически загружается в ~/.vibeos/bin/ при первом использовании — никаких apt, brew или sudo.
Зачем нужны машинные учётные записи (и почему нет запроса 2FA)
Bitwarden Secrets Manager спроектирован для неинтерактивных рабочих нагрузок: машинные учётные записи не могут быть защищены 2FA, потому что в цикле нет человека. Токен доступа и есть учётные данные. Любой, кто им владеет, может прочитать все секреты, к которым имеет доступ машинная учётная запись, поэтому относитесь к нему как к высокоценному bearer-токену — храните в .env (не в config.yaml), и отзывайте + перегенерируйте из веб-приложения Bitwarden в случае утечки.
Вы настраиваете машинную учётную запись в веб-приложении, где действует ваша обычная 2FA. После этого токен работает автономно.
Настройка
1. Создайте машинную учётную запись и токен доступа
В веб-приложении Bitwarden (или vault.bitwarden.eu для аккаунтов из ЕС):
- Переключитесь на Secrets Manager через переключатель продуктов.
- Создайте или выберите Проект (например, «Ключи VibeOS»).
- Добавьте ключи ваших провайдеров как секреты. Имя секрета становится именем переменной окружения — используйте
OPENROUTER_API_KEY,ANTHROPIC_API_KEYи т.д. - Машинные учётные записи → Новая машинная учётная запись → My VibeOS machine → вкладка Проекты → предоставьте доступ на чтение к вашему проекту.
- Вкладка Токены доступа → Создать токен доступа → Никогда (или выберите дату) → скопируйте токен (начинается с
0.). Bitwarden не сможет показать его снова — сохраните копию.
Secrets Manager входит в бесплатный тариф Bitwarden с ограничениями; платный план не требуется, чтобы попробовать эту функцию.
2. Запустите мастер
vibeos secrets bitwarden setup
Он выполнит следующее:
- Загрузит и проверит
bws v2.0.0в~/.vibeos/bin/bws. - Запросит токен доступа (ввод скрыт). Сохраняется в
~/.vibeos/.envкакBWS_ACCESS_TOKEN. - Спросит, к какому региону Bitwarden относится ваша машинная учётная запись — US Cloud, EU Cloud или самостоятельный хостинг / собственный URL. Сохраняется в
config.yamlкакsecrets.bitwarden.server_urlи передаётся вbwsкакBWS_SERVER_URL. - Покажет проекты, которые видит машинная учётная запись; выберите один. Сохраняется в
config.yamlкакsecrets.bitwarden.project_id. - Выполнит тестовую загрузку секретов проекта и покажет, какие переменные окружения будут разрешены.
- Установит
secrets.bitwarden.enabled: true.
Неинтерактивная настройка также поддерживается через флаги:
vibeos secrets bitwarden setup \
--access-token "$BWS_ACCESS_TOKEN" \
--server-url https://vault.bitwarden.eu \
--project-id <project-uuid>
3. Подтвердите
vibeos secrets bitwarden status
Теперь каждый запуск vibeos будет получать свежие секреты при старте. Вы увидите однострочную сводку в stderr при первом применении секретов в процессе.
CLI
| Команда | Что делает |
|---|---|
vibeos secrets bitwarden setup | Интерактивный мастер (установка бинарного файла, запрос токена, выбор проекта, тестовая загрузка) |
vibeos secrets bitwarden status | Показывает конфигурацию + версию бинарного файла + наличие токена |
vibeos secrets bitwarden sync | Пробный запуск: загрузить секреты сейчас и показать, что будет применено |
vibeos secrets bitwarden sync --apply | Загрузить и экспортировать в окружение текущей оболочки |
vibeos secrets bitwarden install | Просто загрузить фиксированную версию bws (аутентификация не требуется) |
vibeos secrets bitwarden disable | Установить enabled: false; токен и ID проекта остаются на месте |
Конфигурация
Значения по умолчанию в ~/.vibeos/config.yaml:
secrets:
bitwarden:
enabled: false
access_token_env: BWS_ACCESS_TOKEN
project_id: ""
server_url: ""
cache_ttl_seconds: 300
override_existing: true
auto_install: true
| Ключ | По умолчанию | Что делает |
|---|---|---|
enabled | false | Главный выключатель. Если false, Bitwarden никогда не опрашивается. |
access_token_env | BWS_ACCESS_TOKEN | Имя переменной окружения, содержащей бутстрап-токен. Измените, если BWS_ACCESS_TOKEN уже используется для чего-то другого. |
project_id | "" | UUID проекта для синхронизации. |
server_url | "" | Регион Bitwarden или эндпоинт самостоятельного хостинга. Пусто = значение по умолчанию bws (US Cloud, https://vault.bitwarden.com). Установите https://vault.bitwarden.eu для EU Cloud или свой URL для самостоятельного хостинга. Передаётся в подпроцесс bws как BWS_SERVER_URL. |
cache_ttl_seconds | 300 | Как долго повторно используется результат загрузки в рамках процесса. Установите 0 для отключения кэширования. Кэш действует в рамках процесса; новые запуски vibeos начинают с чистого листа. |
override_existing | true | Если true, значения из Bitwarden перезаписывают всё, что уже есть в окружении (чтобы ротация в веб-приложении действительно вступала в силу). Установите false, если хотите, чтобы .env / экспорт из оболочки имели локальный приоритет. |
auto_install | true | Если true, bws автоматически загружается в ~/.vibeos/bin/ при первом использовании. |
Режимы отказа
Bitwarden никогда не блокирует запуск VibeOS. Если что-то пошло не так, вы увидите однострочное предупреждение в stderr, и VibeOS продолжит работу с теми учётными данными, которые уже были в .env:
| Симптом | Причина | Исправление |
|---|---|---|
BWS_ACCESS_TOKEN is not set | Включено в конфиге, но токен удалён из .env | Повторно запустите vibeos secrets bitwarden setup |
bws exited 1: invalid access token | Токен отозван или неверен | Сгенерируйте новый токен, повторно запустите настройку |
[400 Bad Request] {"error":"invalid_client"} | Токен относится к другому региону Bitwarden, чем тот, который вызывает bws (например, токен EU попадает на эндпоинт идентификации US) | Повторно запустите настройку и выберите правильный регион, или установите secrets.bitwarden.server_url в https://vault.bitwarden.eu (или ваш URL самостоятельного хостинга) |
bws timed out | Сеть заблокирована или API Bitwarden медленный | Проверьте связь с api.bitwarden.com (или вашим server_url) |
bws binary not available | auto_install: false и bws нет в PATH | Установите вручную с github.com/bitwarden/sdk-sm/releases или снова включите auto_install |
Checksum mismatch | Загрузка повреждена или изменена | Повторите попытку; если проблема сохраняется, создайте issue |
Замечания по безопасности
- Бутстрап-токен (
BWS_ACCESS_TOKEN) сам по себе чувствителен — любой, кто им владеет, может прочитать все секреты, к которым имеет доступ машинная учётная запись. Относитесь к нему так же, как к любому другому API-ключу. - VibeOS откажется позволять Bitwarden перезаписывать сам бутстрап-токен, даже при
override_existing: true. Если вы хранитеBWS_ACCESS_TOKENкак секрет внутри проекта, он молча пропускается при применении. - Загрузка бинарного файла
bwsпроверяется по опубликованной контрольной сумме SHA-256 из того же релиза на GitHub. Несовпадение прерывает установку. - Фиксированная версия (
bws v2.0.0на момент написания) обновляется через PR в этом репозитории — VibeOS не обновляетbwsдо «последней» версии автоматически, поскольку форма релизов может меняться.
Когда НЕ следует это использовать
- Одномашинные личные настройки, где
~/.vibeos/.envвполне подходит. Вы меняете одни учётные данные на другие и добавляете сетевую зависимость при запуске. - Изолированные среды, которые не могут подключиться к
api.bitwarden.com. - CI/CD, где уже настроен существующий механизм внедрения секретов (секреты GitHub Actions, Vault и т.д.) — выберите один путь, а не два.
Хороший сценарий для этого — парки из нескольких машин, общие dev-боксы, шлюзовые VPS или любые настройки, где требуется централизованная ротация и отзыв доступа на нескольких установках VibeOS.